Использование параметров в выражении 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]));