【发布时间】:2016-02-18 06:37:07
【问题描述】:
我的代码在下面,每当我为此运行单元测试(或实际应用程序)时,它都会停止执行测试(尽管下面的代码包含在 try catch 和 catch 中的断点中)。
生成的文件有一个严重性和消息字段,但没有其他字段。我看到它间歇性地运行,但是,我似乎无法让它再次运行。
//DBF Create Table
var currentLogTime = DateTime.UtcNow.ToString("yyMMddHH");
protected const string FORMAT_CONNECTION_STRING = @"Provider=Microsoft.Jet.OLEDB.4.0;Data Source={0};Extended Properties=dBASE IV";
var connectionString = String.Format(FORMAT_CONNECTION_STRING, DBFPath);
Connection = new OleDbConnection(connectionString);
Connection.Open();
using (var command = Connection.CreateCommand())
{
command.CommandText =
String.Format(
"CREATE TABLE {0} ([SEVERITY] NUMERIC, [MESSAGE] MEMO, [STACKTRACE] MEMO, [OCCURRED] CHAR(50))",
currentLogTime);
try
{
command.ExecuteNonQuery();
}
catch(Exception ex)
{
}
}
【问题讨论】:
-
好吧,您遇到了什么样的错误。您在
command.ExecuteNonQuery周围的try{}catch{} 代码在哪里,您是否尝试将using (var command = Connection.CreateCommand(sqlCmd, conn))替换为using (var command = new OleDbCommand())设置command.CommandType = CommandType.Text;您是否也使用调试器单步执行代码..?还有你为什么不创建一个更有意义的表名,而不是基于一些格式化的 utc 日期值.. -
使用
using (var command = new OleDbCommand())没有区别。是的,我已经尝试过它,每次它点击command.ExecuteNonQuery();时,visual studio都会停止调试(在我的电脑上以及我办公室的其他人上)。我对包含在其中的较大代码块进行了尝试捕获...其中的捕获永远不会被绊倒。当我 F10 (越过)command.ExecuteNonQuery();它每次都崩溃并停止调试。至于表名,我已将其设置为固定的,没有区别。 -
它只用我的几列创建一个 DBF 文件 路径是正确的,它实际上是在创建一个包含 SEVERITY 和 MESSAGE 的 DBF 文件。为什么 Visual Studio 崩溃而不是调试。为什么不创建额外的 2 个 STACKTRACE 和 OCCURRED 字段?我已经更改了列名,这似乎没有任何改变。我已经更改了连接/命令样式...没有区别。
-
更新了问题以反映最近的变化。没有不同。仍然只创建具有前 2 个字段的 DBF,并且 Visual Studio 在跨过
command.ExecuteNonQuery()时停止调试。 -
您是否尝试为您的数字和字符字段指定字段宽度