请求帮助:    在C#中使用Ado.net对象,如何获得数据库中的一个表(假设表名称为table1),
    要求得到的这个表不含任何数据行,即只包含结构的空表。
    最终目的是想使用 DataTable.NewRow() 方法建立数据行。    简单的方法是使用 select * from table where 1=2 这样的sql语句,
    但觉得这样不好,希望了解C#中对应的相关对象和方法,请高手指点,多谢!

解决方案 »

  1.   

    使用GetSchema方法using System;
    using System.Data;
    using System.Data.SqlClient;class Program
    {
      static void Main(string[] args)
      {
      string connectionString = GetConnectionString();
      using (SqlConnection connection = new SqlConnection(connectionString))
      {
       // Connect to the database then retrieve the schema information.
       connection.Open();
       DataTable table = connection.GetSchema("Tables");   // Display the contents of the table.
       DisplayData(table);
       Console.WriteLine("Press any key to continue.");
       Console.ReadKey();
       }
     }  private static string GetConnectionString()
      {
       // To avoid storing the connection string in your code,
       // you can retrieve it from a configuration file.
       return "Data Source=(local);Database=AdventureWorks;" +
          "Integrated Security=SSPI;";
      }  private static void DisplayData(System.Data.DataTable table)
      {
         foreach (System.Data.DataRow row in table.Rows)
         {
            foreach (System.Data.DataColumn col in table.Columns)
            {
               Console.WriteLine("{0} = {1}", col.ColumnName, row[col]);
            }
         Console.WriteLine("============================");
         }
      }
    }
      

  2.   

    首先感谢你的回复,但是这个GetSchema()方法在vs.net2003中是没有的!还有其它的方法吗?请指教!这两天单位比较忙,没有能及时回复,请见谅!
      

  3.   

    还是通过Vs生成类型化的DataSet,DataTable,这样就比较好了,但是生成后,修改结构就比较麻烦,另外一种方式是使用 
    DataTable.WriteXmlSchema 方法
    DataTable.ReadXmlSchema 方法
    来管理结构。
      

  4.   

    感谢3楼回复,但你的方法和我使用 select * from table where 1=2 这样的sql语句一样都要先得到一个DataSet,DataTable,而我的方法直接就可以得到一个空表。我想要的是有没有一种方法,在vs2003.net中,能够直接得到一个空表,而不是是偶那个上面的sql语句。有没有像2楼的connection.GetSchema("Tables");这样的方法,而且是在.net1.1环境中使用。多谢!