2016-04-26 67 views
2

我有一些问题在.NET的DBF文件中插入浮点值。我使用Visual福克斯临OLEDB驱动程序.NET和OleDbCommand的执行查询如下从.NET Visual Fox Pro驱动程序在DBF文件中插入浮点值

string sConn = ConfigurationManager.ConnectionStrings["ConnectionString"].ToString(); 
System.Data.OleDb.OleDbConnection dbConn = new System.Data.OleDb.OleDbConnection(sConn); 
OleDbCommand _insert = new OleDbCommand("INSERT INTO Table (string1,string2,float) values (?,?,?)", dbConn); 
_insert.Parameters.Add("string1", OleDbType.Char).Value = "string1"; 
_insert.Parameters.Add("string2", OleDbType.Char).Value = "string2"; 
//here is the problem, this line doesn´t work, just insert a 0 valuein the field 
_insert.Parameters.Add("float", OleDbType.Single).Value = float.parse("123"); 
//but instead, inserting value in floating point , field is updated 
_insert.Parameters.Add("float", OleDbType.Single).Value = float.parse("1,3262473693533E-315"); 

从来就尝试了所有类型的转化,但没有工作...任何人有一个想法是什么是插入正确的方法在DBF中浮动值?

谢谢!

编辑:我想我到了这一点......我使用DBF加浏览器来打开DBF文件并查看结果,尝试xBase查看数据库浏览器,现在我可以看到正确的值插入...我猜DBF加查看器有数字值的问题

+0

我只想指出,VFP实际上并没有浮点数据类型。被称为float的那个与数字相同。 –

回答

2

您可能会发现此页上Visual FoxPro OLE DB Provider Data Support有用,它将OleDb类型映射到Visual Foxpro类型。

我创建了一个带有尺寸为10,4(如此4位小数)的浮点类型字段的DBF,并使用上面的代码成功地将C#中的123,123.45等等插入到OleDb中。

OleDbConnection dbConn = new System.Data.OleDb.OleDbConnection(@"Provider=VFPOLEDB.1;Data Source=c:\temp\numbertest.dbc"); 
OleDbCommand _insert = new OleDbCommand(@"INSERT INTO numbers (floatfield) values (?)", dbConn); 
_insert.Parameters.Add("float", OleDbType.Single).Value = float.Parse("123.45"); 
dbConn.Open(); 
_insert.ExecuteNonQuery(); 
dbConn.Close(); 

那么你自己的DBF文件中的目标字段的类型和尺寸是什么?