我有一個簡單的連接到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