0
StackOverflowExceptionが未処理です。私はこれについて助けが必要です。私はライン上のエラーStackOverflowExceptionがSqlDataAdapter.Fill()で未処理の場合
adp.Fill(ds)
また、私はなぜわからないんだけど、私はthrow
を削除することはできませんを取得し、それが値を返すすべてのコードではないと言います。
string connStr = System.Configuration.ConfigurationManager.ConnectionStrings["dbCustConn"].ToString();
string cmdStr = "Select * from MainDB";
public DAL() // default parameter. Use?
{
}
public DataTable Load() // what is this for? (loads all the records from the database)
{
SqlConnection conn = new SqlConnection(connStr);
//SqlCommand cmd = new SqlCommand(cmdStr, connStr);
SqlDataAdapter adp = new SqlDataAdapter(cmdStr, connStr); // SqlDataAdapater? Load all?
DataSet ds = new DataSet();
try
{
adp.Fill(ds);
return ds.Tables[0];
}
catch
{
throw;
}
finally
{
ds.Dispose();
adp.Dispose();
conn.Close();
conn.Dispose();
}
}
public DataTable Load() // what is this for? (loads all the records from the database)
{
SqlDataAdapter adp = new SqlDataAdapter(cmdStr, connStr); // SqlDataAdapater? Load all?
DataSet ds = new DataSet();
using(SqlConnection conn = new SqlConnection(connStr))
{
adp.Fill(ds);
return ds.Tables[0];
}
}
protected void Page_Load(object sender, EventArgs e)
{
if (!IsPostBack)
{
BindGrid();
}
}
private void BindGrid()
{
MasterCust.DataSource = GridDataSource();
MasterCust.DataBind();
//DetailCust.DataSource = ds2;
//DetailCust.DataBind();
}
private DataTable GridDataSource()
{
BAL p = new BAL();
DataTable dTable = new DataTable();
try
{
dTable = p.Load();
}
catch (StackOverflowException ee)
{
string message = ee.Message.ToString();
}
finally
{
p = null;
}
return dTable;
}
「の値を返さないすべてのコード。」 - 例外をキャッチしても再スローしない場合、キャッチブロックから関数の最後まで、 'return'を通らずに落ちます。また、try/finallyを 'using'ブロックを使って書き直すことができます - それはもっと明白かもしれません - あなたは接続を閉じて処分する必要はありません。十分に処分してください(私は前に話しましたように) – Rup
スタックトレース?また、 'using'ステートメントについて学ぶことで利益を得ることができます。 –
私はこのコードであるマルチレイヤーに新しいです。 stacktraceを取得するには?私は通常、Label1.Text = ex.StackTrace.ToString()を行った。 – healxph0enix