我使用ado组件连接到ms sql数据库。我知道如何在db grid中显示查询结果。但我想将结果存储为数组中的字符串,例如。 这是可能的还是有另一种方法来使用查询结果?
答案 0 :(得分:1)
没有直接的方法,但我使用AdoQuery.Recordset.GetString将记录作为字符串,这是我用来将数据导出到CSV文件的示例。
procedure TForm2.btnExportClick(Sender: TObject);
var
Sl :TStringList;
S :string;
begin
if SaveDialog1.Execute then
begin
try
Sl := TStringList.Create;
qryExport.First;
if chkFields.Checked then
Sl.Add(GetFields(qryExport));
Sl.Add(qryExport.Recordset.GetString(2,-1,';'
,#13#10,'(Null)'));
Sl.SaveToFile(SaveDialog1.FileName);
finally
Sl.Free;
end;
end;
end;
function TForm2.GetFields(qry: TADOQuery): string;
var
I : Integer;
S : string;
begin
S := '';
for I := 0 to qry.Fields.Count - 1 do
S := S + qry.Fields[I].FieldName + ';';
Result := S;
end
答案 1 :(得分:1)
您可以按代码访问任何结果字段。数据集包含所有记录,但您必须在代码中浏览每个记录:
// navigate to the first record in the set
ADODataset1.first;
// while the dataset is NOT empty ...
while not ADODataset1.eof do
begin
// process a field
sValue := ADODataset1.FieldByName('fieldname').AsString;
DoSomething(sValue);
// move the cursor to the next record
ADODataset1.Next;
end;
答案 2 :(得分:1)
您可以使用ADORecordSet.GetRows将数据导入数组。这是ASP中加速页面加载的常见做法 - 而不是通过记录集循环,将数据放入数组,关闭记录集,然后循环数组以显示内容。我认为也可以在Delphi中应用,并取得成功。
var ... TableContents : OleVariant; ... begin ... ADORecordSet.Open('select * FROM MyTable', ADOConnection, adOpenForwardOnly, adLockReadOnly, adCmdText); TableContents := ADORecordSet.GetRows(adGetRowsRest,EmptyParam,EmptyParam); someText := TableContents[1,1]; ... end;
希望它有所帮助。
答案 3 :(得分:0)
我认为您必须自己编写代码来解析记录集并将值放入数组中。