我在将数据从数据集写入 Excel 电子表格时遇到超时问题。这是我目前的连接字符串:
<add key="ExcelConnectionStringHeader" value="Provider=Microsoft.ACE.OLEDB.12.0;Connect Timeout=30;Extended Properties="Excel 12.0;HDR=YES";Data Source="/>
提供程序似乎不支持 Connect Timeout 属性。Connection Timeout、Timeout、ConnectionTimeout、ConnectTimeout 等也不是。我的代码创建了一个 Data Adapter 和 InsertCommand,并从数据集进行更新。除非更新命令本身花费超过 15 秒(这是默认的 OleDb 超时),否则这非常有效。这就是为什么我试图在连接字符串中设置它。我已经从默认的 30 增加了 CommandTimeout,但这真的无关紧要。以下是我的代码:
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();
我省略了实际构建插入命令的内容和参数的循环等。相信我,一切正常。2200+ 条记录工作正常。
在我添加计时器之后,我发现问题是超时。处理 2221 条记录时,需要 14.95 秒,并且在电子表格中显示得很好。处理 2260 条记录时,需要 15.21 秒,但没有任何显示。没有任何错误。我检查了所有行更新后的行状态,它们都没有显示失败。
底线,由于 ConnectionTimeout 属性是只读的,并且提供程序似乎不支持连接字符串中的超时,该怎么办....
谢谢。