从.NET Visual Fox Pro驱动程序在DBF文件中插入浮点值

时间:2016-04-26 07:45:02

标签: .net foxpro oledbcommand

我在从.NET中的DBF文件中插入浮点值时遇到了一些问题。我使用Visual Fox Pro OLEDB驱动程序for .NET和OleDbCommand执行以下查询

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 plus查看器打开DBF文件并查看结果,尝试了xBase View Database explorer,现在我可以看到插入的正确值了.. .i猜DBF加上查看器的数值有问题

2 个答案:

答案 0 :(得分:2)

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

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

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文件中目标字段的类型和尺寸是什么?

答案 1 :(得分:0)

this is the table info

我只想在我的代码中指出:

_insert.Parameters.Add("float", OleDbType.Single).Value =  float.parse("123");

插入的值为0:

as you can see in this image

感谢您的帮助......