gpt4 book ai didi

c# - OdbcConnection.GetSchema ("TABLES");不工作

转载 作者:太空宇宙 更新时间:2023-11-03 22:05:11 24 4
gpt4 key购买 nike

我猜测并非所有 SQL 都是平等创建的。我正在深入研究 C# 中的 DSN 和 ODBC 驱动程序的世界,并尝试了一下。我正在尝试获取由 DSN 定义的数据库中的所有表,我所知道的是使用 Transoft ODBC 驱动程序。我可以连接到它并使用代码取回表:

 public void ConnectToData(String dsn)
{
System.Data.Odbc.OdbcConnection conn =
new System.Data.Odbc.OdbcConnection();

//conn.ConnectionString = "FIL=MS Access;DSN=" + dsn;
conn.ConnectionString = "DSN=" + dsn; //dsn equals "Company_Shared"
try
{
conn.Open();
MessageBox.Show("Connected!");
lstBoxLogs.Items.Add("Connected");
DataTable tableschema = conn.GetSchema("TABLES");
DataSet set = tableschema.DataSet;
// first column name
for (int i = 0; i < tableschema.Columns.Count; i++)
{
lstBoxLogs.Items.Add(tableschema.Columns[i].ColumnName);
}

lstBoxLogs.Refresh();
MessageBox.Show(tableschema.Columns.Count + " tables found");
}
catch (Exception ex)
{
MessageBox.Show("Failed to connect to data source: " + ex.GetBaseException().Message);
}
finally
{
conn.Close();
}
}

它连接正常,并报告表但不是我知道我在数据库中寻找的表,返回如下:

TABLE_QUALIFIER表所有者TABLE_NAMETABLE_TYPE备注

我不确定如何从这些信息中获取实际的表名,所以我只能转储每个表中的所有数据(这就是我想要做的)。这是不是因为我必须仔细阅读 transsoft 数据库使用的 SQL 类型,它是否使 conn.GetSchema("TABLES"); 调用无用?

最佳答案

这行得通吗?

using(DataTable tableschema = conn.GetSchema("TABLES"))
{
// first column name
foreach(DataRow row in tableschema.Rows)
{
lstBoxLogs.Items.Add(row["TABLE_NAME"].ToString());
}
}

编辑:修复了不使用数据集的代码。

编辑:为 future 的读者更新了代码,以实现处理 DataTable 的最佳实践。

关于c# - OdbcConnection.GetSchema ("TABLES");不工作,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8695349/

24 4 0