我的代码如下所示,每次运行单元测试(或实际应用程序)时,它都会停止执行测试(尽管下面的代码包含在try catch和catch中的断点)。
生成的文件包含Severity和Message的字段,但没有其他字段。我已经间歇地看到了这种情况,但是,我似乎无法让它再次运转。
//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)
{
}
}
答案 0 :(得分:0)
这可能是因为你正在创建一个关于日期数字的表格。您无法创建表格,例如" yyMMddHH"这可能看起来像16021715.尝试使用日志的前缀创建表,例如......
String.Format("CREATE TABLE Log{0} (etc.....", parm);
所以表名实际上会成为" Log16021715"并且是一个有效的表名。
答案 1 :(得分:0)
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);
Source="yourFilePathToSourceFile";Extended Properties=dBase IV";
using (OleDbConnection connection = new OleDbConnection(connectionString))
using (OleDbCommand command = connection.CreateCommand())
{
connection.Open();
command.CommandText = String.Format("CREATE TABLE {0} (SEVERITY I, MESSAGE M, STACKTRACE M, OCCURRED C(50) NOCPTRANS"
command.ExecuteNonQuery();
}
答案 2 :(得分:0)
在创建MEMO字段的DBT文件时,OleDB驱动程序遇到最大路径长度问题。缩短路径可以解决问题。