2
使用Visual Fox Pro ODBC驅動程序(和OLE DB)時出現的問題是,我用來動態獲取DBF表的所有列名的代碼適用於小數據集。但是,如果我嘗試使用下面的代碼獲取表模式來獲取大表,那麼獲取模式可能需要60秒。從Visual FoxPro動態獲取Schema的速度問題數據源
OdbcConnection conn = new OdbcConnection(@"Dsn=Boss;sourcedb=u:\32BITBOSS\DATA;sourcetype=DBF;exclusive=No;backgroundfetch=Yes;collate=Machine;null=Yes;deleted=Yes");
OdbcCommand cmd = new OdbcCommand("Select * from " + listBox1.SelectedItem.ToString(), conn);
conn.Open();
try
{
OdbcDataReader reader = cmd.ExecuteReader();
DataTable dt = reader.GetSchemaTable();
listBox2.Items.Clear();
foreach (DataRow row in dt.Rows)
{
listBox2.Items.Add(row[0].ToString());
}
conn.Close();
}
catch (Exception ex)
{
Console.WriteLine(ex.ToString());
conn.Close();
}
現在我得到的,這是由於選擇命令拖動全部500000條記錄成左右的數據讀取器,然後才能然後提取的列名。但視覺狐狸親是在限制記錄回報相當垃圾。
我理想情況下想將返回限制爲只有1條記錄,但假設我不知道任何列名使用WHERE子句,這是行不通的。
VFP可以利用TOP SQL命令,但是要做到這一點,你需要一個ORDER BY來使用它,並且由於我沒有要使用的任何列名,所以這也不起作用。
所以我有點難住,試圖想出一個聰明的方式來動態獲取表架構,而不會在VFP中減速。
我不認爲動態數據庫轉換會更快。任何人有任何聰明的想法(除了改變數據庫系統,它在工作中繼承,我目前必須使用:))?