2010-10-21 87 views
0

我想從我的.net應用程序更新.dbf文件。 我能夠將.dbf文件讀入網格,但無法從我的.net應用程序更新.dbf文件。如何從.NET應用程序更新.dbf文件

我已經使用下面的代碼來讀取.dbf文件。閱讀沒問題。但是,無法更新.dbf文件。

using System; 
using System.Collections.Generic; 
using System.ComponentModel; 
using System.Data; 
using System.Drawing; 
using System.Text; 
using System.Windows.Forms; 
using System.Data.OleDb; 
using System.Data.Odbc; 

namespace DBFwin 
{ 
public partial class Form1 : Form 
{ 
    public Form1() 
    { 
     InitializeComponent(); 
    } 

    private void ConnectToDBF() 
    {    
     System.Data.Odbc.OdbcConnection oConn = new System.Data.Odbc.OdbcConnection(); 
     oConn.ConnectionString = @"Driver={Microsoft dBase Driver (*.dbf)};SourceType=DBF;SourceDB=D:\databases\;Exclusive=No; Collate=Machine;NULL=NO;DELETED=NO;BACKGROUNDFETCH=NO;"; 
     oConn.Open(); 
     System.Data.Odbc.OdbcCommand oCmd = oConn.CreateCommand(); 

     //Test.DBF is the dbf file which is located at C:\rd\Setup folder. 
     oCmd.CommandText = @"SELECT * FROM C:\rd\Setup\Test.DBF"; 

     DataTable dt = new DataTable(); 
     dt.Load(oCmd.ExecuteReader()); 

     //Adding a row.. 
     //DataRow dtRow = dt.LoadDataRow(); 
     DataRow dtRow = dt.NewRow(); 
     //FIELD1 and FIELD2 are two columns of dbf file. 
     dtRow["FIELD1"] = 999; 
     dtRow["FIELD2"] = "RA-12"; 
     dt.BeginLoadData(); 
     dt.Rows.Add(dtRow); 
     dt.EndLoadData(); 
     //Above code adding a row in the grid, which is fine. 
     //How can i update dbf file from this source code??? 

     oConn.Close(); 
     dataGridView1.DataSource = dt; 
    } 

    private void btnClick_Click(object sender, EventArgs e) 
    { 
     ConnectToDBF(); 
    } 
} 
} 

注:我也看到,第三方組件阿波羅成分是availble的閱讀,添加.dbf文件的編輯記錄從.NET應用程序。該組件由VistaSoftware.com開發。這不是一個免費軟件。您能否確認,更新.dbf文件是否必須使用這個第三方組件,或者我可以通過我的.net應用程序來完成。

+0

您還沒有任何代碼... – 2010-10-21 05:35:54

+0

如果問題已經解決,請接受答案送禮者。 – NicoTek 2012-06-14 14:53:46

回答

5

我會做這樣的事情:

private void ConnectToDBF() 
{    
    System.Data.Odbc.OdbcConnection oConn = new System.Data.Odbc.OdbcConnection(); 
    oConn.ConnectionString = @"Driver={Microsoft dBase Driver (*.dbf)};SourceType=DBF;SourceDB=D:\databases\;Exclusive=No; Collate=Machine;NULL=NO;DELETED=NO;BACKGROUNDFETCH=NO;"; 
    oConn.Open(); 
    System.Data.Odbc.OdbcCommand oCmd = oConn.CreateCommand(); 

    // Insert the row 
    oCmd.CommandText = @"INSERT INTO C:\rd\Setup\Test.DBF VALUES(999, 'RA-12')"; 
    oCmd.ExecuteNonQuery(); 

    // Read the table 
    oCmd.CommandText = @"SELECT * FROM C:\rd\Setup\Test.DBF"; 

    DataTable dt = new DataTable(); 
    dt.Load(oCmd.ExecuteReader()); 

    oConn.Close(); 
    dataGridView1.DataSource = dt; 
} 
+1

GREAT !!!!!!!!!!非常感謝gysis。它的工作.. – 2010-10-21 08:54:13

相關問題