MadMyche
Ваш код-это гигантский пример Уязвимость SQL-инъекции
НИКОГДА создайте команду SQL, объединив набор команд и пользовательский ввод.
Правильный способ добавления значений в запрос будет заключаться в использовании SQL Parameter Collection
Это позволит должным образом избежать любых фанковых символов, происходящих дальше, а также добавит его в отношении любых типов данных, которые у вас есть в вашем сетевом проекте . .. так что вам не нужно беспокоиться о добавленных одинарных кавычках для текста и т. д.
Несколько минут переписывания вашего исходного кода дали мне что-то вроде этого
private void button2_Click(object sender, EventArgs e)
{
con.Open();
string qry = "INSERT INTO record VALUES (@t1, @t2, @t3, @Sn, @Sn1, @Mn, @Mn1, @Tu, @Tu1, @Wd, @Wd1, @Th, @Th1, @Fr, @Fr1, @St, @St1)";
cmd = new SqlCommand(qry, con);
cmd.Parameters.AddWithValue("@t1", textBox1.Text);
cmd.Parameters.AddWithValue("@t2", textBox2.Text);
cmd.Parameters.AddWithValue("@t3", textBox3.Text);
cmd.Parameters.AddWithValue("@Sn", sun.Text);
cmd.Parameters.AddWithValue("@Sn1", sun1.Text);
cmd.Parameters.AddWithValue("@Mn", mon.Text);
cmd.Parameters.AddWithValue("@Mn1", mon1.Text);
cmd.Parameters.AddWithValue("@Tu", tue.Text);
cmd.Parameters.AddWithValue("@Tu1", tue1.Text);
cmd.Parameters.AddWithValue("@Wd", wed.Text);
cmd.Parameters.AddWithValue("@Wd1", wed1.Text);
cmd.Parameters.AddWithValue("@Th", thur.Text);
cmd.Parameters.AddWithValue("@Th1", thur1.Text);
cmd.Parameters.AddWithValue("@Fr", fri.Text);
cmd.Parameters.AddWithValue("@Fr1", fri.Text);
cmd.Parameters.AddWithValue("@St", sat.Text);
cmd.Parameters.AddWithValue("@St1", sat1.Text);
cmd.ExecuteNonQuery();
MessageBox.Show("Data is save now in Database");
}
И вот, я действительно вижу, что синтаксическая ошибка, которую вы получили, скорее всего, была вызвана путаницей одинарных и двойных кавычек, скомпонованных вместе
insert into record values (
'" + textBox1.Text +"'
, '" + textBox2.Text +"'" + "
, '" + textBox3.Text +"'
, '" + sun.Text +"
, " + sun1.Text +"'
Теперь, когда мы избавились от уязвимости, которая также исправляет вашу синтаксическую ошибку; я действительно вижу несколько проблем, которые я вижу в вашем коде.
Вы открываете SQL-соединение в подпрограмме, но не закрываете его. Это может фактически завершиться неудачей, если соединение уже открыто.
Аналогично, вы определяете существующую команду SQL и выполняете ее. Как правило, это должно быть создано и уничтожено в рамках рутины.
Ваше окно сообщения появляется, если не генерируются исключения, что может быть хорошо в этом случае; но если бы это был оператор claused-update, он все равно работал бы, даже если бы никакие строки не были обновлены.
Как правило, я бы завернул это в Ан
IF...ELSE
блок, чтобы дать немного лучшую обратную связь.
int ra = cmd.ExecuteNonQuery(); // ra = Rows Affected
if (ra == 1) {
MessageBox.Show("Data is save now in Database");
} else {
MessageBox.Show("There was a problem saving your data.");
}
Ссылка:
Коллекции sqlparametercollection.Метод AddWithValue(String, Object) (System.Data.SqlClient) | Microsoft Docs[
^]