string databaseExportPath;
//打开数据库
openFileDialog1.Filter = "dbc 数据库文件 (*.dbc)|*.dbc";
if(openFileDialog1.ShowDialog() == DialogResult.OK)
{
//如:@"D:\temp.dbc"
databaseExportPath = openFileDialog1.FileName;
}
}
else
return;
string strConnection= "Driver={Microsoft Visual FoxPro Driver};SourceType=DBF;SourceDB="  + databaseExportPath;
OdbcConnection odbcConDbf = new OdbcConnection(strConnection);
odbcConDbf.Open();//保存表文件
saveFileDialog1.Filter = "dbf表文件 (*.dbf)|*.dbf";
if(saveFileDialog1.ShowDialog() == DialogResult.OK)
{
//如:@"D:\temp.dbc"
this.fileExportPath = saveFileDialog1.FileName;
//如:".dbc"
this.fileExportType = Path.GetExtension(this.fileExportPath);
//如:"temp"
this.fileExportName = Path.GetFileNameWithoutExtension(this.fileExportPath);
}
else
return;

OdbcCommand odbcCommand = odbcConDbf.CreateCommand();

odbcCommand.CommandText = "create TABLE " +this.fileExportName + "(id int, name CHAR(10))";odbcCommand.ExecuteNonQuery();odbcCommand.CommandText = "insert into " + this.fileExportName +" VALUES (2001, 'zhang')";
odbcCommand.ExecuteNonQuery();
odbcConDbf.Close();--------------------------------------------------------------------------------
可以创建表,但是执行插入语句(第二条odbcCommand.ExecuteNonQuery();)时出错.
ps:如果是access文件的话则没有一点问题。

解决方案 »

  1.   


    对第二个“odbcCommand.ExecuteNonQuery();”出错信息:
    未处理的“System.Data.Odbc.OdbcException”类型的异常出现在 system.data.dll 中。其他信息: 系统错误。
    -------------------------------------------------------
    可是可以创建表啊(打开看了)
      

  2.   

    楼主的思路不对啊,不要直接插入到数据库,应该先把记录写到数据集中再update,速度快很多而且不会出错~至于楼主的那个错误,可能是类型不匹配造成的.
      

  3.   

    可是,相似的语句插入到mdb文件中没有错误啊
      

  4.   

    用FOX的ODBC试试:"Driver={Microsoft dBASE Driver (*.dbf)};DriverID=277;Dbq=" + databaseExportPath;若用FOXPRO格式的,指定DBC位置后,再生成表可以;但若再用原来的连接字符串来插入,就会报错。
    (这是我的测试结果)
      

  5.   

    没有打开数据源吧
    应该加一下odbcCommand.Conection = odbcConDbf
      

  6.   

    我的测试代码是这样的:
    string databaseExportPath;
                MessageBox.Show("请选择你存放数据库的目录...");
                if (folderBrowserDialog1.ShowDialog() == DialogResult.OK)
                {
                    databaseExportPath = folderBrowserDialog1.SelectedPath;
                }
                else
                    return;
    string strConnection = "Driver={Microsoft dBASE Driver (*.dbf)};DriverID=277;Dbq=" + databaseExportPath;
       OdbcConnection odbcConDbf = new OdbcConnection(strConnection);   odbcConDbf.Open();   OdbcCommand odbcCommand = odbcConDbf.CreateCommand();
       odbcCommand.CommandText = "create TABLE test3 (id int, name CHAR(10),age int)";
       odbcCommand.ExecuteNonQuery();
       odbcCommand.CommandText = "insert into test3 VALUES (2001, 'zhang','33')";
       odbcCommand.ExecuteNonQuery();
       odbcConDbf.Close();
      

  7.   

    我的代码如下:
    string databaseExportPath;
                MessageBox.Show("请选择你存放数据库的目录...");
                if (folderBrowserDialog1.ShowDialog() == DialogResult.OK)
                {
                    databaseExportPath = folderBrowserDialog1.SelectedPath;
                }
                else
                    return;            string strConnection = "Driver={Microsoft dBASE Driver (*.dbf)};DriverID=277;Dbq=" + databaseExportPath;
               OdbcConnection odbcConDbf = new OdbcConnection(strConnection);            odbcConDbf.Open();            OdbcCommand odbcCommand = odbcConDbf.CreateCommand();
                odbcCommand.CommandText = "create TABLE test3 (id int, name CHAR(10),age int)";
                odbcCommand.ExecuteNonQuery();
                odbcCommand.CommandText = "insert into test3 VALUES (2001, 'zhang','33')";
                odbcCommand.ExecuteNonQuery();
                odbcConDbf.Close();