2011-01-13 2 views
2

Я получаю синтаксическую ошибку в этом SQL и не могу понять, почему?Ошибка MS-Access: SQL UPDATE, но почему?

В SQL UPDATE возвращает это на ошибку:

UPDATE Tankstationer 
SET Long='12.5308724', Lat='55.6788735' 
WHERE Id = 2; 

Вот мой код:

foreach (var row in reader) 
{ 
    var id = reader.GetInt32(0); 
    var adress = reader.GetString(1); 
    var zip = reader.GetDouble(2); 
    var city = reader.GetString(3); 
    var adressToParse = adress + " " + zip + " " + city; 

    GMapGeocoder.Containers.Results result = Util.Geocode(adressToParse, key); 
    foreach (GMapGeocoder.Containers.USAddress USAdress in result.Addresses) 
    { 
     var google_long = convertNumberToDottedGoogleMapsValid(USAdress.Coordinates.Longitude); 
     var google_lat = convertNumberToDottedGoogleMapsValid(USAdress.Coordinates.Latitude); 
     Message.Text = "Lattitude: " + google_long + System.Environment.NewLine; 
     Message.Text = "Longitude: " + google_lat + System.Environment.NewLine; 
     string updatesql = "UPDATE Tankstationer SET Long='" +google_long+ "', Lat='" +google_lat+ "' WHERE Id = " +id+""; 
     OleDbCommand update = new OleDbCommand(); 
     update.CommandText = updatesql; 
     update.Connection = conn; 
     reader = update.ExecuteReader(); 
     Message.Text = "Done"; 
    } 
} 
+1

Какое сообщение об ошибке возвращается? –

+1

Почему вы используете OleDB с сервером MSSQL? – cjk

+0

«В вашем предложении UPDATE есть синтаксическая ошибка» – nickycdk

ответ

0

«Длинный» - это зарезервированное слово в Access. Если вы не можете изменить схему, чтобы позвонить в эту колонку, добавьте ее в скобки:

UPDATE Tankstationer 
    SET [Long]='12.5308724', Lat='55.6788735' 
    WHERE Id = 2; 
3

ошибка, вероятно, потому, что вы выполняете читателя, но ваш запрос ничего не возвращает. Вместо этого позвоните update.ExecuteNonQuery().

+0

Нет, все еще получаю ту же ошибку :( – nickycdk

0

попробуйте использовать update.ExecuteNonQuery() вместо чтения.

Пила другие комментарии слишком поздно.

Я не использую доступ часто, но мое это с помощью < «> для текста разделителя, а не <«>

+0

Errr .. вы не видели мой ответ? – cjk

+0

По-прежнему получая ту же ошибку, что и до использования update.ExecuteNonQuery() – nickycdk

0

Try:

"идентификатор" создается в Int32 (вар ID = Считыватель .GetInt32 (0);), но вы присоединяете его к строке (WHERE Id = "+ id +" ";). Убедитесь, что id задан как строковое значение, а не int.

+0

Если я передам Id как строку, я получаю эту ошибку: не удается лить объект типа «System.Int32» для ввода «System.String». – nickycdk

Смежные вопросы