我在这个SQL中遇到语法错误,似乎无法找出原因?
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";
}
}
答案 0 :(得分:3)
错误可能是因为您正在执行阅读器,但您的查询不会返回任何内容。请改为呼叫update.ExecuteNonQuery()
。
答案 1 :(得分:0)
尝试使用update.ExecuteNonQuery()而不是reader。
看到其他评论为时已晚。
我不经常使用访问权限,但是我使用<“>作为文本分隔符,而不是<'>
答案 2 :(得分:0)
尝试:
“id”被设置为Int32(var id = reader.GetInt32(0);)但你将它连接到一个字符串(WHERE Id =“+ id +”“;)。确保将id转换为字符串值而不是int。
答案 3 :(得分:0)
“Long”是Access中的保留字。如果您无法更改架构以将该列调用为其他内容,请将其放在括号中:
UPDATE Tankstationer
SET [Long]='12.5308724', Lat='55.6788735'
WHERE Id = 2;