2012-03-10 79 views
1

此代碼不會將任何數據保存在dbf文件中。這裏有什麼問題?這是帶有建議更改的代碼。謝謝。將問題插入到.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

您是使用Visual Studio構建的嗎?你在調試器中運行它嗎? VS解決方案文件中是.dbf文件嗎?什麼是它的「複製到輸出目錄」屬性? .dbf的路徑是什麼?您打開的文件的路徑是什麼,您認爲沒有保存任何數據?在你的'新的OleDbConnection(...)'放置一個斷點,並檢查路徑是否真的是你想象的那樣。 – 2012-03-10 01:05:31

回答

0

並不積極,而是看你的連接,要連接到C盤根:....壞...這可能僅僅是權限的問題,而不是能夠在根目錄寫入「。

我建議建立一些子文件夾的連接,即使它只是

C:\ MyDBFTesting \

之後,看看是否「CREATE TABLE」的結果實際上是工作,你可以看到「test.dbf」。

最後,把你的ExecuteNonQuery()在一個try/catch

try 
{ 
    command2.ExecuteNonQuery() 
} 
catch(Exception e) 
{ 
    string x = e.Message; 
} 

把一個破發點的漁獲物和步入...看看其他元素/消息可能會在「E」異常旨在爲您提供更多可能的答案。

看到「.dbt」(這表明更多的自由格式的文本,而不是固定/標準型)的情況下,我會改變你創建明確識別的固定大小的容量CHARACTER ...像

create table Test (ID C(10), Changed C(10), Tacos C(10)) 

C =字符,10是列中允許的最大大小。其他數據類型,如I = int,D =僅限日期,T =日期/時間,L =邏輯等。這些是「已知」類型,它們提供了嚴格的結構。 TEXT是自由格式的,它的內容進入.dbt文件,但是應該是相應的記錄,但是不會顯示出來。

然後,您的插入命令將仍然工作相同。

+0

表(文件)被創建。列標題也在那裏,但沒有行。 try catch不會產生異常。 – 2012-03-10 01:17:36

+0

@NewsReader,那麼我仍然會在try catch中運行executenonquery,並查看是否可以報告什麼錯誤。它可能很簡單,只要將插入命令的.DBF引用排除在外,就如同連接到路徑時所暗示的那樣,它將採用.DBF擴展名。 - 最後一個想法,「名稱」可能是一個保留字...將您的創建表更改爲名稱以外的名稱... – DRapp 2012-03-10 01:19:58

+0

謝謝您的回覆。我將'Name'列更改爲'Tacos',新列標題名稱顯示爲Tacos。但仍然沒有排。也許插入語法是錯誤的?我更新了代碼。 – 2012-03-10 01:23:30