2012-06-06 17 views
2

以下是錯誤:對象引用(不知道我應該做的)

Exception Details: System.NullReferenceException: Object reference not set to an instance of an object.

,並停止在這裏:con.Open();

這裏是代碼:

SqlConnection con = new SqlConnection(DBHelper.connection); 
    SqlCommand com = new SqlCommand(); 
    con = com.Connection; 
    con.Open(); 
    com.CommandType = CommandType.Text; 
    com.CommandText = "select catname,catdescription,photo from category where catid=" + catselectddl.SelectedValue ; 
    SqlDataReader dr= com.ExecuteReader(); 
    DataTable dt = new DataTable(); 
    dt.Load(dr); 
    DataRow drr; 
    drr=dt.Rows[0]; 
    con.Close(); 

錯誤:

Line 19:   SqlCommand com = new SqlCommand(); 
Line 20:   con = com.Connection; 
Line 21:   con.Open(); // here the error 
Line 22:   com.CommandType = CommandType.Text; 
Line 23:   com.CommandText = "select catname,catdescription,photo from category where catid=" + catselectddl.SelectedValue 
+0

確保您的查詢返回任何結果 –

+0

它是返回結果我確定 – Marwan

回答

2

第三行是錯誤的。它應該是

com.Connection = con; 
2

你需要改變這一行(com.Connectionnull在這一點上):

con = com.Connection; 

這樣:

com.Connection = con; 
2

你指定的連接錯誤的順序。您應該將您在第一行創建的連接分配給SqlCommand,而不是將SqlCommand的連接(尚未創建)分配給先前創建的SqlConnection變量con。

SqlConnection con = new SqlConnection(DBHelper.connection); 
con.Open(); 
SqlCommand com = new SqlCommand(); 
com.Connection = con 

您也應該檢查你的連接狀態,以確保它執行命令之前,成功打開。

+0

請從代碼開始 – Marwan

0

試試這個:

SqlConnection con = new SqlConnection(DBHelper.connection); 
SqlCommand com = con.CreateCommand(); 
con.Open(); 
com.CommandType = CommandType.Text; 
com.CommandText = "select catname,catdescription,photo from category where catid=" + catselectddl.SelectedValue ; 
SqlDataReader dr= com.ExecuteReader(); 
DataTable dt = new DataTable(); 
dt.Load(dr); 
DataRow drr; 
drr=dt.Rows[0]; 
con.Close(); 

你實際上是試圖建立從命令連接 - 命令需要分配的連接,而不是相反。

我也會建議我喜歡的「使用」語法,它也負責處理命令和連接。

using (SqlConnection con = new SqlConnection(DBHelper.connection)) 
{ 
    using(SqlCommand com = con.CreateCommand()) 
    { 
    con.Open(); 
    com.CommandType = CommandType.Text; 
    com.CommandText = "select catname,catdescription,photo from category where catid=" + catselectddl.SelectedValue ; 
    SqlDataReader dr= com.ExecuteReader(); 
    DataTable dt = new DataTable(); 
    dt.Load(dr); 
    DataRow drr; 
    drr=dt.Rows[0]; 
    } 
} 
0

「選擇catname,catdescription,照片類,其中CATID =」 + catselectddl.SelectedValue

在一個側面說明:
這種類型的SQL腳本,如果變成一種習慣,將打開大門到SQL-Injection;並且我認爲沒有開發人員喜歡這種類型的缺陷...

相關問題