私はASP.NETに熟練しているわけではありませんが、ASP.NET C#で書かれたWebアプリケーションがあります。読み込みに問題がありますデータをデータベースから取り出し、それをテーブルに格納します。以下は私のコードです。基本的には、ロードしようとすると断続的に「ページを表示できません」と表示されます。常にページを読み込むのに約10〜20秒かかるので、間違っていることは分かっています。誰かが私の間違いを指摘できますか?ASP.NET C#SQL Server DataReader
using (SqlConnection dbConn = new SqlConnection(strConnection))
{
SqlDataAdapter dbAdapter = new SqlDataAdapter();
SqlCommand dbCommand = new SqlCommand();
dbConn.Open();
// I tried the SET ARTITHABORT portion below based on other posts I found on SO - no better performance though
dbCommand.Connection = dbConn;
dbCommand.CommandText = "SET ARITHABORT ON";
dbCommand.ExecuteNonQuery();
dbCommand.CommandText = @"SELECT ID, NAME, PART_NUMBER, BARCODE, QOH, MINIMUM_QOH, LAST_PRICE FROM INVENTORY" + Session["table_extension"].ToString();
dbCommand.Connection = dbConn;
SqlDataReader dbReader = dbCommand.ExecuteReader(CommandBehavior.CloseConnection);
if (dbReader.HasRows)
{
strInventoryTable = @"<table id='inventoryTable' cellspacing='0' cellpadding='5' border='0' width='100%'>
<thead>
<tr>
<th>Name</th>
<th>Part No.</th>
<th>Barcode</th>
<th>QOH</th>
<th>Min. QOH</th>
<th>Last Price</th>
<th>Action</th>
</tr>
</thead>
<tbody>";
string rowMarker = "even";
while (dbReader.Read())
{
if (rowMarker == "even")
{
strInventoryTable += "<tr class='even clickable' onclick='location.href=\"edit_product.aspx?id=" + dbReader["ID"] + "\";'>";
rowMarker = "odd";
}
else
{
strInventoryTable += "<tr class='odd clickable' onclick='location.href=\"edit_product.aspx?id=" + dbReader["ID"] + "\";'>";
rowMarker = "even";
}
strInventoryTable += "<td>" + dbReader["NAME"] + "</td>";
strInventoryTable += "<td class='tdCenter'>" + dbReader["PART_NUMBER"] + "</td>";
strInventoryTable += "<td class='tdCenter'>" + dbReader["BARCODE"] + "</td>";
strInventoryTable += "<td class='tdRight'>" + dbReader["QOH"] + "</td>";
strInventoryTable += "<td class='tdRight'>" + dbReader["MINIMUM_QOH"] + "</td>";
strInventoryTable += "<td class='tdRight'>" + globals.formatMoney(dbReader["LAST_PRICE"].ToString()) + "</td>";
strInventoryTable += "<td class='tdCenter'><a href='edit_product.aspx?id=" + dbReader["ID"] + "'>Edit</a> ";
strInventoryTable += "<a href='delete_product.aspx?id=" + dbReader["ID"] + "'>Delete</a></td>";
strInventoryTable += "</tr>";
}
strInventoryTable += "</tbody></table>";
}
else
{
strInventoryTable = "<p><strong><em>No inventory found in database</em></strong></p>";
}
}
inventoryTable.InnerHtml = strInventoryTable;
クエリ自体は完了するまでに0.00003秒かかります。だから私はそれがクエリではないことを知っている、と私は約2,400行戻っている。
UPDATE
ボトルネックがあるデバッグしようとしている...ここ
クエリが始まっ結果は以下のとおりです。2016年3月24日9時06分06秒AM
クエリが完成:2016年3月24日9時06分06秒AM
データリーダーが開始:2016年3月24日9時06分06秒AM
データリーダーが終了:3/2 2016分の4九時06分43秒AM
だから私の問題はしばらく(dbReader.Read()){}ループ
"手で"テーブルを作成するのではなく、GridViewを使用したくないですか? – ConnorsFan
このリンクに移動し、GridViewを使用します。http://quickstarts.asp.net/quickstartv20/aspnet/doc/ctrlref/data/gridview.aspx – rashfmnb
これをデバッグすると、ボトルネックはどこにありますか? *推測*、*測定*しないでください。 – David