2016-08-17 12 views
1

からの変換は、私は、一意の識別子の文字列から変換するときSqlDataReaderのエラー、文字

の変換が失敗したエラーを取得しています。

と私も日付の変換がないので、私はここでかなり失われています。

私はパラメータ化されたクエリを使用して、datarowviewに由来する2つの値を追加しています。この場合、私はデバッグし、日付の値をチェックすると、私はこの形式でそれを得る{8/17/2016 9:08:44 PM}

string query = @"SELECT TOP 1 
        SensorValue, 
        ActivityDateTime, 
        (Select TimeAlert from Vehicle_config 
         where VehicleID = '@guid') as TimeAlert, 
        (Select DistanceAlert from Vehicle_config 
         where VehicleID = '@guid') as DistanceAlert, 
        (Select TimeInterval from Vehicle_config 
         where VehicleID = '@guid') as TimeInterval, 
        (Select DistanceInterval from Vehicle_config 
         where VehicleID = '@guid') as DistanceInterval, 
        (Select AlertFlag from Vehicle_config 
         where VehicleID = '@guid') as AlertFlag, 
        (Select Litros from Vehicle_config 
         where VehicleID = '@guid') as Litros 
       FROM 
        navman_Fuel_activity 
       WHERE 
        ActivityDateTime < DATEADD(MI, -5, @date) 
        AND VehicleId = '@guid' 
       ORDER BY ActivityDateTime DESC;"; 

using (SqlConnection sqlConn = new SqlConnection(connectionString)) 
using (SqlCommand cmd = new SqlCommand(query, sqlConn)) 
{ 
    cmd.Parameters.AddWithValue("date", (DateTime)row["ActivityDateTime"]); 
    cmd.Parameters.AddWithValue("guid",(Guid)row["VehicleID"]); 

    sqlConn.Open(); 

    using (var reader = cmd.ExecuteReader()) 
    { 
     if (reader.Read()) // here is where I get the error 
+2

あなたの問題は、ここでは 'cmd.Parameters.AddWithValue( "GUID"、(GUID)行[ "VehicleID"])である;' – techspider

+1

はあなたが*** ***有効なGUIDを持っていることを確認してください'row [" VehicleID "]'の各行に – techspider

答えて

1

私は私はあなたがこれを行うために必要があると思う障害が

cmd.Parameters.AddWithValue("guid",(Guid)row["VehicleID"]); 

この回線で起こっていると考えています代わりに、キャストの

cmd.Parameters.AddWithValue("guid",new Guid(row["VehicleID"]));