【问题标题】:how do we get the Column Size and dataType from getschemaTable?我们如何从 getchemaTable 中获取 Column Size 和 dataType?
【发布时间】:2013-06-20 10:21:20
【问题描述】:

我是一个新手,我正在尝试从我的数据库中的某个表中检索列名称、大小(最大长度)和数据类型,当我执行下面的代码时希望它显示所有列类型和名称(我没有找到如何引用 Size ,我使用了 ColumnSize 但据说 DataColumn 不包含此方法的定义) 但是在执行它时,它只显示: IsColumnSetSystem.Boolean 这是代码:

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 );

                 }
             }

【问题讨论】:

标签: c# .net database datareader getschematable


【解决方案1】:

也许我对这个有点不理解,但要获取列的名称、大小和数据类型,您可以试试这个:

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...
}

但也许这不是你想要的?

【讨论】:

  • 不用担心。 @Steve 的回答比我的要强大得多 :)
【解决方案2】:

您正在打印 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());

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2012-03-29
    • 1970-01-01
    • 2019-01-02
    • 2012-05-22
    • 2023-03-17
    • 2016-11-21
    • 1970-01-01
    • 2012-11-30
    相关资源
    最近更新 更多