SQL Server:更新未更新表c#无错误
我正在尝试更新项目表:SQL Server:更新未更新表c#无错误,c#,sql-server,C#,Sql Server,我正在尝试更新项目表: public void updateDatabase(Item item) { string sqlString = "UPDATE Items Set Quantity = '" + item.Quantity.ToString().Trim() + "' " + "WHERE ItemID = '" + item.ItemID.Trim() + "'"; //string sqlStringParam = "UPDATE Items Set Quant
public void updateDatabase(Item item)
{
string sqlString = "UPDATE Items Set Quantity = '" + item.Quantity.ToString().Trim() + "' " + "WHERE ItemID = '" + item.ItemID.Trim() + "'";
//string sqlStringParam = "UPDATE Items Set Quantity = @quant WHERE ItemID = @id";
//Create & execute the update command
using (SqlCommand sc = new SqlCommand(sqlString, mainConn))
{
//sc.Parameters.AddWithValue("@quant", item.Quantity);
//sc.Parameters.AddWithValue("@id", item.ItemID);
Console.WriteLine(sc.CommandText.ToString());
UpdateDataSource(sc, table);
}
Console.WriteLine("done");
}
这会将命令发送到数据库类以执行查询:
protected bool UpdateDataSource(SqlCommand command, string table)
{
bool success;
try
{
if (mainConn.State != ConnectionState.Open)
{
mainConn.Open();
}
Console.WriteLine(command.CommandText);
command.CommandType = CommandType.Text;
Console.WriteLine(command.ExecuteNonQuery());
mainConn.Close();
success = true;
}
catch (Exception e)
{
MessageBox.Show(e.Message + " " + e.StackTrace, "Error Updating Database");
mainConn.Close();
success = false;
}
finally
{
mainConn.Close();
}
return success;
}
正如您所看到的,我尝试了concat方法和paramaterized方法,它们都不会更新表。以下是尝试更新2项时的输出:
UPDATE Items Set Quantity = '4' WHERE ItemID = '1122'
UPDATE Items Set Quantity = '4' WHERE ItemID = '1122'
1
done
UPDATE Items Set Quantity = '9' WHERE ItemID = '1155'
UPDATE Items Set Quantity = '9' WHERE ItemID = '1155'
1
done
在我看来,它似乎应该更新表。我甚至将上面复制的语句作为单个查询运行,它会更新表
ExecuteNonQuery
甚至返回1。您可以使用跟踪,只要确保系统中已安装SQL Server Profiler即可
SQL跟踪将告诉您哪些命令在SQL server中实时执行
SQL Server探查器
这将有助于您将来使用SQL server;) 问题似乎与我使用的.mdf数据库文件的属性有关。它被设置为“始终复制”,而不是正确的“新建时复制”设置。有趣的是,有人告诉我,为了完成这项任务,我必须始终使用副本,但这似乎是不正确的
谢谢大家的帮助我很好奇你为什么评论出了编写SQL的正确方法?我可以把它改回去哈哈,总的来说,两者都会导致相同的结果mainconn是否有交易?尝试在更新后立即在代码中运行“select”,查看是否获得更新的值…是否验证代码是否连接到正确的数据库服务器和数据库?如果数量和ID是整数,为什么要在其周围使用“标记”,强制sql使用隐含转换