我正在使用數據庫將部門名稱與其唯一的郵寄代碼相關聯,即Accounting具有郵寄代碼1337. ShortName和ID是正在查詢的數據庫的字段。SqlDataReader導致網頁無法加載
的架構是
ID int
ShortName nvarchar(255)
這是用C#網頁的後臺完成。我在同一代碼的其他地方使用了SqlDataReader
對象,但沒有發生錯誤。我想我有一個語法錯誤的地方,或者我試圖將一個字符串粘到一個int或一些愚蠢的東西,但我看不到它。
SqlConnection
設置正確,因爲它用於在加載頁面時進行查詢,並且在指示的行被註釋掉時工作。
SqlDataReader SQl_Reader;
string cmdString = "SELECT ShortName FROM departments WHERE (ID = " +
department_Text.SelectedValue.ToString() + ")"; //a selected value in department_text would be the mailing code such as 1337, or 1304.
SqlCommand SQl_Command2 = new SqlCommand(cmdString, SQl_Connection);
SQl_Reader = SQl_Command.ExecuteReader();
string deptName = SQl_Reader["ShortName"].ToString();//This should assign the deptName = the value in SQl_Reader but it causes the page not to load. Not sure what is wrong with it
SQl_Reader.Close();
SQl_Connection.Close();
我都試過,甚至採用了專有的連接,命令,和讀者只爲這本查詢多種不同的方式。我使用SqlDataReader
作爲代碼的另一個函數中的相同的兩個字段的類似用途,它完美地工作。任何見解都將非常感激。
你在這段代碼中有一個非常嚴重的sql注入漏洞。您需要使用參數化查詢。很可能「department_Text」的值不是您認爲的值,而且查詢也沒有返回任何結果,因此當您在空引用上調用「ToString()」時會引發異常。 – asawyer
在讀取任何東西之前不應該調用SQL_Reader.Read()? –