0
我上傳包含提交的url的excel表單時遇到問題,我想將excel的每個記錄與db數據進行匹配,在上傳小文件時工作正常它是好的,但如果有2MB文件,則有例外:詳細信息 超時已過期。在從池中獲取連接之前已超時。發生這種情況的原因可能是因爲所有連接池都在使用中,並且達到最大池大小。超時已過期。從池中獲取連接之前超時時間已過去
這裏是我的代碼
protected void btnUpload_Click(object sender, EventArgs e)
{
if ((txtFilePath.HasFile))
{
OleDbConnection conn = new OleDbConnection();
OleDbCommand cmd = new OleDbCommand();
OleDbDataAdapter da = new OleDbDataAdapter();
DataSet ds = new DataSet();
string query = null;
string connString = "";
string strFileName = DateTime.Now.ToString("sddMMyyyy_LOFTY");
string strFileType = System.IO.Path.GetExtension(txtFilePath.FileName).ToString().ToLower();
//Check file type
if (strFileType == ".xls" || strFileType == ".xlsx")
{
txtFilePath.SaveAs(Server.MapPath("~/AdminCpanel/UploadedExcel/" + strFileName + strFileType));
}
else
{
lblMessage.Text = "Only excel files allowed";
lblMessage.ForeColor = System.Drawing.Color.Red;
lblMessage.Visible = true;
return;
}
string strNewPath = Server.MapPath("~/AdminCpanel/UploadedExcel/" + strFileName + strFileType);
//Connection String to Excel Workbook
if (strFileType.Trim() == ".xls")
{
connString = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" + strNewPath + ";Extended Properties=\"Excel 8.0;HDR=Yes;IMEX=2\"";
}
else if (strFileType.Trim() == ".xlsx")
{
connString = "Provider=Microsoft.ACE.OLEDB.12.0;Data Source=" + strNewPath + ";Extended Properties=\"Excel 12.0;HDR=Yes;IMEX=2\"";
}
// Sheet name is Ads Posted
query = "SELECT * FROM [Ads Posted$]";
//Create the connection object
conn = new OleDbConnection(connString);
//Open connection
if (conn.State == ConnectionState.Closed) conn.Open();
//Create the command object
cmd = new OleDbCommand(query, conn);
da = new OleDbDataAdapter(cmd);
ds = new DataSet();
da.Fill(ds, "validateLog");
//// Sheet name is Details
//query = "SELECT * FROM [Details$]";
////Create the connection object
//conn = new OleDbConnection(connString);
////Open connection
//if (conn.State == ConnectionState.Closed) conn.Open();
////Create the command object
//cmd = new OleDbCommand(query, conn);
//da = new OleDbDataAdapter(cmd);
//DataSet dsdetails = new DataSet();
//da.Fill(dsdetails, "Details");
DateTime dtStartdate =Convert.ToDateTime(txtFromDate.Text);
DateTime dtEndDate = Convert.ToDateTime(txtEndDate.Text);
DataColumn dColumn = new DataColumn();
dColumn.DataType = System.Type.GetType("System.String");
dColumn.ColumnName = "Status";
ds.Tables[0].Columns.Add(dColumn);
bool flag = false;
if (ds.Tables[0].Rows.Count > 0)
{
RegistrationDB db = new RegistrationDB();
DataTable dtAds = db.GetPostedAdstoValidate(ds.Tables[0].Rows[1]["LoftyID"].ToString());
//excel sheet
for (int i = 0; i < ds.Tables[0].Rows.Count; i++)
{
if (Convert.ToDateTime(ds.Tables[0].Rows[i]["Date"].ToString()) <= dtEndDate && Convert.ToDateTime(ds.Tables[0].Rows[i]["Date"].ToString()) >= dtStartdate)
{
//db table
for (int z = 0; z < dtAds.Rows.Count; z++)
{
if (ds.Tables[0].Rows[i]["LoftyAddURL"].ToString() == dtAds.Rows[z]["URL"].ToString())
{
ds.Tables[0].Rows[i]["Status"] = "Validated!";
flag = true;
break;
}
else if (ds.Tables[0].Rows[i]["IPAddress"].ToString() == dtAds.Rows[z]["IPAddress"].ToString())
{
ds.Tables[0].Rows[i]["IPAddress"] = "Valid IP!";
flag = true;
break;
}
flag = false;
}
}
else
{
flag = true;
ds.Tables[0].Rows[i]["Status"] = "Date does not lie between Project start and end date!";
ds.Tables[0].Rows[i]["IPAddress"] = "InvalidIP/EmptyIP";
}
if (!flag)
ds.Tables[0].Rows[i]["Status"] = "Not Validated!";
//ds.Tables[0].Rows[i]["IPAddress"] = "Invalid IP";
}
}
//ds.Tables[0].Columns.Remove("F5");
//ds.Tables[0].Columns.Remove("F6");
//ds.Tables[0].Columns.Remove("F7");
grvExcelData.DataSource = ds.Tables[0];
grvExcelData.DataBind();
//dump to database for logging
ViewState["MyGridViewDate"]=ds.Tables[0];
for (int i = 0; i < ds.Tables[0].Rows.Count; i++)
{
RegistrationDB dump = new RegistrationDB();
string Loftyid = ds.Tables[0].Rows[i]["Loftyid"].ToString();
string Date = ds.Tables[0].Rows[i]["Date"].ToString();
string LoftyAddURL = ds.Tables[0].Rows[i]["LoftyAddURL"].ToString();
string Status = ds.Tables[0].Rows[i]["Status"].ToString();
string Addno = ds.Tables[0].Rows[i]["Addno"].ToString();
string IPAddress = ds.Tables[0].Rows[i]["IPAddress"].ToString();
dump.CreateLogValidation(Loftyid, Date, LoftyAddURL, Status, Addno,IPAddress);
}
lblMessage.Text = "Data retrieved successfully! Total Recodes:" + ds.Tables[0].Rows.Count;
lblMessage.ForeColor = System.Drawing.Color.Green;
lblMessage.Visible = true;
//da.Dispose();
//conn.Close();
// conn.Dispose();
}
else
{
lblMessage.Text = "Please select an excel file first";
lblMessage.ForeColor = System.Drawing.Color.Red;
lblMessage.Visible = true;
}
}
感謝提前的幫助,將是非常感謝所有。
您不處置OleDb對象。這將工作一段時間,取決於GC運行的頻率。或者不是,就像例外說的那樣。 – 2012-03-03 17:21:58