我们如何从 getchemaTable 中获取 Column Size 和 dataType?
Posted
技术标签:
【中文标题】我们如何从 getchemaTable 中获取 Column Size 和 dataType?【英文标题】:how do we get the Column Size and dataType from getschemaTable? 【发布时间】: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 );
【问题讨论】:
你在 msdn 上检查过这个吗? msdn.microsoft.com/en-us/library/… 是的,我有,事实上我正在使用 ColumnName 和 DataTable 但它没有显示正确的数据 【参考方案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());
【讨论】:
以上是关于我们如何从 getchemaTable 中获取 Column Size 和 dataType?的主要内容,如果未能解决你的问题,请参考以下文章
如何从 udp-socket (C/C++) 获取您自己的(本地)IP 地址