Проверьте базу данных с многострочными значениями текстового поля
Здравствуйте Друзья,
я застрял с вопросом, где у меня есть две таблицы клиент и компания.
таблица компаний имеет идентификатор столбца и компанию
клиент имеет три столбца client_id , client_name и company_id
на странице у меня есть два текстовых поля: одно говорит о компании , а другое-о клиенте, текстовое поле, которое принимает значения для клиента, - это многострочное текстовое поле (что здесь необходимо).
все сделано, insert работает нормально, delete работает нормально, но при обновлении у меня есть вопрос, Как удалить те клиенты, которые хранятся в таблице client, но после обновления их там не должно быть.
public void isclientpresent(int selectecustomer, string clientname) { SqlConnection con = new SqlConnection(@"Data Source=AASHISH\SQLEXPRESS;Initial Catalog=customerdb;Integrated Security=True"); con.Open(); SqlCommand cmd = new SqlCommand("Select * from client where company_id='"+selectecustomer+"'and client_name='"+clientname+"'", con); SqlDataAdapter sqlda = new SqlDataAdapter(cmd); DataSet sqlds = new DataSet(); sqlda.Fill(sqlds); con.Close(); if (sqlds.Tables[0].Rows.Count > 0) { // } else { insertclient(selectecustomer, clientname); } } protected void GridView1_RowUpdating(object sender, GridViewUpdateEventArgs e) { int selectedcustomer = Convert.ToInt16(GridView1.Rows[e.RowIndex].Cells[3].Text); string[] allLines = txtclients.Text.Split('\n'); foreach (string text in allLines) { isclientpresent(selectedcustomer, text); } } public void insertclient(int selectedcompany, string selectedclient) { SqlConnection con = new SqlConnection(@"Data Source=AASHISH\SQLEXPRESS;Initial Catalog=customerdb;Integrated Security=True"); con.Open(); SqlCommand cmd = new SqlCommand("Insert into client (client_name,company_id) VALUES('" + selectedclient+ "',"+selectedcompany+")", con); cmd.ExecuteNonQuery(); con.Close(); }
Что я уже пробовал:
Когда я выбираю update GridView1_RowUpdating снимается и один за другим вносится в базу данных, чтобы проверить, существуют ли они там или нет . если нет, то они вызывают insert query.
но что делать, если значение есть в базе данных, но не отправляется из массива для проверки .
Может ли кто-нибудь помочь мне в этом
Richard Deeming
Ваш код уязвим для SQL-инъекция[^]. НИКОГДА используйте конкатенацию строк для построения SQL-запроса. ВСЕГДА используйте параметризованный запрос.
Все, что вы хотели знать о SQL-инъекции (но боялись спросить) | Трой Хант[^]
Как я могу объяснить SQL-инъекцию без технического жаргона? | Обмен Стеками Информационной Безопасности[^]
Шпаргалка по параметризации запросов / OWASP[^]
Vincent Maverick Durano
добавляя к SQL-инъекции, я бы также предложил вам всегда использовать "using block" При работе с объектами, которые потребляют ресурсы, такими как: SqlConnection и SqlCommand