正如標題所示,我試圖通過我的GUI更改數據庫中圖書的評分。例如,我將它從1更改爲5。當我使用斷點時,我發現查詢正確地轉換了它應該是的(我認爲)並且沒有錯誤。但它不會更改數據庫中的實際行。更新行返回1,但不會更改數據庫中的實際行
public int ChangeRating(Book book, int rating, string title)
{
book.Query = "UPDATE Books SET Rating = " + rating + " WHERE Title = '" + title + "'";
return SqlManager.RunNonQuery(book);
}
之後,它進入我的SqlManager。
public static int RunNonQuery<T>(T value) where T : IIsQueriable, new()
{
using (SqlConnection con = new SqlConnection(cs)) //connectie wordt aangemaakt
{
using (SqlCommand cmd = con.CreateCommand()) //maakt een command aan
{
cmd.CommandText = value.Query; //de waarde van Query wordt de command
return TryExecuteNonQuery<T>(cmd);
}
}
}
private static int TryExecuteNonQuery<T>(SqlCommand cmd) where T : IIsQueriable, new()
{
int result;
try
{
cmd.Connection.Open();
cmd.Prepare();
result = cmd.ExecuteNonQuery();
}
catch (Exception e)
{
MessageBox.Show(e.Message);
throw;
}
finally
{
cmd.Connection.Close();
}
MessageBox.Show(result.ToString());
return result;
}
在數據庫中。評級是一個int,標題是一個Nvarchar(MAX)事件。
,提供您的樣品數據。 – Mansoor
您是否100%確定您的連接字符串(代碼中的'cs')指向正確的數據庫? – Jcl
此代碼高度暴露於Sql注入。特別是,我建議你不要構建自己的不支持參數化查詢的數據庫框架。 – Steve