as.net SELECT 返回值的问题

来源:百度知道 编辑:UC知道 时间:2024/07/01 06:05:08
代码
public string Getmsg()
{
string msg = "";

SqlConnection con = user.creatcon();
con.Open();
SqlCommand com = new SqlCommand();
com.CommandText = "Select * from userinfo where adm = 1";
com.CommandType = CommandType.Text;
com.Connection = con;
SqlDataReader reader = com.ExecuteReader();

msg = reader["username"].ToString();

con.Close();
return msg;
}
在表中存在记录并且在SQL2005StudioExpress中执行查询能正确返回记录,但是在执行页面时返回的值始终为null,不理解,请教一下.

if(reader.Read())
{
msg = reader["username"].ToString();

}

看来你对SqlDataReader 不了解。。
SqlDataReader 是一个只进只读的寄存器。。
它里面只临时存储一条查询记录。。。
它有一个方法。Read(),如果你查询结果中有记录的时候,你调用它,用会返回一个TRUE,反之则FALSE。它还有一个作用就是使记录集中的游标向下移动一条记录。

你初始查询得记录后记录集中的游标状态是在0的状态上。
当你第一次调它后它的游标才会到1的位置。

正确的写法应该是这样。
while(reader.Read())
{
msg = reader["username"].ToString();

}

reader.Read()读取才行