Модераторы: gambit
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Не работает вставка записи в БД MSSQL 
:(
    Опции темы
Yagmort
Дата 24.11.2010, 17:46 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 339
Регистрация: 17.6.2009

Репутация: -1
Всего: -1



Код

string zapr;
zapr="INSERT INTO [kirpich].[dbo].[T_DO] "+ 
          " ([dateF]" +
          " ,[id_f1]"+
          " ,[id_f2]" +
          " ,[id_f3]"+
          " ,[id_f4]"+
          " ,[intF1]"+
          " ,[intF2]"+
          " ,[floatF3]"+
          " ,[floatF4]"+
          " ,[floatF5]"+
          " ,[floatF6]"+
          " ,[floatF7]"+
          " ,[floatF8]"+
          " ,[floatF9]"+
          " ,[floatF10]) " +
          " VALUES "+
          "('" + Calendar1.SelectedDate.ToShortDateString() +"'" +
          "," + DropDownList1.Text + ""+
          "," + DropDownList2.Text + "" +
          "," + DropDownList3.Text + "" +
          "," + DropDownList4.Text + "" +
          "," + Convert.ToInt32(Textbox1.Text)+""+
          "," + Convert.ToInt32(Textbox2.Text)+ "" +
          "," + Convert.ToDouble(Textbox3.Text) + "" +
          "," + Convert.ToDouble(Textbox4.Text) + "" +
          "," + Convert.ToDouble(Textbox5.Text) + "" +
          "," + Convert.ToDouble(Textbox6.Text) + "" +
          "," + Convert.ToDouble(Textbox7.Text) + "" +
          "," + Convert.ToDouble(Textbox8.Text) + "" +
          "," + Convert.ToDouble(Textbox9.Text) + "" +
          "," + Convert.ToDouble(Textbox10.Text) +") GO ";

                Configuration gif = WebConfigurationManager.OpenWebConfiguration("/");
                ConSTR con = new ConSTR(config.ConnectionStrings.ConnectionStrings["STRINGCON"].ConnectionString);
                SqlConnection sqls = new SqlConnection(con);
                try
                {
                    SqlDataAdapter da = new SqlDataAdapter(zapr, con);
                    SqlCommand command = new SqlCommand(zapr,sqls);
                    DataSet sets = new DataSet();
                    da.Fill(sets, "[T_DO]");
                    sqls.Open();    
                }
                catch (Exception e)
                {
                    MessageBox.Show(e.Message.ToString());      
                 }
                finally
                {
                    sqls.Close();
                }

выпадает ошибка не могу найти ошибки
 //System.FormatException: Входная строка имела неверный формат.

"INSERT INTO [kirpich].[dbo].[T_DO] "+ // жалуется на эту строку

Это сообщение отредактировал(а) Yagmort - 24.11.2010, 18:01
PM MAIL   Вверх
MasterOfCode
Дата 24.11.2010, 18:01 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


elwin
**


Профиль
Группа: Участник
Сообщений: 740
Регистрация: 24.4.2008
Где: World.Russia.Tyum en

Репутация: 4
Всего: 27



Yagmort, Вижу несколько слабых мест.
Первое:
В этой строке Convert.ToDouble(Textbox3.Text) и ей подобных, может возникнуть при вставке ошибка с разностью Decimal Separator на компьютере котором выполняется приложение и в настройках БД
Второе:
Опять же на эти строки, если разделитель запятая, то необходимо число заключать в апострофы. Чтоб БД поняла ваш запрос.
Третье:
Если значение DropDownList1.Text, строка, опять же, необходимо заключить в апострофы. И так по всем остальным значениям.
Четвертое:
Не понимаю, что вы хотите сделать выполняя этот блок если в переменной zapr у вас INSERT COMMAND:
Код

SqlDataAdapter da = new SqlDataAdapter(zapr, con);
SqlCommand command = new SqlCommand(zapr,sqls);
DataSet sets = new DataSet();
da.Fill(sets, "[T_DO]");
sqls.Open();

Во первых, сначало необходимо открыть коннект к БД, а вы его открываете после того, как пытаетесь выполнить заполнение датасета.
Во вторых для заполнения датасета нужно использовать обычный select
В третьих, если все же вам необходимо заполнять значения в БД, то для этого датасет не используют, достаточно сформировать инсерт в SqlCommand и сделать ExecuteNonQuery хотя бы.


Для начала откройте книжку и почитайте. Либо зайдите на MSDN, там множество экзамплов с которых вам есть чему поучится.


--------------------
user posted image
PM ICQ   Вверх
Yagmort
Дата 24.11.2010, 18:29 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 339
Регистрация: 17.6.2009

Репутация: -1
Всего: -1



Цитата(MasterOfCode @ 24.11.2010,  18:01)
Yagmort, Вижу несколько слабых мест.
Первое:
В этой строке Convert.ToDouble(Textbox3.Text) и ей подобных, может возникнуть при вставке ошибка с разностью Decimal Separator на компьютере котором выполняется приложение и в настройках БД
Второе:
Опять же на эти строки, если разделитель запятая, то необходимо число заключать в апострофы. Чтоб БД поняла ваш запрос.
Третье:
Если значение DropDownList1.Text, строка, опять же, необходимо заключить в апострофы. И так по всем остальным значениям.
Четвертое:
Не понимаю, что вы хотите сделать выполняя этот блок если в переменной zapr у вас INSERT COMMAND:
Код

SqlDataAdapter da = new SqlDataAdapter(zapr, con);
SqlCommand command = new SqlCommand(zapr,sqls);
DataSet sets = new DataSet();
da.Fill(sets, "[T_DO]");
sqls.Open();

Во первых, сначало необходимо открыть коннект к БД, а вы его открываете после того, как пытаетесь выполнить заполнение датасета.
Во вторых для заполнения датасета нужно использовать обычный select
В третьих, если все же вам необходимо заполнять значения в БД, то для этого датасет не используют, достаточно сформировать инсерт в SqlCommand и сделать ExecuteNonQuery хотя бы.


Для начала откройте книжку и почитайте. Либо зайдите на MSDN, там множество экзамплов с которых вам есть чему поучится.

Да но я же перевожу из текста в Double, а в MSSQL сервере целые числа и числа с плавающей точкой можно не заключать в апострофы... И он жалуется на 1 строку... т.е. неправильный формат ((( как мне надо тогда отослать запрос, если он не работает у меня ? Есть правильный вариант ?

Это сообщение отредактировал(а) Yagmort - 24.11.2010, 18:30
PM MAIL   Вверх
HellMasterHaiL
Дата 24.11.2010, 22:35 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 181
Регистрация: 9.8.2006
Где: Россия, МО, г. Юб илейный

Репутация: нет
Всего: 1



Сформированную строку запроса фстудию...
Есть подозрение на 
Код

"('" + Calendar1.SelectedDate.ToShortDateString() +"'" +


з.ы. если не ошибаюсь, открывть и закрывать коннекшен вручную не нужно, датасет это должен делать сам.
PM MAIL ICQ   Вверх
Yagmort
Дата 24.11.2010, 23:54 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 339
Регистрация: 17.6.2009

Репутация: -1
Всего: -1



Цитата(HellMasterHaiL @ 24.11.2010,  22:35)
Сформированную строку запроса фстудию...
Есть подозрение на 
Код

"('" + Calendar1.SelectedDate.ToShortDateString() +"'" +


з.ы. если не ошибаюсь, открывть и закрывать коннекшен вручную не нужно, датасет это должен делать сам.

строку выше написал а сформулированную он мне не выдает т.к. не выполняет до конца запрос...
PM MAIL   Вверх
Yagmort
Дата 25.11.2010, 12:23 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 339
Регистрация: 17.6.2009

Репутация: -1
Всего: -1



Цитата(MasterOfCode @ 24.11.2010,  18:01)
Yagmort, Вижу несколько слабых мест.
Первое:
В этой строке Convert.ToDouble(Textbox3.Text) и ей подобных, может возникнуть при вставке ошибка с разностью Decimal Separator на компьютере котором выполняется приложение и в настройках БД
Второе:
Опять же на эти строки, если разделитель запятая, то необходимо число заключать в апострофы. Чтоб БД поняла ваш запрос.
Третье:
Если значение DropDownList1.Text, строка, опять же, необходимо заключить в апострофы. И так по всем остальным значениям.
Четвертое:
Не понимаю, что вы хотите сделать выполняя этот блок если в переменной zapr у вас INSERT COMMAND:
Код

SqlDataAdapter da = new SqlDataAdapter(zapr, con);
SqlCommand command = new SqlCommand(zapr,sqls);
DataSet sets = new DataSet();
da.Fill(sets, "[T_DO]");
sqls.Open();

Во первых, сначало необходимо открыть коннект к БД, а вы его открываете после того, как пытаетесь выполнить заполнение датасета.
Во вторых для заполнения датасета нужно использовать обычный select
В третьих, если все же вам необходимо заполнять значения в БД, то для этого датасет не используют, достаточно сформировать инсерт в SqlCommand и сделать ExecuteNonQuery хотя бы.


Для начала откройте книжку и почитайте. Либо зайдите на MSDN, там множество экзамплов с которых вам есть чему поучится.

Код

",'" + Convert.ToDouble(Textbox7.Text) + "'" +

Ошибка при преобразовании типа данных varchar к float.
Код

"," + Convert.ToDouble("'"+Textbox4.Text+"'") + "" +

а если вот так, то Входная строка имела неверный формат.

Я сделал через функцию Replace помогло но все равно хотелось бы по другому

Это сообщение отредактировал(а) Yagmort - 25.11.2010, 13:18
PM MAIL   Вверх
Любитель
Дата 28.11.2010, 17:49 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Программист-романтик
****


Профиль
Группа: Комодератор
Сообщений: 3645
Регистрация: 21.5.2005
Где: Воронеж

Репутация: 1
Всего: 92



Цитата(Yagmort @  24.11.2010,  17:46 Найти цитируемый пост)
          "," + DropDownList1.Text + ""+
          "," + DropDownList2.Text + "" +
          "," + DropDownList3.Text + "" +
          "," + DropDownList4.Text + "" +
          "," + Convert.ToInt32(Textbox1.Text)+""+
          "," + Convert.ToInt32(Textbox2.Text)+ "" +
          "," + Convert.ToDouble(Textbox3.Text) + "" +
          "," + Convert.ToDouble(Textbox4.Text) + "" +
          "," + Convert.ToDouble(Textbox5.Text) + "" +
          "," + Convert.ToDouble(Textbox6.Text) + "" +
          "," + Convert.ToDouble(Textbox7.Text) + "" +
          "," + Convert.ToDouble(Textbox8.Text) + "" +
          "," + Convert.ToDouble(Textbox9.Text) + "" +
          "," + Convert.ToDouble(Textbox10.Text) +") GO ";

Ужас. Используйте параметризованные запросы (хотя бы) - 2010-й год на дворе всё-таки...


--------------------
PM MAIL ICQ Skype   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Прежде чем создать тему, посмотрите сюда:
stab
mr.DUDA
Exception

Используйте теги [code=csharp][/code] для подсветки кода. Используйтe чекбокс "транслит" если у Вас нет русских шрифтов.

Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, stab, mr.DUDA, Exception.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Базы данных под .NET | Следующая тема »


 




[ Время генерации скрипта: 0.0668 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.