0

私は c# と oledb で DBF ファイルを作成します。ファイルは正しく、完全に埋められています。まったく問題ありません。私はそれに関する非常に小さな問題です。これらのdbfファイルを開くと、すべてのint値の最後にゼロが含まれているため、「1」の代わりに「1.0000」が見つかりました。これらのゼロを消去する方法はありますか?

テーブルを作成して埋めるコードは次のとおりです。

using (OleDbCommand cmd = connection.CreateCommand())
        {
            /*  Creation    Des  Tables   DBF   */

            //Create ptemp_param
            cmd.CommandText = @"CREATE TABLE test1( code int ,  
                                                    type varchar(50),   
                                                     nr int , 
                                                     name varchar(50) , 
                                                     date1 date)";
            cmd.ExecuteNonQuery();


            int  day, month, year, dow, endmonth;

            DateTime   date1;


            //Filling & Sending   Param & Deleting it


            foreach (string line in lines)
            {


                string[] split = line.Split('|');


                cmd.CommandText = @"insert into test1 values (" + split[0] + ",'" + split[1] + "'," + split[2] + ",'" + split[3] + "','" + split[4]  + "')";

                cmd.ExecuteNonQuery();
            }
4

2 に答える 2

0

.DBF ファイルを使用して。Foxpro テーブルを使用していますか? その場合は、Jet の代わりに Microsoft の Visual Foxpro OleDB プロバイダーを使用することをお勧めします。適切な「int」値をサポートする方が良いかもしれません。

于 2013-05-06T10:31:20.320 に答える
0

次のようにテーブルを作成してみてください。

cmd.CommandText = @"CREATE TABLE test1( code int ,  
                                                type varchar(50),   
                                                 nr int(10), 
                                                 name varchar(50) , 
                                                 date1 date)";

の定義の変更に注意してくださいnr。挿入できる量が制限されるため、それに応じて値を設定します。

グーグルで調べた後、.DBF ファイルが dBase に属していることがわかりました。これは構文が少し異なります (以下を参照)。

cmd.CommandText = @"CREATE TABLE test1( code int ,  
                                                type varchar(50),   
                                                 nr numeric(10,0), 
                                                 name varchar(50) , 
                                                 date1 date)";
于 2013-05-06T10:15:14.123 に答える