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

时间:2016-10-16 09:11:47

标签: c#

我在SQL Server数据库中有一个表SupplierMaster,其中包含SUPPLIERNAME列。

我想使用带有以下查询的存储过程编辑保存的供应商名称

ALTER PROCEDURE [dbo].[usp_SupplierMasterUpdateDetails]
(
    @SUPPLIERNAME NVARCHAR(50)
)
AS
BEGIN
    UPDATE [dbo].[SupplierMaster]
    SET [SUPPLIERNAME] = @SUPPLIERNAME
    WHERE [SUPPLIERNAME] = @SUPPLIERNAME
END

我通过" UPDATE BUTTON"运行BELOW代码。更新数据。

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

但它没有更新所选数据。

请建议并协助我纠正正确工作的代码。

1 个答案:

答案 0 :(得分:1)

那里有多个问题。

首先,您需要像Thomas Levesque建议的那样修复更新查询。 例如,SQL Server表需要主键才能唯一地标识记录。

您可以做的最简单的事情是将主键设置为int类型的标识并使其自行生成。您的供应商表格可能如下所示:

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语句存在问题且更新了多行。

在您的代码中检查此返回值以及您如何确定更新语句是否成功。