データベース内の文字列と完全に一致するリストボックス内の文字列を使用してデータベースの1つの列を更新しようとしていますが、スペースのない文字列に対してのみ機能します。たとえば、リストボックスに「iPhone」のような製品がある場合、その文字列を取得して、以下のUpdate()メソッドに渡すと、機能します。しかし、リストボックスから選択したアイテムとして「Samsung Galaxy S3」を使用すると、VisualStudioはそのような行がないというエラーをスローします。
その言葉の間にスペースがあるからだと思います。どうすれば問題を解決できますか。
データベースを更新するコード
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());
}
}