C# Update语句不会更新表
我正在尝试更新MS Access表中的供应商记录,这是DA层中的代码: 方法来更新供应商C# Update语句不会更新表,c#,sql,sql-update,ms-access-2010,C#,Sql,Sql Update,Ms Access 2010,我正在尝试更新MS Access表中的供应商记录,这是DA层中的代码: 方法来更新供应商 public static void updateVendor(Vendor aVendor) { try { String sSQLCommand = "UPDATE Vendor SET VendorID = '" + aVendor.VendorId + "', VendorName = '" + aVendor.Name
public static void updateVendor(Vendor aVendor)
{
try
{
String sSQLCommand = "UPDATE Vendor SET VendorID = '" + aVendor.VendorId + "', VendorName = '" + aVendor.Name
+ "', AddressNo = '" + aVendor.AddressNo + "', Address = '" + aVendor.Address + "', City = '"
+ aVendor.City + "', State = '" + aVendor.State + "', ZipCode = '" + aVendor.Zipcode + "', PhoneNumber = '"
+ aVendor.PhoneNumber + "' WHERE VendorID = '" + aVendor.VendorId + "'";
// Create the command object
if (aConnection.State == ConnectionState.Closed)
aConnection.Open();
OleDbCommand cmd = aConnection.CreateCommand();
cmd.CommandText = sSQLCommand;
// Execute the SQL command
cmd.ExecuteNonQuery();
aConnection.Close();
}
catch (Exception ex)
{
Console.WriteLine(ex.ToString());
}
}
我没有收到任何类型的错误,但它不会更新表,因此我不确定它到底出了什么问题,您是否看到了任何错误?Daniel,如果查询执行时没有任何错误,并且问题是没有更新任何记录,请检入以下数据:
- VendorID字段是文本字段,因此如果列中的值前面有空格,则查询将不会更新任何内容,而是成功执行
这是可能的,因为access不会删除文本中前面的空白。您不应该这样连接SQL-您的代码容易受到攻击。您是否在执行之前检查了什么是
sSQLCommand
?您是否尝试直接执行它?不确定,但您不需要/不应该设置VendorID=“…”。连接共享的形式也很糟糕OleDbConnection
支持连接池,因此您应该在需要连接时使用语句在中创建一个新的连接池,而不是在多个方法之间共享一个实例(a连接
)。@Oded我的SQL应该是什么样的?是的,sSQLCommand中有正确的语句,或者至少我认为是正确的,因为它不工作