ACCDB数据库更新GUID列:C#中SQL语句的正确语法问询
Access数据库更新复制ID(GUID)列的正确SQL语法
在Access的SQL语句中,更新复制ID类型的列时,不需要给GUID值加单引号,直接用大括号{}包裹即可。你当前语句的问题就在于给GUID加了单引号,导致语法错误。
正确的SQL示例
UPDATE Locations SET LocationGUI = {0027033a-7d16-485b-a76d-1c767c3ef030}, Facility = '', Address1 = '', Address2 = '', City = '', State = '', Zip = '', Telephone = '', Fax = '', Website = '' WHERE LocationID = 1;
更推荐的C#参数化写法
如果用C#代码执行更新,建议用参数化查询,既避免语法错误,也防止SQL注入:
string updateSql = @" UPDATE Locations SET LocationGUI = @LocationGuid, Facility = '', Address1 = '', Address2 = '', City = '', State = '', Zip = '', Telephone = '', Fax = '', Website = '' WHERE LocationID = @LocationId; "; using (OleDbConnection conn = new OleDbConnection("你的Access连接字符串")) { conn.Open(); using (OleDbCommand cmd = new OleDbCommand(updateSql, conn)) { // 传递GUID参数,无需手动处理格式 cmd.Parameters.AddWithValue("@LocationGuid", Guid.Parse("0027033a-7d16-485b-a76d-1c767c3ef030")); cmd.Parameters.AddWithValue("@LocationId", 1); cmd.ExecuteNonQuery(); } }
参数化查询会自动处理Access对GUID类型的格式要求,不用手动拼接大括号或引号,更可靠。
内容的提问来源于stack exchange,提问作者Bernie Hunt
相关产品推荐
相关产品推荐

