データベースからデータを取得するためのメソッドを作成しました。このメソッドには、戻り型として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」を使用します