我正在尝试使用列表框中的字符串更新数据库的一列,该字符串与数据库中的字符串完全匹配,但它仅适用于没有空格的字符串。例如,如果我在列表框中有类似“Iphone”的产品,我会得到该字符串并传递给下面的 Update() 方法,它可以工作。但是,如果我使用“Samsung Galaxy S3”作为从列表框中选择的项目,Visual Studio 会向我抛出没有这样的行的错误。
我确信这是因为那个词之间的空格。我该如何解决这个问题。
更新数据库的代码
public string Update(string product)
{
// Create connection object
int ix = 0;
string rTurn = "";
OleDbConnection oleConn = new OleDbConnection(connString);
try
{
oleConn.Open();
string sql = "UPDATE [Product] SET [Quantity]=[Quantity] - 1 " + " WHERE [Product Name]= " + product;
OleDbCommand oleComm = new OleDbCommand(sql, oleConn);
oleComm.Parameters.Add("@product", OleDbType.Char).Value = product;
ix = oleComm.ExecuteNonQuery();
if (ix > 0)
rTurn = "Stock Updated";
else
rTurn = "Update Failed";
}
catch (Exception ex)
{
}
finally
{
oleConn.Close();
}
return rTurn;
}
将每个项目的字符串传递给 Update() 方法的代码。
public void UpdateStock()
{
foreach (var listBoxItem in listBox1.Items)
{
string result = Update(listBoxItem.ToString());
}
}