Плиз, Хелп! Создание (INSERT) новых записей в таблице(Builder C++ и MySQL)
Пишу приложение на Builder C++, БД - MySQL...
Вопрос такой: как лучше всего забить данные в таблицу, например, из полей Edit1?
Поясню: Создадим форму, кинем на нее два эдита и кнопку ("Добавить"). У нас есть в базе таблица из двух полей, в которые нужно добавлять данные из полей Edit1 и Edit2 по нажатию кнопки. (Что может быть проще):)
Обычно я делаю так: Создаю ADOQuery, делаю запрос
ADOQuery1->SQL->Text="SELECT * FROM table1";
ADOQuery1->Open();
Затем пишу:
ADOQuery1->Insert
...->FieldValue["row1"]=Edit1->Text;
...
ADOQuery1->Post
Все нормально получается. А теперь пробую так
(вместо проделанного выше):
ADOQuery1->SQL->Text="INSERT INTO `Table1` (`row1`, `row2`) VALUES ('"+Edit1->Text+"', '"+Edit2->Text+"')";
ADOQuery1->ExecSQL();
И нифига не работает:{
Выдает ошибку: "бла бла бла... an Error in SQL sintax ... 'я`' at line 1 "
Откуда там 'я' взялось не пойму
А тотже запрос в БД палит.
Че делать???
Или плюнуть на запросы и делать через ADOQ..->Insert ?
А может еще способы есть по-лучше?;)
Вообщем, помогите, кто чем может! :)
И кстати посмотри в отладчике текст sql-запроса..
И в каком столбце ошибка.. Оч похоже на грамматическую
Проверь, может просто тип данных не совпадает.
И кстати посмотри в отладчике текст sql-запроса..
И в каком столбце ошибка.. Оч похоже на грамматическую
Вся фишка вот в чем: откроем MySQLCC (Control Center)и напишем там простенький SQL-запрос: INSERT INTO `Spec` (`id_spec`, `s_name`) VALUES (NULL, '') - выполнить, ГОТОВО! Создается новая строка в таблице Spec.. Т.к. поле id_spec - autoincrement - оно содержит цифру, а второе просто пустое. Теперь копирую этот запрос в ADOQuery->SQL->Text="..."; И... облом:( Толи я ЕБ..утый, толи лыжи не едутX)-
Кстати, почему-то с запроами SELECT такой херни ВООБЩЕ НЕ ВОЗНИКАЕТ:!!!:
ADOQuery1->Close();
ADOQuery1->SQL->Clear();
ADOQuery1->SQL->Add("Delete from Country where Name = 'Argentina'");
ADOQuery1->ExecSQL();
Вся фишка вот в чем: откроем MySQLCC (Control Center)и напишем там простенький SQL-запрос: INSERT INTO `Spec` (`id_spec`, `s_name`) VALUES (NULL, '') - выполнить, ГОТОВО! Создается новая строка в таблице Spec.. Т.к. поле id_spec - autoincrement - оно содержит цифру, а второе просто пустое. Теперь копирую этот запрос в ADOQuery->SQL->Text="..."; И... облом:( Толи я ЕБ..утый, толи лыжи не едутX)-
Кстати, почему-то с запроами SELECT такой херни ВООБЩЕ НЕ ВОЗНИКАЕТ:!!!:
погоди, если id_spec у тебя инкремент (скорее всего ключ таблицы), то и не трогай его. оно само ... производится :).
делай
sql_text = "insert into spec (s_name) values ('"+ edit1->Text + "')" ;
погоди, если id_spec у тебя инкремент (скорее всего ключ таблицы), то и не трогай его. оно само ... производится :).
делай
sql_text = "insert into spec (s_name) values ('"+ edit1->Text + "')" ;
Спасибо, ребята! Буду пробовать... И еще такой вопрос: как в Builder'е сделать соединение строк... Т.е. в Delphi так:
str:string;
str:='первая строка'+
+', а это вторая';
Работает и на выходе получается цельная строчка
-> первая строка, а это вторая
Теперь пробую в Билдере:
AnsiString str;
str = "первая строка"+
+", а это вторая";
компилятор выводит ошибку...
Короче говоря, как в Builder C++ сделать конкатенацию строк, а не лепить все в одну длиной в поезд?;)
Спасибо, ребята! Буду пробовать... И еще такой вопрос: как в Builder'е сделать соединение строк... Т.е. в Delphi так:
str:string;
str:='первая строка'+
+', а это вторая';
Работает и на выходе получается цельная строчка
-> первая строка, а это вторая
Теперь пробую в Билдере:
AnsiString str;
str = "первая строка"+
+", а это вторая";
компилятор выводит ошибку...
Короче говоря, как в Builder C++ сделать конкатенацию строк, а не лепить все в одну длиной в поезд?;)
поставь один плюс
AnsiString str;
str = "первая строка" + ", а это вторая";
или на худой конец используй знак & (но это немного другое...)
Спасибо, ребята! Буду пробовать... И еще такой вопрос: как в Builder'е сделать соединение строк... Т.е. в Delphi так:
str:string;
str:='первая строка'+
+', а это вторая';
Работает и на выходе получается цельная строчка
-> первая строка, а это вторая
Теперь пробую в Билдере:
AnsiString str;
str = "первая строка"+
+", а это вторая";
компилятор выводит ошибку...
Короче говоря, как в Builder C++ сделать конкатенацию строк, а не лепить все в одну длиной в поезд?;)
Нужно вот так:
Where ([Uslovie] = 1) \
And ([Uslovie2] = 2)";
Попробуй!
OraQuery1->Close();
OraQuery1->SQL->Clear();
OraQuery1->SQL->Add( s );
OraQuery1->ExecSQL();
OraQuery1->SQL->Clear();
OraQuery1->SQL->Add( "select * from TEST1" );
OraQuery1->Open();