Использование параметров в выражении INSERT sqlite в Smart Mobile Studio?

Я создал следующую базу данных

SqlResult := fDataBase.Exec("CREATE TABLE workstations (workstation string, location string, userId string);");

Как вы используете params в выражении INSERT sqlite.

Например, я предполагаю, что это будет что-то как таковое

FDatabase.Exec("INSERT INTO workstations values(?,?,?);", [AWorkstation, ALocation, AUserId]);

Тем не менее, Exec принимает только строку........ так что я должен на самом деле собрать всю строку, чтобы включить параметры?

FDatabase.Exec("INSERT INTO workstations values( + AWorkstation + ',' + ALocation + ',' +  AUserId +');" );

Я спрашиваю, почему

TSQLiteDatabase имеет функцию CreateStatement, которая возвращает

Класс TSQLiteStatement

который имеет свойство SQL & Params

и следующие методы

подготовить выполнить релиз

вместо того, чтобы вызывать exec для баз данных, я вместо этого создаю утверждение, назначаю sql и params, а затем выполняю?

например

stm:= fDatabase.CreateStatement;
stm.SQL:= ?
stm.Params:=  ?
stm.execute;

я даже пытался

FDatabase.Exec('INSERT INTO workstations (workstation, location, userid) values(' + AWorkstation + ',' + ALocation + ',' +  AUserId +');');

Если я жестко закодировал значения, это работает

FDatabase.Exec("INSERT INTO workstations (workstation, location, userid) values('WS0202', 'Maintenance', 'jdoe');");

но мне нужно иметь возможность использовать параметры

также пробовал это с функцией форматирования и до сих пор не работает

FDatabase.Exec(Format("INSERT INTO workstations (workstation, location, userid) values(%s ,%s, %s );", [AWorkstation, ALocation, AUserId]));

1 ответ

FDatabase.Exec(Format("INSERT INTO workstations (workstation, location, userid) values('%s' ,'%s', '%s');", [AWorkstation, ALocation, AUserId]));
Другие вопросы по тегам