插入.dbf文件时遇到问题

时间:2012-03-10 00:54:32

标签: c# dbf oledbconnection

此代码不会保存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());
            }
        }

1 个答案:

答案 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文件,但应该是相应的记录,但不会显示出来。

然后,您的插入命令仍然可以完全相同。