我有一个简单的连接到SQL Server不工作。我试图在C#中使用SqlDataReader
来读取数据。SqlDataReader意外返回NULL
下面是代码:
bool ok = false;
SqlConnection con = new SqlConnection();
con.ConnectionString = @"********";
SqlCommand cmd = new SqlCommand();
cmd.Parameters.AddWithValue("@a", uname);
cmd.Parameters.AddWithValue("@b", pass);
cmd.CommandText = @"SELECT username FROM admins WHERE pass='@b'";
cmd.Connection = con;
SqlDataReader r;
con.Open();
r = cmd.ExecuteReader();
r.Read();
string n;
n = r.GetString(0);
if (n != null)
{
ok = true;
}
con.Close();
if (ok)
{
Session["admin"] = uname;
Response.Redirect("admin_page.aspx");
}
else
{
eror.Text = "An eror occured";
Response.Redirect("index.aspx#work");
}
注意:在上面的代码串“UNAME”和“传”绝对不是空。
注意#2:我曾尝试在while循环中运行r.read()
(即使不可能有多于一行)--->相同的结果。
我试图运行在步进模式这个代码,看来,它打破了这条线:
n = r.GetString(0);
与此异常:
“System.InvalidOperationException”类型的异常发生在System.Data.dll中,但未在用户代码中处理
附加信息:无数据存在时无效尝试读取。
我有点在这里迷路了。我知道这可能是我错过的一件简单的事情,我无法找到它。有任何想法吗?
在您的查询中甚至没有使用“@ a”,并且您的问题是现在行已返回,因此您得到***无数据存在时尝试读取*** – Amit
几件事情。为什么你不使用参数@a?另外,如果添加参数,则不应将“字符”手动添加到查询中。它将被自动处理。您应该测试r.Read是否成功(使用返回值),如果它没有在数据库中找到您的数据。我怀疑这是这里的问题。 – Saragis