0

如何.dbf在 Visual c# 中使用 SQL 将数据插入格式数据库?

和使用 MS Access 时一样吗?

OleDbConnection dbConn = new OleDbConnection(@"Provider=Microsoft.Jet.OLEDB.4.0;Data Source=C:\Users\wz\Desktop\UBS\onetimecapture\onetimecapture\onetimecapture\bin\Debug\;Extended Properties=dBase IV;");

try
{
   // Open connection.
   dbConn.Open();
   //string queryCutting = "INSERT INTO cuttingstatus.dbf ([Status]) VALUES(adddate)";
   string queryCutting = "INSERT INTO cuttingstatus.dbf VALUES(adddate)";
   OleDbCommand command_cutting = new OleDbCommand(queryCutting, dbConn);

   command_cutting.Parameters.AddWithValue("adddate", "123");
   command_cutting.ExecuteNonQuery();
   dbConn.Close();
}
catch
{
    MessageBox.Show("Error", "SCADA system", MessageBoxButtons.OK);
}

但它返回一个错误说

Microsoft Jet 数据库引擎找不到对象'cuttings'。
确保对象存在并且正确拼写其名称和路径名。

数据库被调用cuttingstatus.dbf,它只包含一个列Status

感谢您的帮助 =)

4

2 回答 2

0

中表的名称是cuttingstatus.dbf什么?

该声明应类似于:

INSERT INTO TABLE_NAME
VALUES(adddate) 

作为变量的值queryCutting

于 2012-05-22T12:08:32.557 回答
0

使 OleDbConnection 使用数据库文件时,您希望连接源指向表所在的逻辑路径...而不是实际表。

Connection dbConn = new OleDbConnection(@"Data ource=C:\SomePath\WhereAreAllTables;Provider=Microsoft.Jet.OLEDB.4.0;Extended Properties=dBase IV;");

然后,您的插入查询不引用 .dbf 扩展名......它是由连接暗示的。此外,即使它可能是单列,最好显式显示列和值,例如:

string queryCutting = "INSERT INTO cuttingstatus ( YourColumnName ) VALUES ( @adddate )";

接下来……真的是DBase IV系统吗?FoxPro 表?快船?我会确保适当的提供者。如果数据实际上来自 Foxpro,我会去微软下载 Visual Foxpro OleDb 提供程序。

最后一个想法......是错误是指最多8个字符“cuttings”的截断表名,这意味着旧的DOS 8.3文件命名约定。不知道这是否也是您遇到的问题。

于 2012-05-22T17:37:47.750 回答