如何在delphi/interbase中使用string作为blob进行插入查询

oka*_*ami 0 delphi string interbase blob

我想做一个查询插入:

插入A_TABLE(BLOB_FIELD)值(MY_BLOB_VAL)

但我在exphi中只有字符串值,例如:

procedure INSERT_BLOB_QUERY
  var
    query:String;
    my_blob_val:String;
begin
   my_blob_val := 'a blob string to be inserted';
   query := 'INSERT INTO A_TABLE (BLOB_FIELD) VALUES(' + my_blob_val + ')';
   // to execute a query....
end;
Run Code Online (Sandbox Code Playgroud)

出现的问题是字符串到blob的转换.

那么如何在interbase blob字段中插入一个字符串?

Cos*_*und 5

像这样:

procedure INSERT_BLOB_QUERY;
begin
  query.SQL.Text := 'INSERT INTO A_TABLE (BLOB_FIELD) VALUES (:VAL)';
  query.ParamByName('VAL').AsString := 'a blob string to be inserted';
end;
Run Code Online (Sandbox Code Playgroud)

您的代码不起作用,因为您没有将字符串作为参数传递,您将其作为查询的一部分传递.如果你这样做,你显然需要QUOTE它:你正在做的方式Interbase将尝试将其解释为SQL命令,而不是作为要插入db列的文字字符串.

尽管如此,不要去引用.使用参数总是更好,它更安全!