powered by simpleCommunicator - 2.0.60     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / WinForms, .Net Framework [игнор отключен] [закрыт для гостей] / Ошибка при выполнении запроса INSERT
22 сообщений из 22, страница 1 из 1
Ошибка при выполнении запроса INSERT
    #32923303
Pavlentus
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Подскажите, чего делать, вроде сам запрос написал правильно, а компилятор выдает ошибку на ExecuteNonQuery();

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
36.
37.
38.
39.
40.
41.
42.
43.
44.
45.
46.
47.
48.
49.
50.
51.
52.
53.
54.
55.
56.
57.
58.
59.
60.
61.
62.
63.
64.
65.
66.
67.
68.
69.
70.
71.
72.
private bool AddSotrudniki()
{      
          
	OleDbConnection myCons = new OleDbConnection ( strCon );

if( textFam.Text != "" && textIm.Text != "" && textOtch.Text != "" &&
 textVozr.Text != "" && textBPlace.Text != "" && textTel.Text != ""&&
textStag.Text != "" && textZp.Text != "" && comboBL.Text !="" && comboOtd.Text !="" )
			
{
				
//the string to get values from the  textboxes and form an "INSERT INTO"
				// statement.
string sqlStr = "INSERT INTO Сотрудники (Фамилия, Имя, Отчество, Возраст, Место рождения, Телефон, Стаж, Отдел,Зарплата) VALUES ( '";
				sqlStr += ToSQL(textFam.Text) + "', '";
				sqlStr += ToSQL(textIm.Text) + "', '";
				sqlStr += ToSQL(textOtch.Text) + "', ";
				sqlStr += ToSQL(textVozr.Text) + ", '";
				sqlStr += ToSQL(textBPlace.Text) + "', ";
				sqlStr += ToSQL(textTel.Text) + ", ";
				sqlStr += ToSQL(textStag.Text) + ", ";
				sqlStr += ToSQL(textZp.Text) + ", '";
				sqlStr += ToSQL(comboOtd.Text) + "', '";
				sqlStr += ToSQL(comboBL.Text) + "')" ;
				OleDbCommand myCmds = new OleDbCommand( sqlStr , myCons ) ;
				try
				{
					myCons.Open();
					//Execute the statement 
					myCmds.ExecuteNonQuery();
					statusAdd.Text="Data added to database" ;
					//reset all the textboxes
					//int recordCount =int.Parse( t_bookid.Text );
					//recordCount++ ;
					textFam.Text="" ;
					textIm.Text="" ;
					textOtch.Text="" ;
					textVozr.Text="" ;
					textBPlace.Text="" ;
					textTel.Text="" ;
					textStag.Text="" ;
					textZp.Text="" ;
					comboOtd.Text="";
					comboBL.Text="" ;
					statusAdd.Text="Connected - Now you can add records";
				}
				
				catch( Exception ed )
				{
					MessageBox.Show("Error in inserting! "+ed.ToString(), "Error");
				}
			
				finally
				{
					myCmds.Dispose();
					myCons.Close() ;
					myCons.Dispose();
				}
			}
			else
			{
				MessageBox.Show("All fields must be completed.", "Error");
			}
			
			 
			
			return true;
		}
		private string ToSQL( string input )
		{
			return input.Replace( "'" , "''" ); 
		}
...
Рейтинг: 0 / 0
Ошибка при выполнении запроса INSERT
    #32923367
Sa
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Какую ошибку?
...
Рейтинг: 0 / 0
Ошибка при выполнении запроса INSERT
    #32923386
кузя
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
+
приведи полный текст Exception

---
подозрение вызывает имя поля "Место рождения" - заключи его в нужные ограничители для БД, например,
[Место рождения]
...
Рейтинг: 0 / 0
Ошибка при выполнении запроса INSERT
    #32923409
mr_Andrey
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
скорее всего необходимо Место рождения в квадратные скобки поставить. а так вообще без текста ошибки сложно сказать.
...
Рейтинг: 0 / 0
Ошибка при выполнении запроса INSERT
    #32923420
Pavlentus
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Вот она:
...
Рейтинг: 0 / 0
Ошибка при выполнении запроса INSERT
    #32923482
кузя
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
посчитай количество полей -
список имен = 9,
а список значений = 10

и по названиям полей/контролов - не всё гладко
...
Рейтинг: 0 / 0
Ошибка при выполнении запроса INSERT
    #32923490
Sa
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
А что используется в качестве СУБД.

Код: plaintext
 uid  =  S a
...
Рейтинг: 0 / 0
Ошибка при выполнении запроса INSERT
    #32923494
Sa
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
+ используйте OleDbParameter, не составляйте запрос простой конкатенацией строк.

Код: plaintext
 uid  =  S a
...
Рейтинг: 0 / 0
Ошибка при выполнении запроса INSERT
    #32923499
Фотография B0rG
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Tip Of the Day

На мессадж боксе можно давить Ctrl+C, тады все содержимое мессадж бокса копируется в буфер обмена :)

Cheers
Pete
...
Рейтинг: 0 / 0
Ошибка при выполнении запроса INSERT
    #32924473
Pavlentus
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Список переменных приравнял к списку значений......далее что такое DataTypeMismatch? В качестве БД использован Access 2003
...
Рейтинг: 0 / 0
Ошибка при выполнении запроса INSERT
    #32924475
Pavlentus
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
и еще......типы данных в базе указаны правильно...там где надо - текст, где надо - числовой. Я думаю что ошибка скорее всего в тех строках, где присутствует функция ToSQL.
...
Рейтинг: 0 / 0
Ошибка при выполнении запроса INSERT
    #32924491
кузя
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
"data type mismatch" - это означает, что вместо одного типа (например, числового) ты передаешь в запросе другой (например, текстовый), который не может быть сконвертирован в нужный тип.

пример, для номера телефона:
'ABC-7-67-87' - не конвертируется в Number
...
Рейтинг: 0 / 0
Ошибка при выполнении запроса INSERT
    #32925115
Pavlentus
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Все отладил до очередной ошибки :)
1)
----------------------------------------------------------------------------
sqlstr = "INSERT INTO Сотрудники(Имя, Фамлия) VALUES(@P1, @P2)"
OleDbCommand myCmds = new OleDbCommand( sqlstr, myCons);
myCmds.Parameters.Add("@P1",OleDbType.Char,20);
myCmds.Parameters.Add("@P2",OleDbType.Char,20);
myCmds.Parameters[0].Value = textFam.Text;
myCmds.Parameters[1].Value = textIm.Text;
myCmds.ExecuteNonQuery();
-----------------------------------------------------
Опят ошибка с Data Type Mismatch!!!!!!!!!!!!!!!!!!!

2)
sqlstr = "INSERT INTO Сотрудники (Фамилия, Имя, Отчество, Возраст, [Место рождения], Телефон, Стаж, Отдел,Зарплата, БЛ)";
sqlstr += "VALUES ("+textFam.Text +","+textIm.Text+","+textOtch.Text+","+textVozr.Text+","+textBPlace.Text+","+textTel.Text+","+textStag.Text+","+textZp.Text+","+comboOtd.Text+","+comboBL.Text+")";
OleDbCommand myCmds = new OleDbCommand( sqlstr, myCons);
myCons.Open();
myCmds.ExecuteNonQuery();



Ошибка с неприсвоенными значениями текстовых полей....я уже в расстерянности!
...
Рейтинг: 0 / 0
Ошибка при выполнении запроса INSERT
    #32925118
Sa
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Привидите структуру таблицы.

Код: plaintext
 uid  =  S a
...
Рейтинг: 0 / 0
Ошибка при выполнении запроса INSERT
    #32925121
кузя
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
PavlentusВсе отладил до очередной ошибки :)
----------------------------------------------------------------------------
sqlstr = "INSERT INTO Сотрудники(Имя, Фамлия) VALUES(@P1, @P2)"
OleDbCommand myCmds = new OleDbCommand( sqlstr, myCons);
myCmds.Parameters.Add("@P1",OleDbType.Char,20);
myCmds.Parameters.Add("@P2",OleDbType.Char,20);
myCmds.Parameters[0].Value = textFam.Text;
myCmds.Parameters[1].Value = textIm.Text;
myCmds.ExecuteNonQuery();
-----------------------------------------------------
Опят ошибка с Data Type Mismatch!!!!!!!!!!!!!!!!!!!
ради спортивного интереса повторил этот пример :)

получаем Data Type Mismatch ТОЛЬКО если одно из полей 'Имя' или 'Фамлия' в таблице 'Сотрудники' имеет тип Number, Date/Time, Yes/No, Currency

нормальный результат - когда тип этих полей Text, Memo или Ole Object

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

PSS
такое бывает, если смотришь и правишь в Access одну mdb, а в строке подключения указана совершенно другая база хрен знает с какими таблицами и полями :))
...
Рейтинг: 0 / 0
Ошибка при выполнении запроса INSERT
    #32925128
кузя
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
по поводу 2)
где апострофы для текстовых значений ???
зачем ты их убрал ???

Я думаю что ошибка скорее всего в тех строках, где присутствует функция ToSQL.после таких заявлений - возникают достаточно сильные сомнения в авторстве текста программы.
поверь, метод ToSQL() написал далеко неглупый и разбирающийся в SQL человек.
...
Рейтинг: 0 / 0
Ошибка при выполнении запроса INSERT
    #32925136
Sa
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
И все таки я категорически против варианта 2.

Код: plaintext
 uid  =  S a
...
Рейтинг: 0 / 0
Ошибка при выполнении запроса INSERT
    #32925195
Pavlentus
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Хе, а второй вариант, это, что, Майкрософт для ламаков в C# Samples засунула?
...
Рейтинг: 0 / 0
Ошибка при выполнении запроса INSERT
    #32925196
Sa
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Хе, а второй вариант, это, что, Майкрософт для ламаков в C# Samples засунула?

Это смотря что они хотели продемонстрировать этим примером

Код: plaintext
 uid  =  S a
...
Рейтинг: 0 / 0
Ошибка при выполнении запроса INSERT
    #32925197
Pavlentus
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
И еще вопрос: Сколько максимум записей может выдержать Аксесик и для каких целей таков предназначен?
...
Рейтинг: 0 / 0
Ошибка при выполнении запроса INSERT
    #32925207
Sa
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Сколько максимум записей может выдержать Аксесик и для каких целей таков предназначен?


Пожалуй это вопрос для форума Access.

Код: plaintext
 uid  =  S a
...
Рейтинг: 0 / 0
Ошибка при выполнении запроса INSERT
    #32925836
Melo
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
1. А слабо вывести (на консоль, в файл, в мессаджбокс) значение переменной "sqlStr" перед вызовом "ExecuteNonQuery"? Я почему-то уверен, что все станет понятно.

2. А почему у вас количество полей в списке имен (9) не равно количеству значений которые вы подставляете в текст запроса (10)? И еще - в списке полей у вас идет "Стаж, Отдел, Зарплата", а в списке значений последовательность другая "textStag.Text, textZp.Text, comboOtd.Text" (я полагаю что Stag=Стаж, Zp=Зарплата, Otd=Отдел) - проверьте последовательность!
...
Рейтинг: 0 / 0
22 сообщений из 22, страница 1 из 1
Форумы / WinForms, .Net Framework [игнор отключен] [закрыт для гостей] / Ошибка при выполнении запроса INSERT
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]