我连接到数据库视图(SQL Server 2008 R2)。但我不知道任何专栏。我需要选择该视图上的所有内容。如何使用SqlDataReader
?
SqlConnection con = new SqlConnection(conString);
con.Open();
SqlCommand command = new SqlCommand("select * from vw_Haber_Baslik_Ozet", con);
SqlDataReader reader = command.ExecuteReader();
while (reader.Read())
{
//reader.get?? I will write the things I get to a file
}
reader.Close();
con.Close();
一旦我学会了这个视图的结构,我就可以创建一个适当的类来存储这些值。但是我该如何学习结构?
答案 0 :(得分:0)
如果只是希望能够掌握返回表的样子,最好先将数据加载到数据集中,然后在填充数据集后设置断点,以便检查它:
using (var connection = new SqlConnection(conString))
{
var command = new SqlCommand(..., connection);
var apapter - new SqlDataAdapter(command);
var ds = new DataSet();
connection.Open();
adapter.Fill(ds);
if (ds.Tables.Count >= 1) <<-- Set a breakpoint here and inspect the dataset
{
...
}
}
答案 1 :(得分:0)
Theres是SqlDataReader的一个名为FieldCount的属性,它返回一行中的列数。如果迭代执行GetName()方法的列数,并将列号作为参数传递,那么您可以这样做。
答案 2 :(得分:0)
如果您将其读入DataSet,则可以使用DataTable循环使用Columns或Rows等:
SqlConnection con = new SqlConnection(conString);
con.Open();
SqlCommand command = new SqlCommand("select * from vw_Haber_Baslik_Ozet", con);
SqlDataAdapter adapter = new SqlDataAdapter(command.CommandText, con);
DataSet ds = new DataSet();
adapter.Fill(ds);
foreach (DataColumn dc in ds.Tables[0].Columns)
{
String colName = dc.ColumnName;
String valueOfCol1 = ds.Tables[0].Rows[0][dc.ColumnName].ToString();
}
con.Close();
答案 3 :(得分:0)
有两种选择:
阅读DataTable中的所有内容
DataTable dt = new DataTable();
SqlDataAdapter da = new SqlDataAdapter(command);
da.Fill(dt);
DataTable schema;
SqlDataReader reader = command.ExecuteReader();
schema = reader.GetSchemaTable();
第一种方法需要加载数据,而第二种方法需要返回一个数据表,其中每一行包含表中单列的所有可用信息
答案 4 :(得分:0)
如果你想知道的只是列和类型。
从[YourTable或View]中选择*,其中1 = 0;
使用DataAdapter填充DataTable。
然后以编程方式或手表方式阅读表格。
如果您使用架构方法(GetSchemaTables),您可以获得更多(您可能想要或不想要) - 可空性,约束,身份等。