将SQL数据库数据转换为数组

时间:2017-03-20 11:02:13

标签: sqlite pascal lazarus

我目前有一个程序连接到数据库并在DBGrid上显示数据,但我需要提取这些数据,以便我可以在另一个算法中使用它。

当我使用命令时:从测验中选择分数

它显示屏幕上的值。 (23,55,64)

如何将这些值放入数组中以便

[0]=23
[1]=55
[2]=64 

提前致谢。

1 个答案:

答案 0 :(得分:0)

最好使用TList(这是一个数组包装器对象)。以下是我使用的一些代码的摘录。 TSomeRect是用于存储每行的字段数据的记录。

function CreateQuery(pConnection: Tsqlconnection; pTransaction: TSQLTransaction): TSQLQuery;
begin
  result := TSQLQuery.Create(nil);
  result.Database := pConnection;
  result.Transaction := pTransaction
end;
var
 connect: TSQLite3Connection;
 SQLQuery1: TSQLQuery;
 transact: TSQLTransaction;
 Query        : TSQLQuery;

 lst :TList<TSomeRect>;
  rec :TSomeRect;
begin

 lst :=TList<TSomeRect>.create;
 connect:=TSQLite3Connection.create(nil);

 connect.LoginPrompt := False;
 connect.DatabaseName := 'c:\path\to\database.sqlite';
 connect.KeepConnection := False;
 transact:=TSQLTransaction.create(nil);
 transact.action:=caNone;
 transact.database:=connect;
 connect.Transaction:=transact;

 Query := CreateQuery(Connect, Transact);
 Query.SQL.Text := 'select * from table';
 Connect.Open;
 Query.Open;
 while not Query.Eof do
  begin
     rec.field1:= Query.FieldByName('field1').AsInteger; 
     rec.field2:= Query.FieldByName('field2').Asstring; 
     lst.add(rec);
     Query.Next;
  end;
 Query.Close;
 Connect.Close;
 Query.Free;
 Transact.Free;
 Connect.Free;