none
DataTable获得数据库中的表结构 RRS feed

  • 问题

  • 有时候我从其它地方获取到一笔数据,我希望能把这些数据先填充到DataTable实例中,再写入数据库指定表。但DataTable如何在实例化后并且开始填充数据前和数据库中指定的表具有相同的结构?

    因为只有具有相同的结构,我才可以方便地利用  datatable.rows[]["列名"] 的形式访问和填充数据。

    目前我知道的解决办法是:

    1、填充数据前,执行一条SQL查询指令让DataTable具有相同的表结构 —— 这种方法需要写可能不用返回任何数据的TSQL,不高雅。

    2、实例化DataTable的时候,用代码逐个添加DataTable的字段实例对象。这种方法书写的代码量大,不太喜欢。

    寻求一种更好的方法。谢谢。

    用的是.net framework2.0

    2014年1月17日 18:56

答案

  • 你好:

    据我所知,DataTable本身就是根据传来的SQL语句填充数据集病自动生成格式的,可以理解为内存数据库。所以你应该使用SqlCommand或者SqlDataAdapter等组合使用Fill或者FillSchema(仅填充结构,不追加数据)。

    具体可以参考:http://msdn.microsoft.com/zh-cn/library/152bda9x%28v=vs.80%29.aspx


    ASP.NET Questions
    Other Discussions
    FreeRice Donate
    Issues to report
    Free Tech Books Search

    2014年1月20日 1:25
    版主
  • 你好:

    我觉得第一种方法是比较合适的:

    var conn = new SqlConnection("someConnString");
    var cmd = new SqlCommand("SET FMTONLY ON; SELECT * FROM MyTable; SET FMTONLY OFF;",conn); 
    var dt = new DataTable();
    conn.Open();
    dt.Load(cmd.ExecuteReader());
    conn.Dispose();


    We are trying to better understand customer views on social support experience, so your participation in this interview project would be greatly appreciated if you have time. Thanks for helping make community forums a great place.
    Click HERE to participate the survey.

    2014年1月20日 12:42
    版主

全部回复

  • 你好:

    据我所知,DataTable本身就是根据传来的SQL语句填充数据集病自动生成格式的,可以理解为内存数据库。所以你应该使用SqlCommand或者SqlDataAdapter等组合使用Fill或者FillSchema(仅填充结构,不追加数据)。

    具体可以参考:http://msdn.microsoft.com/zh-cn/library/152bda9x%28v=vs.80%29.aspx


    ASP.NET Questions
    Other Discussions
    FreeRice Donate
    Issues to report
    Free Tech Books Search

    2014年1月20日 1:25
    版主
  • 你好:

    我觉得第一种方法是比较合适的:

    var conn = new SqlConnection("someConnString");
    var cmd = new SqlCommand("SET FMTONLY ON; SELECT * FROM MyTable; SET FMTONLY OFF;",conn); 
    var dt = new DataTable();
    conn.Open();
    dt.Load(cmd.ExecuteReader());
    conn.Dispose();


    We are trying to better understand customer views on social support experience, so your participation in this interview project would be greatly appreciated if you have time. Thanks for helping make community forums a great place.
    Click HERE to participate the survey.

    2014年1月20日 12:42
    版主
  • Hello,

    不知dataView合不合用?

    http://www.dotblogs.com.tw/yc421206/archive/2009/10/18/11095.aspx

    http://www.dotblogs.com.tw/yc421206/archive/2009/10/18/11097.aspx


    秘訣無它,唯勤而已 http://www.dotblogs.com.tw/yc421206/

    2014年1月21日 3:31
  • 你没有必要自己写任何定义 DataTable 结构的代码,DataSet、DataTable 的结构可以用数据集代码生成器自己生成,同时也会生成 DataAdapter。

    如何创建类型化数据集参考下面的连接:http://msdn.microsoft.com/zh-cn/library/04y282hb(v=vs.90).aspx

    外 Entity Framework 中的 Model First 也能实现上述效果,但需要更高版本的 .net framework 支持



    知识改变命运,奋斗成就人生!

    2014年1月23日 5:24
    版主