18
2015
04

ADO.NET中DbConnection.GetSchema方法的使用总结

此方法获取数据库的结构,所以可以用它获取数据库中所有的表


先上代码


string connectionString = "Provider=Microsoft.Jet.OLEDB.4.0;User ID=Admin;Jet OLEDB:Database Password=Yldb666;Data Source=" + @"test.mdb;";
conn = new OleDbConnection(connectionString);
conn.Open();
System.Data.DataTable schema = conn.GetSchema();
this.dataGridView1.DataSource = schema;
conn.Close();
conn.Dispose();

结果如下图:

blob.png

下一步:获取所有的表


string connectionString = "Provider=Microsoft.Jet.OLEDB.4.0;User ID=Admin;Jet OLEDB:Database Password=Yldb666;Data Source=" + @"Yldb.mdb;";
conn = new OleDbConnection(connectionString);
conn.Open();
System.Data.DataTable schema = conn.GetSchema("Tables");
this.dataGridView1.DataSource = schema;
conn.Close();
conn.Dispose();


结果如下图:


blob.png


此时已经获取到了所有的表,那么一般我们在实际开发中,只需要自己创建的数据库.所以这里就要过虑了.


先上代码


string connectionString = "Provider=Microsoft.Jet.OLEDB.4.0;User ID=Admin;Jet OLEDB:Database Password=Yldb666;Data Source=" + @"test.mdb;";
conn = new OleDbConnection(connectionString);
conn.Open();
System.Data.DataTable schema = conn.GetSchema("Tables", new string[] { null, null, null, "TABLE" });
this.dataGridView1.DataSource = schema;
conn.Close();
conn.Dispose();


结果如下:

blob.png


好了,进行过虑的数组为是 conn.GetSchema("Tables", new string[] { null, null, null, "TABLE" });


看第二图中,用conn.GetSchema("Tables");得到的数据中,前3列 与  new string[] { null, null, null, "TABLE" });前3个null 是对应的.


也就是说,过虑数组中第一个,对应结果列表的第一列,以此类推. 所以在第二图中,自己建的表的类型为"TABLE",所以 最后要写成


 new string[] { null, null, null, "TABLE" });  这样,过虑出来的数据,才是我们想要的.


 那么,其他数据库,也是这个样子的.测试数据库是Access 2000版  自己可以试一下.


 结束!

« 上一篇 下一篇 »

发表评论:

◎欢迎参与讨论,请在这里发表您的看法、交流您的观点。