每次调用SQLDB查询准备sql

时间:2016-06-22 17:41:58

标签: sql firebird freepascal

休斯顿我们遇到了问题!

嗨伙计们,我正在尝试提高应用的性能。我试图做的只是准备一次sql语句,之后只需更改要执行的参数即可。没有准备另一个时间。

为此我写了这段代码。它运行!

// Show Items' Note
  If not DataModule_SmCube.SQLQuery_Notes.Prepared Then
  Begin
    // Se o campo note possuir até 8190 bytes, retorna como Varchar, caso contrário como Blob - Gambiarra Carlos H. Cantú
    DataModule_SmCube.SQLQuery_Notes.ReadOnly:=True;
    DataModule_SmCube.SQLQuery_Notes.SQL.Clear;
    DataModule_SmCube.SQLQuery_Notes.SQL.Add('SELECT sourceItemID, iif(octet_length(items.note) <= 8190, cast(items.note as varchar(8190)),null) as blob_txt, iif(octet_length(items.note) > 8190, items.note, null) as blob_blob FROM items WHERE item = :item;');
    DataModule_SmCube.SQLQuery_Notes.Prepare;
  End;
  DataModule_SmCube.SQLQuery_Notes.Close;
  DataModule_SmCube.SQLQuery_Notes.Params.ParamByName('item').AsString := Main.GridView_Notes.Columns.Items[0].Field.Text;
  DataModule_SmCube.SQLQuery_Notes.Open;

但是当我跟踪服务器活动时(使用FB Tracemanager),我看到每次打开查询时它都会自动准备它。

我错过了什么?我需要做些什么才能改变这种行为?这是组件问题吗?我使用SQLdb本机lazarus组件1.6 + Free pascal 3.0

P.S。如果我不调用Close和Open过程,则查询不会更新...

0 个答案:

没有答案