编辑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);
    }
}

但是它没有更新选定的数据。

请建议并协助我更正代码以使其正常工作

编辑SQL Server数据库中的现有数据

你有很多问题。

首先你需要修复你的更新查询就像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语句有问题,并且更新了多行。

在你的代码中检查这个返回值,这就是你如何确定你的更新语句是否成功。