0

我用 c# 和 oledb 创建了 DBF 文件,文件是正确的并且被完美地填充,完全没有问题。我只是一个很小的问题,就是当我打开那些 dbf 文件时,所有 int 值最后都包含零,所以我找到了一个 '1.0000' 而不是 '1' 。有没有办法擦除那些零?

这是创建和填充表格的代码:

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 表吗?如果是这样,我建议使用 Microsoft 的 Visual Foxpro OleDB 提供程序而不是 Jet。它可能更好地支持正确的“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 回答