此代码不会保存dbf文件中的任何数据。这有什么不对?以下是包含建议更改的代码。谢谢。
string connectionString = @"Provider=Microsoft.Jet.OLEDB.4.0;Data Source=C:\TEMP;Extended Properties=dBase IV";
using (OleDbConnection connection = new OleDbConnection(connectionString))
using (OleDbCommand command = connection.CreateCommand())
{
connection.Open();
command.CommandText = @"CREATE TABLE TEST (Id Text, Changed Text, Tacos Text)";
command.ExecuteNonQuery();
}
using (OleDbConnection connection2 = new OleDbConnection(connectionString))
using (OleDbCommand command2 = connection2.CreateCommand())
{
connection2.Open();
command2.CommandText = @"Insert into TEST (Id, Changed, Tacos) VALUES ('One','Two','Three')";
try
{
command2.ExecuteNonQuery();
}
catch (Exception ee)
{
MessageBox.Show(ee.ToString());
}
}
答案 0 :(得分:0)
不是肯定的,但是看看你的连接,你正在连接到C的根:....糟糕......这可能只是权限问题,而且无法在根目录下写。'
我建议您创建与SOME子文件夹的连接,即使它只是
C:\ MyDBFTesting \
之后,看看“CREATE TABLE”结果是否真的有效,你可以看到“test.dbf”。
最后,将executeNonQuery()放在try / catch
中try
{
command2.ExecuteNonQuery()
}
catch( Exception e )
{
string x = e.Message;
}
在catch上设置一个断点并进入...查看“e”异常对象中可能包含的其他元素/消息,以便为您提供更多可能的答案。
看到“.dbt”的上下文(表示更多的自由格式文本而非固定/标准类型),我会更改您的创建以明确识别固定大小容量的CHARACTER ......类似于
create table Test ( ID C(10), Changed C(10), Tacos C(10) )
C =字符,10是列中允许的最大大小。其他数据类型,例如I = int,D =仅日期,T =日期/时间,L =逻辑等。这些是提供严格结构的“已知”类型。 TEXT是自由形式的,其内容进入.dbt文件,但应该是相应的记录,但不会显示出来。
然后,您的插入命令仍然可以完全相同。