Gam*_*ing 7 .net odbc db-schema
我想从OdbcConnection获取所有"表"名称,并且对于所有"表"名称,我想要接收所有列名.
所以我遇到了OdbcConnection.GetSchema()功能性问题.我只需使用即可获得所有表名connection.GetSchema("Tables").但现在我想获取这些表的列信息.我注意到connection.GetSchema("Columns")会给我列信息,但这只是从数据源中的随机/第一个(?)"表"(使用Windows CSV驱动程序)中提供它,这没有帮助.
最具挑战性的部分是,必须与任何(大多数)ODBC驱动程序一起使用.我不知道将使用哪个底层数据源.
有任何想法吗?
列架构将返回所有表
cn.GetOleDbSchemaTable(OleDbSchemaGuid.Columns,
new Object[] { null, null, null, null });
Run Code Online (Sandbox Code Playgroud)
或者是一张桌子
cn.GetOleDbSchemaTable(OleDbSchemaGuid.Columns,
new Object[] { null, null, "table1", null });
Run Code Online (Sandbox Code Playgroud)
同样的,
columns = cn.GetSchema("Columns");
Run Code Online (Sandbox Code Playgroud)
返回所有表中的所有列.
更多信息:架构限制
编辑重新评论
string cs = @"Driver={Microsoft Text Driver (*.txt; *.csv)};DBQ=z:\docs;";
OdbcConnection cn = new OdbcConnection(cs);
cn.Open();
DataTable tables = cn.GetSchema("Tables");
DataTable columns = cn.GetSchema("Columns");
foreach (DataRow row in columns.Rows)
{
Console.WriteLine(row["COLUMN_NAME"].ToString());
Console.WriteLine(row["TABLE_NAME"].ToString());
}
Console.Read();
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
15202 次 |
| 最近记录: |