2

エラーは次のとおりです。

例外の詳細:System.NullReferenceException:オブジェクト参照がオブジェクトのインスタンスに設定されていません。

そしてそれはここで止まります: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 
4

5 に答える 5

2

3行目が間違っています。そのはず

  com.Connection = con;
于 2012-06-06T16:52:43.357 に答える
2

この行を変更する必要があります(com.Connectionそのnull時点です):

con = com.Connection;

これに:

com.Connection = con;
于 2012-06-06T16:52:53.453 に答える
2

間違った順序で接続を割り当てています。最初の行で作成した接続を SqlCommand に割り当てる必要があります。SqlCommand の接続 (まだ作成されていません) を以前に作成した SqlConnection 変数 con に割り当てるのではありません。

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

また、コマンドを実行する前に、接続状態をチェックして、接続が正常に開かれたことを確認する必要があります。

于 2012-06-06T16:53:10.730 に答える
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];
   }
 }
于 2012-06-06T16:58:10.377 に答える
0

"catid=" + catselectddl.SelectedValue のカテゴリから catname,catdescription,photo を選択

余談
ですが、このタイプの SQL スクリプトを習慣にすると、次への扉が開かれSQL-Injectionます。そして、この種の欠陥を好む開発者はいないと思います...

于 2012-06-06T17:50:47.847 に答える