2013-06-20 48 views
3

我是一個新手,我試圖從我的數據庫中的某個表中檢索列NAme,Size(max legth)和DataType,下面的代碼當我執行它期望它顯示所有列類型和名稱(我didn沒有找到如何引用大小,我使用ColumnSize,但據說DataColumn不包含此方法的定義)但當執行它時,它只顯示:IsColumnSetSystem.Boolean 這是代碼:我們如何從getschemaTable獲取列大小和數據類型?

private void button1_Click(object sender, EventArgs e) 
    { 
     string EF = textBox1.Text; 

     try{ 
      //SqlDataAdapter adapter = SetupDataAdapter("SELECT * FROM id_declarant"); 
    SqlCommand comm = new SqlCommand(); 
    string connectionString = @"Data Source=.\SQLEXPRESS;Initial Catalog=declaration;Integrated Security=True"; 
     comm.Connection=new SqlConnection(connectionString); 
      String sql = @"SELECT * 
        FROM id_declarant,declarant 
       WHERE (declarant.Nom_pren_RS='" + EF + "') and (id_declarant.mat_fisc=declarant.mat_fisc) "; 
    comm.CommandText = sql; 
    comm.Connection.Open(); 
      SqlDataReader reader = comm.ExecuteReader(); 
      DataTable schemaTable = reader.GetSchemaTable(); 
      foreach (DataRow row in schemaTable.Rows) 
      { 
       foreach (DataColumn column in schemaTable.Columns) 
       { 
        System.IO.File.WriteAllText(@"C:\Users\Manuela\Documents\GL4\WriteLines.txt", column.ColumnName + column.DataType); 

       } 
      } 
+0

您是否在msdn上選中了此項? http://msdn.microsoft.com/en-us/library/system.data.sqlclient.sqldatareader.getschematable(v=vs.100).aspx – Ric

+0

是的,我有,事實上我使用ColumnName和DataTable,但它不顯示正確的數據 – manu

回答

1

要打印的數據表通過的GetSchemaTable返回的列的名稱,而不是它的價值,我也建議使用StringBuilder和寫的一切,當你從循環退出

StringBuilder sb = new StringBuilder(); 
    foreach (DataRow row in schemaTable.Rows) 
    { 
     foreach (DataColumn column in schemaTable.Columns) 
     { 
      sb.AppendLine(column.ColumnName + ":" +row[column.ColumnName].ToString()); 
     } 
     sb.AppendLine(); 
    } 
    File.WriteAllText(@"C:\Users\Manuela\Documents\GL4\WriteLines.txt", sb.ToString()); 
9

也許我是有點過這個人,但得到的列的名稱,大小和數據類型,你可以試試這個:

DataTable schemaTable = reader.GetSchemaTable(); 
foreach (DataRow row in schemaTable.Rows) 
{ 
    var name = row["ColumnName"]; 
    var size = row["ColumnSize"]; 
    var dataType = row["DataTypeName"]; 
    //append these to a string or StringBuilder for writing out later... 
} 

但也許這是不是你以後在做什麼?

+0

感謝您的回答,它有一點幫助 – manu

+0

無後顧之憂。 @史蒂夫的答案比我的強多了:) – Ric

相關問題