powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / MySQL [игнор отключен] [закрыт для гостей] / Insert
12 сообщений из 12, страница 1 из 1
Insert
    #33483152
Vi4k@
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Есть таблица
Books (bID, bName, bYear, bEx, bclID, bHistory)

в Делфи интерфейс. В обработчие Инсерт:

авторprocedure TForm2.DataSetInsert1Execute(Sender: TObject);
var s:string;
begin
SqlCommand('begin');

SqlCommand('INSERT INTO Books (bID,bName,bYear,bEx,bclID,bHistory) VALUES (NULL,'+trim(Edit1.Text)+','+trim(Edit2.Text)+','+trim(Edit3.Text)+','+trim(Edit4.Text)+','+trim(Edit5.Text)+')');
//ActionsBlock(true);
end;

Числа из Edit нормально вставляет, на попытку вставить строку пишет: "Unknown column [текст из Edit] in field list"
аццтой какой-то... помогите!!!

з.ы.
bID - автоинкремент
...
Рейтинг: 0 / 0
Insert
    #33483163
Фотография Хрен
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
а ты не мог бы сначала сформировать sql строку и вывести ее на экран, а уже потом ее скормить в sqlcommand?

привел бы полностью тут sql выражение, может что-нибудь прояснилось бы
...
Рейтинг: 0 / 0
Insert
    #33483164
Фотография Хрен
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
бе, ты последнее поле без кавычек вставляешь, а оно по смыслу - текстовое.
...
Рейтинг: 0 / 0
Insert
    #33483170
Vi4k@
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Хренбе, ты последнее поле без кавычек вставляешь, а оно по смыслу - текстовое.

такие вот типы:

create table Books (bID int NOT NULL AUTO_INCREMENT, bName char (100), bYear int, bEx int, bclID smallint, bHistory text, PRIMARY KEY (bID));

А кавычки куда?
...
Рейтинг: 0 / 0
Insert
    #33483236
Фотография Dinky
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
двойные кавычки можно использовать?
Код: plaintext
1.
(NULL,"+trim(Edit1.Text)+","+trim(Edit2.Text)+","+trim(Edit3.Text)+","+trim(Edit4.Text)+",'"+trim(Edit5.Text)+"')");

--
Dmitry
...
Рейтинг: 0 / 0
Insert
    #33483262
Фотография Хрен
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Vi4k@ Хренбе, ты последнее поле без кавычек вставляешь, а оно по смыслу - текстовое.

такие вот типы:

create table Books (bID int NOT NULL AUTO_INCREMENT, bName char (100), bYear int, bEx int, bclID smallint, bHistory text, PRIMARY KEY (bID));

А кавычки куда?

Вокруг значения для bName и значения для bHistory
...
Рейтинг: 0 / 0
Insert
    #33483291
Vi4k@
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Большое всем спасибо!!! И простите за беспокойство. Я учусь пока и первый раз пишу на Delphi, раньше - на C++ Builder. Там с кавычками все иначе...

Сейчас я все варианты перебрала, благо их 4. Работает вот так " '
а если просто ", он воспринимает выражение как текст.

THANX
...
Рейтинг: 0 / 0
Insert
    #33484903
Фотография Валентин К
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Напиши функцию преобразования типов, чтобы не путаться с кавычками :)
Для любителей Delphi+MySQL такой примерчик :)

Код: 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.
function VarToSQL(AValue:Variant):string;
begin
  case VarType(AValue) of
    varString,varUnknown,varStrArg:Result:=''''+VarToStr(AValue)+'''';
    varSmallint,varInteger,varInt64,varWord,varLongWord:Result:=VarAsType(AValue,varInteger);
    varEmpty,varNull:Result:='NULL';
    varDouble,varCurrency:Result:=FloatForAccess(AValue);
    varDate:Result:=DateForMySQL(AValue);
  else
    Result:='NULL';
  end;
end;

где
Function FloatForAccess(N:Variant):String;
var s:string;
    i:integer;
begin
if VarIsNull(N) then begin
 Result:='NULL';
 exit;
 end;
s:=FloatToStr(N);
For i:= 1  to Length(S) do begin
    if s[i]=',' then s[i]:='.';
    end;
Result:=s;
end;

и
function DateForMySQL(D:Variant):string;//Под мускул
begin
if VarIsNull(D) then begin
 Result:='NULL';
 exit;
 end;
Result:=''''+FormatDateTime('yyyy"."mm"."dd',D)+'''';
end;
...
Рейтинг: 0 / 0
Insert
    #33484910
Фотография Валентин К
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Только оптимизируйте замену запятой на точку для DOUBLE...
...
Рейтинг: 0 / 0
Insert
    #33485014
Vi4k@
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
хм... я просто использовала quotedstr, чтоб не париться, а так прикольно )))
...
Рейтинг: 0 / 0
Insert
    #33485149
Фотография Валентин К
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Vi4k@хм... я просто использовала quotedstr, чтоб не париться, а так прикольно )))
Для дат и double ???
...
Рейтинг: 0 / 0
Insert
    #33485156
Фотография Валентин К
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Модуль SysUtils

function QuotedStr(const S: string): string;
var
I: Integer;
begin
Result := S;
for I := Length(Result) downto 1 do
if Result = '''' then Insert('''', Result, I);
Result := '''' + Result + '''';
end;
...
Рейтинг: 0 / 0
12 сообщений из 12, страница 1 из 1
Форумы / MySQL [игнор отключен] [закрыт для гостей] / Insert
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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