我遇到了将数据从数据集写入Excel电子表格的超时问题.这是我目前的连接字符串:
<add key="ExcelConnectionStringHeader" value="Provider=Microsoft.ACE.OLEDB.12.0;Connect Timeout=30;Extended Properties="Excel 12.0;HDR=YES";Data Source="/>
Run Code Online (Sandbox Code Playgroud)
提供程序似乎不支持"连接超时"属性.连接超时,超时,ConnectionTimeout,ConnectTimeout等都没有.我的代码创建了数据适配器和插入命令,以及数据集的更新.除非Update命令本身花费超过15秒,这是默认的OleDb超时,否则这很有效.这就是为什么我试图在连接字符串中设置它.我已将CommandTimeout从默认值30增加,但这确实无关紧要.以下是我的代码:
OleDbDataAdapter da = new OleDbDataAdapter(szHeaderSelect, oCnn); // Ratings_Test -- Loan_Test$A1:F1]",
DataSet dsTest = new DataSet();
da.InsertCommand = new OleDbCommand(szNewSQL + "(" + szColumns + ") " + "VALUES ( " + szParams + ")", oCnn);
da.InsertCommand.CommandTimeout = 300;
foreach (DataRow oDr in dtTable.Rows)
{
drNew = dsTest.Tables[0].NewRow();
dsTest.Tables[0].Rows.Add(drNew);
}
var timer = new System.Diagnostics.Stopwatch();
timer.Start();
var recs = da.Update(dsTest, szExcelTab); // Ratings_Test }
timer.Stop();
Run Code Online (Sandbox Code Playgroud)
我省略了循环,实际上构建了insert命令的内容和参数.相信我,一切正常.2200+记录工作正常.
在我添加计时器之后,我发现问题是超时.处理2221记录时,需要14.95秒,并在电子表格中显示正常.处理2260条记录时,需要15.21秒才会显示任何内容.没有任何错误.我检查了所有行更新后的行状态,它们都没有显示失败.
最重要的是,由于ConnectionTimeout属性是ReadOnly,并且提供程序似乎不支持连接字符串中的Timeout,该怎么做....
谢谢.