2017-03-20 1 views
0

현재 데이터베이스에 연결하고 DBGrid에 데이터를 표시하는 프로그램이 있지만 다른 알고리즘에서 사용할 수 있도록이 데이터를 추출해야합니다. 내가 명령을 사용할 때SQL 데이터베이스 데이터를 배열로

는 : 퀴즈

에서 선택 점수를이 화면의 값을 보여줍니다. (23,55,64)

어떻게 배열에이 값을받을 수 있나요 때문에 사전에

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

감사이.

+3

기존 코드를 표시하십시오. –

+0

잘못된 방법으로 문제를 생각하고 있습니다. TDBGrid는 데이터베이스에서 데이터를 표시하기위한 gui 객체 일뿐입니다. 그리드를 채우는 데 사용하는 TDataSet- 자손 객체가 있어야합니다. – MartynA

답변

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; 
관련 문제