Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/sql/80.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/ms-access/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
MS Access:SQL更新语法错误,但原因是什么?_Sql_Ms Access_Syntax Error - Fatal编程技术网

MS Access:SQL更新语法错误,但原因是什么?

MS Access:SQL更新语法错误,但原因是什么?,sql,ms-access,syntax-error,Sql,Ms Access,Syntax Error,我在这个SQL中得到了一个语法错误,似乎不知道为什么 SQL更新在出现以下错误时返回: 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.G

我在这个SQL中得到了一个语法错误,似乎不知道为什么

SQL更新在出现以下错误时返回:

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";
   }
}

错误可能是因为您正在执行读取器,但您的查询没有返回任何内容。调用update.ExecuteNonQuery()。

尝试使用update.ExecuteNonQuery()而不是reader

看到其他评论太晚了

我不经常使用access,但我的access正在使用尝试:

“id”被设置为Int32(var id=reader.GetInt32(0)),但您正在将其连接到字符串(其中id=“+id+”;)。请确保将id转换为字符串值,而不是int。

“Long”是Access中的保留字。如果无法更改架构以调用该列,请将其放在括号中:

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

它返回的错误消息是什么?为什么要将OleDB与MSSQL Server一起使用?“更新语句中存在语法错误”不,这是一个accdb im打开,但使用SQL更新dbstring connection=“Provider=Microsoft.ACE.OleDB.12.0;数据源=“+Directory.GetCurrentDirectory()+”/Tankstationer.accdb;“conn.ConnectionString=connection;conn.Open();Errr..您没有看到我的答案吗?仍然会收到与使用update.ExecuteOnQuery()之前相同的错误。如果我将Id转换为字符串,则会收到以下错误:无法将“System.Int32”类型的对象转换为“System.string”类型。