打印用户ID但在此处打印
System.Data.SqlClient.SqlDataReader
try
{
con = new SqlConnection(cs.DBConn);
con.Open();
String sql = "SELECT SSUserID from SSUserInformation where UserName like '"
+ txtUserName.Text + "%'";
cmd = new SqlCommand(sql, con);
rdr = cmd.ExecuteReader(CommandBehavior.CloseConnection);
frm.lbluserid.Text = Convert.ToString(rdr);
con.Close();
}
catch (Exception ex)
{
MessageBox.Show(ex.Message, "Error", MessageBoxButtons.OK
, MessageBoxIcon.Error);
}
答案 0 :(得分:3)
Convert.ToString(rdr);
返回SqlDataReader
的完整类型名称,因为它等同于rdr.GetType().ToString()
(备注部分here的最后一句)。
相反,您需要关注:
if(rdr.Read())
frm.lbluserid.Text = rdr.GetString(0);
但正如Rup在评论中所提到的,如果查询总是返回单个值,您也可以使用ExecuteScalar
。
frm.lbluserid.Text = Convert.ToString(cmd.ExecuteScalar());
答案 1 :(得分:2)
尝试以下代码: -
while (rdr.Read())
{
frm.lbluserid.Text = rdr.GetString(0);
}
如此处所述: - http://www.csharp-station.com/Tutorial/AdoDotNet/lesson04
如前所述,SqlDataReader通过顺序返回数据 流。要读取此数据,必须逐行从表中提取数据 读取一行后,前一行不再可用。至 再次读取该行,您将不得不创建一个新的实例 SqlDataReader并再次读取数据流。
从数据流中读取的典型方法 SqlDataReader将使用while循环遍历每一行。
额外注意: -
我建议您使用Command.ExecuteReader来获取数据库中的值。相反,您应该使用Command.ExecuteScalar,如下所示:
frm.lbluserid.Text = (String) cmd.ExecuteScalar();