0

.dbfVisual 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

OleDbConnection を作成してデータベース ファイルを使用する場合、接続ソースが、実際のテーブルではなく、テーブルが存在する論理 PATH を指すようにする必要があります。

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 からのものである場合は、Microsoft にアクセスして、Visual Foxpro OleDb プロバイダーをダウンロードします。

最後に考えられるのは、古い DOS 8.3 ファイルの命名規則を意味する最大 8 文字の切り捨てられたテーブル名をエラーが参照しているということです。それがあなたの問題に直面しているのかどうかはわかりません。

于 2012-05-22T17:37:47.750 に答える
0

のテーブルの名前はcuttingstatus.dbf?

ステートメントは次のようになります。

INSERT INTO TABLE_NAME
VALUES(adddate) 

変数の値としてqueryCutting

于 2012-05-22T12:08:32.557 に答える