【发布时间】:2012-05-10 08:16:22
【问题描述】:
我想从我的响应数据读取器对象中读取列名和类型,因为我需要它来实例化一些对象。我想出了这个:
using (db.sqlConnection) {
db.sqlConnection.Open();
using (var cmd = new SqlCommand("areaGetStreetTypes", db.sqlConnection)) {
cmd.CommandType = CommandType.StoredProcedure;
using (SqlDataReader dr = cmd.ExecuteReader(CommandBehavior.KeyInfo)) {
DataTable dt = dr.GetSchemaTable();
foreach (DataRow myField in dt.Rows) {
foreach (DataColumn coloana in dt.Columns) {
string c1 = coloana.ColumnName; //column name ???
string c2 = coloana.GetType().ToString(); //column type ??
Console.WriteLine(c1 + " " + c2);
}
}
}
}
}
但不工作。对于每一列返回我想打印(对于初学者)类似:
id_someID int32
name string
surname string
ssn string
我的代码有什么问题?
【问题讨论】:
-
什么是“不工作”?
-
从文档中可以看到msdn.microsoft.com/en-us/library/…GetSchemaTable 返回一个数据集,其中每行包含列数据。您正在列出该架构数据集的列,而不是行的内容
-
如何在一个查询中接收数据和架构信息?我如何访问它们中的每一个?
-
真正的问题是,当我不知道它返回的架构时,如何调用存储过程并显示结果?
-
是的,我想这是我的问题。
标签: c# .net ado.net database-schema