2012-06-06 3 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.Connection 그 시점에서 null입니다) :

con = com.Connection; 

이에 :

com.Connection = con; 
2

당신은에서 연결을 할당하고 잘못된 순서. 첫 번째 줄에 만든 연결을 SqlCommand에 할당하고 이전에 만든 SqlConnection 변수 con에 SqlCommand (아직 생성되지 않은 연결)를 할당하지 않아야합니다.

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; 그리고 어떤 개발자도이 유형의 결함을 좋아하지 않는다고 가정합니다.