【问题标题】:Best practice to load multiple DataTable schema from a database into a DataSet将多个 DataTable 模式从数据库加载到 DataSet 的最佳实践
【发布时间】:2014-06-16 20:42:02
【问题描述】:

我正在处理具有非常动态模式的数据库的应用程序。我想将我的数据库表模式添加到 DataSet 中,以便我可以轻松地获取我的表列、列类型和约束。我使用DataAdapter.FillSchema 方法使这成为可能:

foreach (string table in get_tables())
        {
            DbDataAdapter myDataAdapter= new SqlDataAdapter("Select * From "+table, myConnexionString);
            myDataAdapter.FillSchema(myDataSet, SchemaType.Source, table);
        }  

其中get_tables 是一个返回我的数据库表名称的List<string> 的方法。这在我的情况下工作得很好,但我不确定这是否是最好的方法?有没有替代品?

【问题讨论】:

  • 这是一个很好的方法......

标签: c# .net dataset dataadapter


【解决方案1】:

ADO.Net Connection 对象有一个名为GetSchema 的方法,您可以使用它来获取不同对象的数据库架构

string[] restrictions = new string[1];
restrictions[0] = "myTableName";
DataTable table = sqlconnection.GetSchema("Tables",restrictions);

您可以在此处查看 MSDN 中的详细信息: http://msdn.microsoft.com/en-us/library/ms254934%28v=vs.80%29.aspx

【讨论】:

  • 对于方法的第二个参数,限制应该放在一个4个字符串的数组中,并且根据msdn官方文档,table_name限制应该放在第三位而不是第一位。无论如何,这种方法也可以正常工作,但我更喜欢第一个,因为它将表模式与 DataTable 对象匹配,无需在行中加载任何数据,尽管使用 Connection.GetSchema 我必须迭代行以获取数据库元数据。跨度>
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2010-11-06
  • 1970-01-01
  • 2014-02-13
  • 1970-01-01
  • 1970-01-01
  • 2018-01-05
  • 1970-01-01
相关资源
最近更新 更多