Как вставить текстовые поля и столбцы базы данных в один и тот же запрос?
void add() { var docnum = SR_Yr.Text + '-' + SR_No.Text; string constring = "Data Source=D-HOS-MIS2;Initial Catalog=Consignment_db;Persist Security Info=True;User ID=sa;Password=t.july.01"; string query = "insert into StockRequesitionTable (SR_DocNo,SR_ItemID) values('"+docnum+"',SRT_ID)"; SqlConnection con_db = new SqlConnection(constring); SqlCommand cmd = new SqlCommand(query, con_db); SqlDataReader reader; try { con_db.Open(); reader = cmd.ExecuteReader(); while (reader.Read()) { } } catch (Exception ex) { MessageBox.Show(ex.Message); } }
Есть ли какой-либо способ построить его с помощью текстовых полей,datetime и или comboboxes вместе с таблицами базы данных?
Что я уже пробовал:
Я попытался запустить код, указанный выше. Он вызвал запрос на неизвестный стол в ценности Я понял, что мне не хватает, возможно, запроса на соединение, но я не знаю, как его построить.
CHill60
Ваш вопрос совсем не ясен. Почему вы думаете, что вам нужно присоединиться? Никогда не используйте сцепленные строки для создания инструкций sql - см. Шпаргалка по предотвращению инъекций SQL - OWASP[^]
Следуйте теориям по этой ссылке, и это может ответить на ваш вопрос
FranzBe
1) "вставить в" - это не запрос, поэтому вы должны использовать cmd.ExecuteNonQuery() вместо функции .Метода executereader(). Вы ничего не читаете из базы данных.
2) вы никогда не должны использовать пользователя базы данных "sa" для вашего приложения. Создайте пользователя с необходимыми разрешениями, необходимыми для вашего приложения, а затем используйте этого пользователя.
Richard Deeming
Ваш код уязвим для SQL-инъекция[^]. НИКОГДА используйте конкатенацию строк для построения SQL-запроса. ВСЕГДА используйте параметризованный запрос.
Все, что вы хотели знать о SQL-инъекции (но боялись спросить) | Трой Хант[^]
Как я могу объяснить SQL-инъекцию без технического жаргона? | Обмен Стеками Информационной Безопасности[^]
Шпаргалка по параметризации запросов | OWASP[^]
Вам также нужно будет предоставить значение для SR_ItemID
колонка.
const string query = "insert into StockRequesitionTable (SR_DocNo, SR_ItemID) values(@docnum, @SRT_ID)"; using (SqlConnection con_db = new SqlConnection(constring)) using (SqlCommand cmd = new SqlCommand(query, con_db)) { cmd.Parameters.AddWithValue("@docnum", docnum); cmd.Parameters.AddWithValue("@SRT_ID", SRT_ID); con_db.Open(); cmd.ExecuteNonQuery(); }