Редактирование существующих данных в базе данных SQL Server

У меня есть таблица SupplierMasterв базе данных SQL Server со столбцом SUPPLIERNAME.

Я хочу изменить имя сохраненного поставщика с помощью хранимой процедуры с помощью ниже запроса

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

и я запускаю код BELOW через «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);
    }
}

Но это не обновление выбранных данных.

Проконсультируйтесь и помогите мне исправить код для правильной работы.

c#,

0

Ответов: 1


1 принят

У вас есть несколько вопросов.

Сначала вам нужно исправить ваш запрос на обновление так же, как предложил Томас Левеск. для таблицы SQL Server необходим первичный ключ, чтобы иметь возможность однозначно идентифицировать запись, например, для обновлений.

Самое простое, что вы могли бы сделать, это установить, что первичный ключ должен быть идентификатором типа int и сделать его самогенерирующим. Таблица вашего поставщика может выглядеть так:

SupplierID int, Primary Key, identity
SupplierName nvarchar(100)

Теперь, когда вы сделаете обновление, вы сделаете это следующим образом:

Update SupplierMaster
Set SupplierName = @supplierName
Where SupplierID = @suplierID

Такой оператор SQL возвращает значение int. Это возвращаемое значение покажет вам, сколько строк SQL изменило этот оператор обновления. Если он говорит 0, то это означает, что оператор SQL не смог найти этот идентификатор, который вы прошли, и ничего не изменилось. Если он говорит 1, то запись была найдена и обновлена, если у вас больше 1, у вас возникла проблема с оператором SQL, и несколько строк были обновлены.

В вашем коде проверьте это возвращаемое значение, и именно так вы определяете, был ли ваш оператор обновления успешным или нет.

C #,
Похожие вопросы