2013-05-06 90 views
0

我用c#和oledb创建DBF文件,这些文件是正确的,并且完全填充,完全没有问题。我只是一个非常小的问题,它是当我打开这些dbf文件时,所有int值在末尾都包含零,所以不是'1',我找到了'1.0000'。有没有办法擦除这些零?DBF数字格式化C#

这里的创建和填写表格的代码:

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(); 
      } 
+0

1.使用参数化查询。 2.“打开这些dbf文件”是什么意思? – Dennis 2013-05-06 10:19:07

+0

我用excel打开文件 – SKGeek 2013-05-06 11:20:00

+0

@丹尼斯我用参数化查询,根本没有任何变化, – SKGeek 2013-05-06 11:28:20

回答

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)"; 
+0

我试过你的方法,但我得到一个错误“创建表中的语法错误” – SKGeek 2013-05-06 10:46:43

+0

任何其他想法@StefanM? – SKGeek 2013-05-06 11:29:50

+0

@SKGeek我编辑了我的文章。 – Stefan 2013-05-06 11:36:08

0

通过使用.DBF文件。你在使用Foxpro表吗?如果是这样,我会建议使用微软的Visual Foxpro OleDB提供程序而不是Jet。它可能会更好地支持适当的“整数”值。

+0

我使用dbase数据库,我没有使用foxpro ... – SKGeek 2013-05-06 10:34:55