Справочник функций

Ваш аккаунт

Войти через: 
Забыли пароль?
Регистрация
Информацию о новых материалах можно получать и без регистрации:

Почтовая рассылка

Подписчиков: -1
Последний выпуск: 19.06.2015

Не могу понять причину ошибки... arithmetic exception, numeric overflow, or string tr

20K
27 ноября 2006 года
Hill
9 / / 22.11.2006
Господа помогите разобраться... пишу:

 
Код:
string myConnString = db.GetConnString();
 string myUpdate = "insert into members  (member_id, fio, DOLJNOST,DEPORT, BEGINWORK) values (gen_id (gen_members_id,1), '" + FioBox.Text.ToString() + "','" + PoscomboBox.Text.ToString() + "', '" + s + "', '" + AmissionDate.Text.ToString() + "')"; ;
           FbConnection myConnection = new FbConnection(myConnString);
            myConnection.Open();
            FbTransaction myTxn = myConnection.BeginTransaction();
            FbCommand myCommand = new  FbCommand(myUpdate,myConnection, myTxn);
            myCommand.ExecuteNonQuery();
            myTxn.Commit();
            myConnection.Close();


При выполнении получаю ошибку
(arithmetic exception, numeric overflow, or string truncation)
указывающую на ExecuteNonQuery()

В чем проблема понять не могу...
713
29 ноября 2006 года
Ap0k
360 / / 13.03.2006
В ADO.NET поддерживается передача параметров в запросах к БД. Не знаю как там в FireBird, думаю в провайдере для этой СУБД это предусмотрено.

Код:
string myConnString = db.GetConnString();
 string myUpdate = "INSERT INTO members  (member_id, fio, DOLJNOST,DEPORT, BEGINWORK) VALUES (gen_id (gen_members_id,1),@surname,@post, @dept,@some_date)"; ;
 FbConnection myConnection = new FbConnection(myConnString);
 myConnection.Open();
 FbTransaction myTxn = myConnection.BeginTransaction();
 FbCommand myCommand = new  FbCommand(myUpdate,myConnection, myTxn);
 myCommand.Parameters.Add(new FbParameter("@surname",FioBox.Text)); //Зачем у String вызывать ToString()?
 myCommand.Parameters.Add(new FbParameter("@post",PoscomboBox.Text));
 /*
   в данном случае должности стоило бы хранить в отдельной таблицы для нормализации.
   а в members сохранять идентификатор должности. (если бы использовался не ComboBox
   вопросов бы наверно не возникло.
 */
 myCommand.Parameters.Add(new FbParameter("@dept",s));//Что есть "s" ?
 myCommand.Parameters.Add(new FbParameter("@some_date",AmissionDate.Text)); //Пусть будет так... если ты хранишь даты как строку (??)
 //иначе используй DateTimePeaker.
 myCommand.ExecuteNonQuery();
 myTxn.Commit();
 myConnection.Close();

Кажется стоило бы поучить мат. часть.
PS: gen_id(gen_members_id,1) это генерация первичного ключа??? :eek:
20K
29 ноября 2006 года
Hill
9 / / 22.11.2006
Спаси бо за ответ...=) Я разобрался сам... Просто мозг в тот момент вообще не думал я не мог понять в чем прикол...

Так теперь по пунктам=)

To что я у string вызывал ToString() это реально глупость... устранил
Для ввода должности я убрал ComboBox ибо отдельную таблицу делать не буду..
Да дата у меня хранится в строке и мне так удобно... в моём случае это не критично.. да я использую DateTimePeaker
И gen_id(gen_members_id,1) это действительно генерация первичного ключа... а что в этом удевительного?
713
29 ноября 2006 года
Ap0k
360 / / 13.03.2006
Разве Firebird не поддерживает автоинкремент ключевых полей?
тогда запрос упростился бы...
 
Код:
string myUpdate = "INSERT INTO members  (fio, DOLJNOST,DEPORT, BEGINWORK) VALUES (@surname,@post, @dept,@some_date)";

при этом идентификатор автоматически бы сгенерировался.
52K
05 августа 2009 года
fedorrb
1 / / 05.08.2009
Рабочий пример для доступа к БД Firebird из Visual C# 2008 express edition. Реализовано ссылочная целостность. Вызов хранимой процедуры с возвратом значения, Select, Insert, dataGridView. Все в архиве. Строго не судите, три года не программировал. Неделю собирал информацию в сети.
В архиве нет файла FirebirdSQL.Data.FirebirdClient.dll
Реклама на сайте | Обмен ссылками | Ссылки | Экспорт (RSS) | Контакты
Добавить статью | Добавить исходник | Добавить хостинг-провайдера | Добавить сайт в каталог