好吧,我知道这个案例已经在网上讨论过了,但是我还是不明白。
到目前为止,这是我的搜索结果:
"SELECT table_name AS Name FROM INFORMATION_SCHEMA.Tables WHERE TABLE_TYPE = 'BASE TABLE'";
在此SQL代码中,我以为INFORMATION_SCHEMA
是数据库名称,而当我执行代码(当然使用连接的数据库名称)时,抛出了一个异常,指出该数据库名称不存在。
更新:
当我运行SQL查询并执行以下命令时:
OleDbDataReader reader = cmd.ExecuteReader();
它说: Could not find: path/INFORMATION_SCHEMA.mdb;
我已经做过并且很不错的事情是:
解决了
我在其他人的帮助下的最终代码是:
DataTable MySchemaTable = con.GetOleDbSchemaTable(OleDbSchemaGuid.Tables,
new Object[] { null, null, null, "TABLE" });
for (int i = 0; i < MySchemaTable.Rows.Count; i++) {
combobox1.Items.Add(MySchemaTable.Rows[i].ItemArray[2].ToString()); }
另一个搜索是这样的:
`DataTable T = con.GetSchema("Tables");`
当我打印出时t.ToString();
,它只是显示表格。
还有更多搜索。
结案了!
您不能在OLEDB中使用INFORMATION_SCHEMA,它提供表信息的方式有所不同。看一下GetOleDbSchemaTable。看起来像:
MySchemaTable = MyConnection.GetOleDbSchemaTable(OleDbSchemaGuid.Tables, _
New Object() {Nothing, Nothing, Nothing, "TABLE"})
文档在这里声明:
OLE DB的.NET Framework数据提供程序还使用OleDbConnection对象的GetOleDbSchemaTable方法公开了架构信息。作为参数,GetOleDbSchemaTable采用一个OleDbSchemaGuid来标识要返回的架构信息,以及对那些返回的列的限制数组。GetOleDbSchemaTable返回填充有请求的架构信息的DataTable。
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句