0

データベースからデータを取得するためのメソッドを作成しました。このメソッドには、戻り型としてDataTableがあります。このメソッドを呼び出そうとすると、オブジェクト参照の例外がスローされ、オブジェクトのインスタンスが設定されません。これがその方法と私がそれをどのように使っているかです。

 public DataTable executeSelect (String _query, SqlParameter[] sqlParameter)
    {
        SqlCommand myCommand = new SqlCommand();
        DataTable dataTable = new DataTable();
        dataTable = null;
        DataSet ds = new DataSet();
        try
        {
            myCommand.Connection = openConnection();
            myCommand.CommandText = _query;
            myCommand.Parameters.AddRange(sqlParameter);
            myCommand.ExecuteNonQuery();
            myadapter.SelectCommand = myCommand;
            myadapter.Fill(ds);
            dataTable = ds.Tables[0];
        }
        catch (SqlException e)
        {
            Console.Write( e.StackTrace.ToString());

            return null;
        }
        finally
        {

        }
        return dataTable;
    }

上記のメソッドを使用してデータテーブルを作成する方法を示す以下のコード

            string sp_name = "sLot";
            SqlParameter[] param = new SqlParameter[]{
                 new SqlParameter("@stype","ML"),
                new SqlParameter("@ttype","B"),
                new SqlParameter("@code",comp_code)

            };               

            DataTable data = dbc.executeSelect(sp_name, param); 

注:これは、ストアドプロシージャ名「sLot」を使用します

4

1 に答える 1

1

私はあなたが例外を得ていると思います、それであなたは.の代わりにnullを返しますDataTable。使用する場合はに設定CommandTypeする必要があります。StoredProcedure

myCommand.CommandType = CommandType.StoredProcedure;

もちろん、他にも考えられる理由NullReferenceExceptionがありますが、十分な情報が提供されていません。コメントされた最後の行が例外をスローした場合dbcはnullです。executeSelect静的にするか、メソッドが宣言されているタイプのインスタンスを作成できます。

于 2013-03-12T19:02:45.377 に答える