在Smart Mobile Studio的sqlite INSERT语句中使用params?

时间:2017-12-04 14:43:02

标签: smart-mobile-studio

我创建了以下数据库

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

如何在sqlite INSERT语句中使用params。

例如,我认为它会是这样的

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,而是执行createstatement,分配sql和params,然后执行?

e.g。

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');");

但是,我需要能够使用params

也尝试使用格式化功能但仍无法正常工作

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

1 个答案:

答案 0 :(得分:0)

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