How to create a .dbf file using c#?

前端 未结 2 790
忘了有多久
忘了有多久 2020-12-21 04:28

I am trying this to make a select and it works just fine

string str = 
    \"SELECT * FROM FREE RIGHT JOIN TestTest ON FREE.DOCNO = TestTest.DOCNO\";
DataTab         


        
相关标签:
2条回答
  • 2020-12-21 05:03

    Use vfpoledb provider and field type NUMERIC instead of DECIMAL.

    string ConnStr1 = @"Provider =vfpoledb; Data Source = C:\MyDataSource; Collating Sequence =machine;
    
    0 讨论(0)
  • 2020-12-21 05:19

    Your problem is caused by Zip decimal(5), as the ODBC dBase driver doesn't like it. Off the top of my head, and after a quick google, I couldn't come up with a syntax it would tolerate. It does accept it quite merrily if you use the OleDb provider instead, as follows:

    using (var dBaseConnection = new OleDbConnection(
        @"Provider=Microsoft.Jet.OLEDB.4.0; " +
        @" Data Source=C:\Users\RobertWray\Documents\dBase; " +
        @"Extended Properties=dBase IV"))
    {
        dBaseConnection.Open();
    
        string createTableSyntax = 
            "Create Table Person " +
            "(Name char(50), City char(50), Phone char(20), Zip decimal(5))";
        var cmd = new OleDbCommand(createTableSyntax, dBaseConnection);
        cmd.ExecuteNonQuery();
    }
    

    One question though: Are you sure that you want to create the Zip column as a decimal? Not being a US resident I'm not 100% confident on this information, but, according to Wikipedia ZIP codes can start with a 0. Storing them as a numeric datatype won't allow you to accurately represent that.

    My code for creating the table via ODBC:

    using (var dBaseConnection = new OdbcConnection(@"Driver={Microsoft dBASE Driver (*.dbf)};DriverID=277;Dbq=C:\Users\RobertWray\Documents\dBase;"))
    {
        dBaseConnection.Open();
    
        string str0 = "Create Table Person2 (Name char(50), City char(50), Phone char(20))";
        var cmd = new OdbcCommand(str0, dBaseConnection);
        cmd.ExecuteNonQuery();
    }
    
    0 讨论(0)
提交回复
热议问题