我使用這個SQL命令來獲得列名獲取列名:德爾福(dbExpress的)
select COLUMN_NAME from
INFORMATION_SCHEMA.COLUMNS
where TABLE_NAME = 'MyTableName'
,但我不知道我怎樣才能使用執行SQL命令的結果!
例如,這種方式行不通提取列名作爲一個字符串值,我得到這個錯誤=不支持的操作:
for i := 1 to Qry1.RecordCount do
begin
end;
我使用這個SQL命令來獲得列名獲取列名:德爾福(dbExpress的)
select COLUMN_NAME from
INFORMATION_SCHEMA.COLUMNS
where TABLE_NAME = 'MyTableName'
,但我不知道我怎樣才能使用執行SQL命令的結果!
例如,這種方式行不通提取列名作爲一個字符串值,我得到這個錯誤=不支持的操作:
for i := 1 to Qry1.RecordCount do
begin
end;
像這樣的一個TADOQuery工作(不知道如果它不同於dbExpress):
Qry1.Open;
while not Qry1.Eof do begin
// do whatever with Qry1.Fields[0].AsString here
Qry1.Next;
end;
Qry1.Close;
從我所瞭解的你無法檢索到的retults。
Qry1.First;
while not Qry1.Eof do
begin
X := Qry1.FieldByName('column_name').AsString;
Qry1.Next;
end;
這是一段代碼,它一直爲我
或者你也可以閱讀此鏈接這解釋了爲什麼會拋出異常調用.RecordCount(http://edn.embarcadero.com/article/28494)
時總結它的工作它建議你的查詢是區分大小寫的,你應該檢查表名(MyTableName)
另一種方法可以做到這一點是查詢表本身獲得一個空的數據集,然後循環遍歷字段數據等。
查詢像這樣將它返回沒有記錄表的結構:
Qry1.SQL.Text := 'SELECT * FROM MyTableName WHERE 1<>1';
Qry1.Open;
而且像這樣的循環將在各字段
for I := 0 to Qry1.FieldCount-1 do
begin
X := Qry1.Fields[I].FieldName;
// and do whatever you want with X
end;
同意羅布麥克唐納迭代,爲了列出一個字段的列名稱,我會使用 在我的代碼中,我寫了這樣的東西
Procedure blablabla;
var i:integer;
begin
..... {some code here}
SQLQuery1.Open;
for i := 0 to SQLQuery1.FieldCount-1 do
begin;
Memo1.Lines.Append(SQLQuery1.Fields[i].DisplayName);
end;
SQLQuery1.Close;
.... {some code here}
end;
X總會有第一行的值。 no。有下一個電話 – zz1433 2010-07-26 18:18:24
不,X會有列名稱。這就是原始問題所要求的。 – 2010-07-27 13:52:28