积极答复者
C#谁解释一下这段代码!

问题
-
SqlConnection con = new SqlConnection("Server=.\\SQLEXPRESS;uid=sa;pwd=59365615;database=Attendance Manage");
con.Open();
try
{
string strsql = "select * from table_table1";
SqlCommand cmd = new SqlCommand(strsql, con);
SqlDataReader reader = cmd.ExecuteReader();
string str = "";
for (int i = 0; i < reader.FieldCount; i++)//这句看不懂
str += string.Format("{0,-10}", reader.GetName(i));//这句话看不懂。。
str += "\n";
while (reader.Read())
{
for (int i = 0; i < reader.FieldCount; i++)
str += string.Format("{0,-10}", reader.GetName(i));
str += "\n";
}
label1.Text = str;
}
catch (SqlException err)
{
label1.Text = "无法读取数据";
}
finally
{
con.Close();
}
答案
-
怎么我运行出来的是表字段的名称呢?我有一张表,表里的字段是2列,数据是2条,运行结果得到3条表的字段名,我搞不懂了。。
fieldcount是什么意思?
如果一个数据表里有
学号 姓名 年龄
1 马六 11
2 张三 12
3 李四 13
4 王五 14
那么这里fieldcount得到有几个字段?
正如我说的——FieldCount运行出来的是数据表的“列”的数量。应该是3.你遍历出来就是“学号 姓名 年龄”。如果你想得到数据,应该:
string strsql = "select * from table_table1";
SqlCommand cmd = new SqlCommand(strsql, con);
SqlDataReader reader = cmd.ExecuteReader();
string s="";
while(reader.Read()) //读取行
{
for(int i=0;i<reader.FieldCount;++i) //读取列
{
s+= reader[i].ToString()+"\t";
}
s+="\n";
}
如果你有其它意见或私下交流,请直接发送maledong_work@foxmail.com;或者
下载MSDN桌面工具(Vista,Win7)
我的博客园
慈善点击,点击此处
- 已编辑 ThankfulHeartModerator 2011年11月8日 2:29
- 已标记为答案 深白 2011年11月8日 3:35
-
第一问:之所以要临时变量,是因为你同样需要保留先前读到的数据。然后使用“+”拼接字符串的方式完整地拼接成一个内容。
第二问:{0,-10}表示左对齐留出10个字符。实际是被reader.GetValue(0)取代。如果reader.GetValue(0)读取的内容小于10个字符,那么右边将会用空格填充。
具体关于StringFormat格式化内容,请参考:http://www.cnblogs.com/oletan/archive/2010/04/27/1722283.html
如果你有其它意见或私下交流,请直接发送maledong_work@foxmail.com;或者
下载MSDN桌面工具(Vista,Win7)
我的博客园
慈善点击,点击此处- 已标记为答案 深白 2011年11月8日 3:34
全部回复
-
循环把记录里的所有字段值读出来
http://feiyun0112.cnblogs.com/ -
for (int i = 0; i < reader.FieldCount; i++) //判断这个数据表中有多少个列字段。FieldCount就是这个作用
str += string.Format("{0,-10}", reader.GetName(i)); //获取每一列的列名称
如果你有其它意见或私下交流,请直接发送maledong_work@foxmail.com;或者
下载MSDN桌面工具(Vista,Win7)
我的博客园
慈善点击,点击此处- 已编辑 ThankfulHeartModerator 2011年11月8日 2:14
-
怎么我运行出来的是表字段的名称呢?我有一张表,表里的字段是2列,数据是2条,运行结果得到3条表的字段名,我搞不懂了。。
fieldcount是什么意思?
如果一个数据表里有
学号 姓名 年龄
1 马六 11
2 张三 12
3 李四 13
4 王五 14
那么这里fieldcount得到有几个字段?
正如我说的——FieldCount运行出来的是数据表的“列”的数量。应该是3.你遍历出来就是“学号 姓名 年龄”。如果你想得到数据,应该:
string strsql = "select * from table_table1";
SqlCommand cmd = new SqlCommand(strsql, con);
SqlDataReader reader = cmd.ExecuteReader();
string s="";
while(reader.Read()) //读取行
{
for(int i=0;i<reader.FieldCount;++i) //读取列
{
s+= reader[i].ToString()+"\t";
}
s+="\n";
}
如果你有其它意见或私下交流,请直接发送maledong_work@foxmail.com;或者
下载MSDN桌面工具(Vista,Win7)
我的博客园
慈善点击,点击此处
- 已编辑 ThankfulHeartModerator 2011年11月8日 2:29
- 已标记为答案 深白 2011年11月8日 3:35
-
while (reader.Read())
{
for (int i = 0; i < reader.FieldCount; i++)
str += string.Format("{0,-10}", reader.GetValue(i));//原来是我看错了,这里是getvalue不是getname
str += "\n";
}
GetValue是获取列里边的东西;但是GetName是获取列名。
如果你有其它意见或私下交流,请直接发送maledong_work@foxmail.com;或者
下载MSDN桌面工具(Vista,Win7)
我的博客园
慈善点击,点击此处 -
string str = "";//定义一个字符串变量临时存放数据表的读取结果
for (int i = 0; i < reader.FieldCount; i++)
str += string.Format("{0,-10}", reader.GetName(i));
str += "\n";
while (reader.Read())//逐条读取数据表记录
{
for (int i = 0; i < reader.FieldCount; i++)
str += string.Format("{0,-10}", reader.GetValue(i));
str += "\n";
}
label1.Text = str;
}
为什么要有个临时表存放的结果然后读取呢?直接读不行吗?还有string.format("{0,-10}", reader.GetValue(i));//这里{0,-10}是什么意思?- 已编辑 深白 2011年11月8日 3:00
-
第一问:之所以要临时变量,是因为你同样需要保留先前读到的数据。然后使用“+”拼接字符串的方式完整地拼接成一个内容。
第二问:{0,-10}表示左对齐留出10个字符。实际是被reader.GetValue(0)取代。如果reader.GetValue(0)读取的内容小于10个字符,那么右边将会用空格填充。
具体关于StringFormat格式化内容,请参考:http://www.cnblogs.com/oletan/archive/2010/04/27/1722283.html
如果你有其它意见或私下交流,请直接发送maledong_work@foxmail.com;或者
下载MSDN桌面工具(Vista,Win7)
我的博客园
慈善点击,点击此处- 已标记为答案 深白 2011年11月8日 3:34