2013-07-02 3 views
-2

У меня возникли проблемы с получением кода для обновления строки в моей таблице в базе данных SQL Server с использованием .Net и C# Я не совсем новичок в .NET, C# или SQL-сервере, но не знаю есть и опыт.Обновление сервера Sql Не работает

using (SqlConnection CSConnString = new SqlConnection(ConfigurationManager.ConnectionStrings["cs_BillingConnectionString1"].ConnectionString)) 
{ 
    CSConnString.Open(); 

    SqlCommand comm = new SqlCommand(); 

    comm = CSConnString.CreateCommand(); 

    comm.CommandText = "UPDATE cs_PriceListHeader SET PriceListName = @name where PriceListID =" + PlanID; 

    comm.Parameters.Add("@name", SqlDbType.NVarChar); 
    comm.Parameters["@name"].Value = txtbListName.Text; 

    comm.ExecuteNonQuery(); 

    CSConnString.Close(); 
} 

код не дает каких-либо ошибок, его просто не вставляя данные

+0

Попробуйте выполнить запрос в SQL, а также сделать в SQL выбери с оператор where, чтобы увидеть в возвращаемых строках. –

+2

Вы должны параметризовать 'WHERE', а также' SET'. 'где PriceListID =" + PlanID' не выглядит корректно в любом случае, кроме случаев, когда вы несовместимы с именованием. –

+3

Теперь это что-то новое - * полу-* параметризованный запрос :-D –

ответ

5

Вы никогда не вставить новую запись, как вы используете UPDATE заявление. Также вы используете параметризированные запросы для одной переменной (Name), однако вы передаете PriceListId в raw, который уязвим для SQL Injection.

Осмотрите значение PlanId и убедитесь, что оно обновляется.

Если вы собираетесь INSERT данные в базу данных, а не UPDATE вам нужно использовать INSERT заявление:

INSERT INTO cs_PriceListHeader 
(PriceListId, PriceListName) 
VALUES 
(@PlanId, @name) 

Edit:

Из комментариев, удалить:

comm.Parameters.Add("@name", SqlDbType.NVarChar); 
comm.Parameters["@name"].Value = txtbListName.Text; 

И замените его на:

comm.Parameters.AddWithValue("@name", txtbListName.Text); 
+0

Нет, я хочу обновить, а не вставлять! И PlanID извлекается из БД до этого, вставленный пользователем Почему он не обновляется? – user2437588

+0

@ user2437588 - Каково значение PlanID? –

+0

В идентификаторе нет ничего плохого. Если я заменил @name чем-то вроде «текста, который будет вставлен», он будет прекрасно обновляться с помощью этот текст в строку, которую я хотел – user2437588

0

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

соединение Keep строка и логика доступа к БД отдельный

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

  • Всякий раз, когда вы внесли изменения в код файла (. cs) убедитесь, что вы скомпилировали проект.
  • Попробуйте отладить приложение, добавить несколько контрольных точек, это даст вам хороший контроль над потоком

Надеется, что это поможет

Смежные вопросы