Как я могу обновить таблицу базы данных SQL в C#
Когда я запускаю свою программу, она показывает следующее сообщение об ошибке :
Динамическая генерация SQL для команды Update не поддерживается для команды SelectCommand, которая не возвращает никакой информации о ключевом столбце.'
ну , я попытался изменить код, так что если я изменюсь на этот:
ДТ.Метод acceptchanges();
да.Обновление(ДТ);
он не показывает сообщение об ошибке, но изменения не были внесены в базу данных.
Пожалуйста, помогите мне.
Что я уже пробовал:
using (SqlConnection dbcon = new SqlConnection(clsmain.connection_str))
{
string querystring = "select * from tblmain where ticker='" + ticker_str + "'";
использование (SqlDataAdapter da = новый SqlDataAdapter())
{
da.SelectCommand = new SqlCommand(querystring, dbcon);
SqlCommandBuilder objCommandBuilder = новый SqlCommandBuilder(da);
using (DataTable dt = new DataTable())
{
if (dbcon.Состояние == ConnectionState.Закрыто) dbcon.Открыть();
инт countofrecords = да.Заполнить(ДТ);
.
. // мой код для изменения данных находится здесь
. // например::
. // dt.Rows[i]["avgloss"]=10.22;
.
if (dbcon.Состояние == ConnectionState.Закрыто) { dbcon.Открыть(); }
да.Обновление(ДТ);
}
}
}
Richard Deeming
string querystring = "select * from tblmain where ticker='" + ticker_str + "'";
Ваш код уязвим для SQL-инъекция[^]. НИКОГДА используйте конкатенацию строк для построения SQL-запроса. ВСЕГДА используйте параметризованный запрос.
Все, что вы хотели знать о SQL-инъекции (но боялись спросить) | Трой Хант[^]
Как я могу объяснить SQL-инъекцию без технического жаргона? | Обмен Стеками Информационной Безопасности[^]
Шпаргалка по параметризации запросов | OWASP[^]