DELPHI版SQLITE数据库 增加BLOB参数

const

dtInt = 1;
dtNumeric = 2;
dtStr = 3;
dtBlob = 4;
dtNull = 5;

TSQliteParam = class
public
name: string;
valuetype: integer;
valueinteger: int64;
valuefloat: double;
valuedata: string;
valueblob: TBytes;
end;

procedure TSQLiteDB.AddParamBlob(name: string; value: TBytes);
var
par: TSQliteParam;
begin
par := TSQliteParam.Create;
par.name := name;
par.valuetype := SQLITE_BLOB;
par.valueBlob := value;
fParams.Add(par);
end;

procedure TSQLiteDB.SetParams(Stmt: TSQLiteStmt);
var
n: integer;
i: integer;
par: TSQliteParam;
iSize: integer;
ptr: pointer;
Name:AnsiString;
begin
try
for n := 0 to fParams.Count - 1 do
begin
par := TSQliteParam(fParams[n]);
Name:=par.name;
i := sqlite3_bind_parameter_index(Stmt, PAnsiChar(AnsiString(par.name)));
if i > 0 then
begin
case par.valuetype of
SQLITE_INTEGER:
sqlite3_bind_int64(Stmt, i, par.valueinteger);
SQLITE_FLOAT:
sqlite3_bind_double(Stmt, i, par.valuefloat);
SQLITE_TEXT:
sqlite3_bind_text(Stmt, i, PAnsiChar(Utf8String(par.valuedata)), length(Utf8String(par.valuedata)), SQLITE_TRANSIENT);
SQLITE_BLOB:begin
iSize:= Length(par.valueblob);
GetMem(ptr,iSize);
Move(Pbyte(@par.valueblob[0]),ptr,iSize);
SQLite3_Bind_Blob(stmt, i, ptr, iSize, @DisposePointer);
end;
SQLITE_NULL:
sqlite3_bind_null(Stmt, i);
end;
end;
end;
finally
ParamsClear;
end;
end;
{{{}}}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值