编辑SQL Server数据库中的现有数据
本文关键字:数据 SQL Server 数据库 编辑 | 更新日期: 2023-09-27 18:13:12
我有一个表SupplierMaster
在一个SQL Server数据库与列SUPPLIERNAME
。
我想用下面的查询
使用存储过程编辑已保存的供应商名称ALTER PROCEDURE [dbo].[usp_SupplierMasterUpdateDetails]
(
@SUPPLIERNAME NVARCHAR(50)
)
AS
BEGIN
UPDATE [dbo].[SupplierMaster]
SET [SUPPLIERNAME] = @SUPPLIERNAME
WHERE [SUPPLIERNAME] = @SUPPLIERNAME
END
和我通过"UPDATE BUTTON"运行下面的代码来更新数据。
string connString = ConfigurationManager.ConnectionStrings["dbx"].ConnectionString;
using (SqlConnection conn = new SqlConnection(connString))
{
using (SqlCommand cmd = new SqlCommand("usp_SupplierMasterUpdateDetails", conn))
{
cmd.CommandType = CommandType.StoredProcedure;
// Parameter
cmd.Parameters.AddWithValue("SUPPLIERNAME", AddSupplierTextBox.Text);
// Open Connection
conn.Open();
// ExecuteReader (Select Statement)
// ExecuteScalar (Select Statement)
// ExecuteNonQuery (Insert, Update or Delete)
cmd.ExecuteNonQuery();
MessageBox.Show("SUCCESSFULLY UPDATED", "Successful", MessageBoxButtons.OK, MessageBoxIcon.Information);
}
}
但是它没有更新选定的数据。
请建议并协助我更正代码以使其正常工作
你有很多问题。
首先你需要修复你的更新查询就像Thomas Levesque建议的那样。SQL Server表需要一个主键来唯一标识一条记录,例如更新。
您可以做的最简单的事情是将主键设置为int类型的identity,并使其自生成。您的供应商表可能如下所示:SupplierID int, Primary Key, identity
SupplierName nvarchar(100)
现在,当你做一个更新,你会这样做:
Update SupplierMaster
Set SupplierName = @supplierName
Where SupplierID = @suplierID
这样的SQL语句将返回一个int值。这个返回值将告诉您这个更新语句更改了多少SQL行。如果它显示为0,则意味着SQL语句找不到您传递的id,并且没有任何更改。如果显示为1,则找到并更新了记录,如果显示大于1,则说明SQL语句有问题,并且更新了多行。
在你的代码中检查这个返回值,这就是你如何确定你的更新语句是否成功。