Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / WinForms, .Net Framework [игнор отключен] [закрыт для гостей] / Ошибка при выполнении запроса INSERT / 22 сообщений из 22, страница 1 из 1
18.02.2005, 14:15
    #32923303
Pavlentus
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Ошибка при выполнении запроса INSERT
Подскажите, чего делать, вроде сам запрос написал правильно, а компилятор выдает ошибку на 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
18.02.2005, 14:33
    #32923367
Sa
Sa
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Ошибка при выполнении запроса INSERT
Какую ошибку?
...
Рейтинг: 0 / 0
18.02.2005, 14:36
    #32923386
кузя
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Ошибка при выполнении запроса INSERT
+
приведи полный текст Exception

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

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

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

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

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

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

пример, для номера телефона:
'ABC-7-67-87' - не конвертируется в Number
...
Рейтинг: 0 / 0
20.02.2005, 17:56
    #32925115
Pavlentus
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Ошибка при выполнении запроса INSERT
Все отладил до очередной ошибки :)
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
20.02.2005, 18:21
    #32925118
Sa
Sa
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Ошибка при выполнении запроса INSERT
Привидите структуру таблицы.

Код: plaintext
 uid  =  S a
...
Рейтинг: 0 / 0
20.02.2005, 18:26
    #32925121
кузя
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Ошибка при выполнении запроса INSERT
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
20.02.2005, 18:46
    #32925128
кузя
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Ошибка при выполнении запроса INSERT
по поводу 2)
где апострофы для текстовых значений ???
зачем ты их убрал ???

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

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

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

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


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

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

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


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