Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > .NET Frameworks (точка нет фреймворки) > C# (си шарп)
Регистрация

Восстановить пароль

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 07.12.2014, 15:49   #1
nikolayshumataev
Новичок
Джуниор
 
Регистрация: 07.12.2014
Сообщений: 3
По умолчанию INSERT INTO не добавляет данные в таблицу dataGridView

Здравствуйте. Помогите пожалуйста. У меня выходит ошибка при добавлении данных из текст боксов в таблицу
Необработанное исключение типа "System.Data.OleDb.OleDbExcepti on" в System.Data.dll
Дополнительные сведения: Ошибка синтаксиса в инструкции INSERT INTO.


Код:

string t1 = textBox1.Text;
            string c1 = comboBox1.Text;
           string d1 = textBox6.Text;       
            string t2 = textBox2.Text;
            string t3 = textBox3.Text;
            string t4 = textBox4.Text;
            string t5 = textBox5.Text;
      
          //Счетчик        
            for (int i = 0; i < dataGridView1.RowCount; i++)
                for (int j = 0; j < 1; j++)
                {           
                    id = 0; 

                    if (id < Convert.ToInt32(dataGridView1.Rows[i].Cells[j].Value))
                    {
                        IdRow += 1;
                    }
                    else
                    {
                        id = IdRow;
                        IdRow = IdRow + 1;
                    }
                
                }


           
            //запись данных в таблицу
         Подключение.Open();
            string Команда = string.Format("INSERT INTO Справочник" +
                "(Код, Справочник,Дата выпуска, Категория,Разработчик, Версия, Компания, Логотип)" +
         "Values('{0}','{1}','{2}','{3}', '{4}', '{5}', '{6}','{7}')", IdRow, t1, d1, c1, t2, t3, t4, t5);
            
            using (OleDbCommand добавление = new OleDbCommand(Команда, this.Подключение))
            {
                добавление.ExecuteNonQuery();
            }
            MessageBox.Show("Запись добавлена");
            Подключение.Close();

Последний раз редактировалось Stilet; 07.12.2014 в 16:19. Причина: случайно нажал enter
nikolayshumataev вне форума Ответить с цитированием
Старый 07.12.2014, 16:19   #2
Alex11223
Старожил
 
Аватар для Alex11223
 
Регистрация: 12.01.2011
Сообщений: 19,500
По умолчанию

Наверно пробел перед Values нужен.
А чего все значения в ''? Они все строки что ли?


И не используйте русские имена в коде (да и в названиях таблиц и столбцов в БД я б тоже не использовал), чтоб не удивлять других людей. Да и не удобно ж это, переключать язык постоянно.
Ушел с форума, https://www.programmersforum.rocks, alex.pantec@gmail.com, https://github.com/AlexP11223
ЛС отключены Аларом.

Последний раз редактировалось Alex11223; 07.12.2014 в 16:28.
Alex11223 вне форума Ответить с цитированием
Старый 07.12.2014, 16:56   #3
nikolayshumataev
Новичок
Джуниор
 
Регистрация: 07.12.2014
Сообщений: 3
По умолчанию Insert into

Цитата:
Сообщение от Alex11223 Посмотреть сообщение
Наверно пробел перед Values нужен.
А чего все значения в ''? Они все строки что ли?


И не используйте русские имена в коде (да и в названиях таблиц и столбцов в БД я б тоже не использовал), чтоб не удивлять других людей. Да и не удобно ж это, переключать язык постоянно.
На счет русских имен учту. Пробел мне кажется не важен...я только побывал такая же проблема.
А чего все значения в ''? Они все строки что ли? я по аналогии делал
Вот с этого сайта взял professorweb.ru/my/ADO_NET/base/level1/1_7.php
public void InsertAuto(int id, string color, string make, string petName)
{
// Оператор SQL
string sql = string.Format("Insert Into Inventory" +
"(CarID, Make, Color, PetName) Values('{0}','{1}','{2}','{3}')", id, make, color, petName);
using (SqlCommand cmd = new SqlCommand(sql, this.connect))
{
cmd.ExecuteNonQuery();
}
}
nikolayshumataev вне форума Ответить с цитированием
Старый 07.12.2014, 17:26   #4
Alex11223
Старожил
 
Аватар для Alex11223
 
Регистрация: 12.01.2011
Сообщений: 19,500
По умолчанию

Ну дык это зависит от того какие типы данных у столбцов в БД. Если строка, то надо '', если число, не надо.

А вообще лучше используйте prepared statement вместо String.Format или конкатенации строк, заодно и SQL инъекций не будет
http://en.wikipedia.org/wiki/Prepare...t#C.23_ADO.NET
Ушел с форума, https://www.programmersforum.rocks, alex.pantec@gmail.com, https://github.com/AlexP11223
ЛС отключены Аларом.
Alex11223 вне форума Ответить с цитированием
Старый 09.12.2014, 14:14   #5
nikolayshumataev
Новичок
Джуниор
 
Регистрация: 07.12.2014
Сообщений: 3
По умолчанию

Цитата:
Сообщение от Alex11223 Посмотреть сообщение
Ну дык это зависит от того какие типы данных у столбцов в БД. Если строка, то надо '', если число, не надо.

А вообще лучше используйте prepared statement вместо String.Format или конкатенации строк, заодно и SQL инъекций не будет
http://en.wikipedia.org/wiki/Prepare...t#C.23_ADO.NET
Спасибо за ответ ) Вообщем я нашел другое решение)
//Запись данных в таблицу
Подключение.Open();
var Command = new OleDbCommand ("INSERT INTO Справочник([Код],[Справочник],[Дата выпуска],[Категория],[Разработчик],[Версия],[Компания],[Логотип]) VALUES" +
"('" + IdRow + "','" + t1 + "','" + d1 + "','" + c1 + "','" + t2 + "','" + t3 + "','" + t4 + "','" + t5 + "')");

Command.Connection = Подключение;
Command.ExecuteNonQuery();
Подключение.Close();
MessageBox.Show("Запись добавлена");
nikolayshumataev вне форума Ответить с цитированием
Старый 09.12.2014, 14:41   #6
Alex11223
Старожил
 
Аватар для Alex11223
 
Регистрация: 12.01.2011
Сообщений: 19,500
По умолчанию

Однако оно ни чем не лучше, только читать сложнее, чем с форматом было.

И да, у вас видимо проблема была в пробелах в названиях столбцов, надо в [] заключать тогда.
Ушел с форума, https://www.programmersforum.rocks, alex.pantec@gmail.com, https://github.com/AlexP11223
ЛС отключены Аларом.
Alex11223 вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Работа с SQL запросами INSERT, UPDATE, DELETE в DataGridView SERG1990 Базы данных (ADO.NET, LinqToSql, ORM Entity Framework, NHibernate) 2 15.12.2012 13:46
dataGridView(свойство которое автоматически добавляет строки) skanku C# (си шарп) 2 21.05.2012 21:20
IE добавляет свои данные при использовании jQuery Arassir JavaScript, Ajax 2 22.09.2011 08:22
ComboBox.Insert в таблицу линка id-шников. igsxor БД в Delphi 1 11.09.2011 22:02
UPDATE, INSERT, DELETE в DataGridView C# Ramirag Помощь студентам 3 04.09.2011 13:24