如何从getschemaTable获取列大小和数据类型?
本文关键字:数据类型 getschemaTable 获取 | 更新日期: 2023-09-27 18:19:15
我是一个新手,我试图从我的数据库中的一些表中检索列名,大小(最大长度)和数据类型,以下代码当我执行它期望它显示所有列类型和名称(我没有找到如何参考大小,我使用ColumnSize,但据说DataColumn不包含此方法的定义)但是当执行它时,它只显示:IsColumnSetSystem。布尔这是代码:
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 );
}
}
也许我在这一点上有点偏离但是要获取列的名称,大小和数据类型你可以尝试:
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...
}
但也许这不是你想要的?
您正在打印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());