Ошибка при выполнении функции ExecuteNonQuery () в c # - PullRequest
0 голосов
/ 13 октября 2011

Я выполняю оператор вставки из c # со значениями, извлеченными из элементов управления TextBox в моем графическом интерфейсе.

В моей БД только 2 столбца с ненулевым ограничением, например:все мои операторы вставки VARCHAR, включая поля ssn и dbate, имеют тип даты

insert into emp (fname,minit,lname,dbate,ssn,sex) values ('arun','','','','12345','')

. Это прекрасно работает, если введены все значения, но при вводе нулевых значений я получаю ошибку Data MisMatch, как в приведенном выше утверждении.при выполнении оператора. во время выполнения sql непосредственно в sql2005 запрос работает нормально.

string myInsertQuery = "INSERT INTO Employee (fname,minit,lname,ssn,bdate,address,sex) values  ('" + textBox1.Text + "','" + textBox2.Text + "','" + textBox3.Text + "','" + textBox4.Text + "','" + textBox5.Text + "','" + textBox6.Text + "','" + textBox7.Text + "')";


 OleDbCommand myCommand2 = new OleDbCommand(myInsertQuery, mycon)


myCommand2.ExecuteNonQuery();

Ответы [ 3 ]

3 голосов
/ 13 октября 2011

Возможно, вы захотите попробовать:

insert into emp (fname,minit,lname,dbate,ssn,sex) values ('arun', NULL, NULL, NULL,'12345', NULL)

Проверьте, печатает ли пользователь некоторые символы, такие как 'и - - это может легко повредить ваш синтаксис !!!

Оффтопик, но связанный: получая ваши значения непосредственно из текстового поля, вы позволяете любому вводить SQL в ваше приложение, поэтому это недостаток.Вы можете избежать этого, параметризовав свой запрос, например:

SqlCommand cmd = new SqlCommand("select * where Pk = @param1");
cmd.Parameters.Add("@param1", SqlDbType.Int);
cmd.Parameters["@param1"].Value = txtPk.text;
0 голосов
/ 13 октября 2011

Может быть, вам стоит где-нибудь сделать проверку вашего текстового поля, чтобы убедиться, что оно содержит соответствующее значение. (Если они пусты, обязательно укажите значение string.empty или любое значение по умолчанию, требуемое вашим приложением).

Трудно сказать иначе, потому что ваш код немного неполон, чтобы дать более точный ответ.

0 голосов
/ 13 октября 2011

Если dbdate имеет тип date, как вы говорите, это нормально, что вы получите type mismatch error, если значение в textbox5 не содержит текста в соответствующем формате.например, '10 -12-2011 '

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...