我在从.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加上查看器的数值有问题
答案 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)
我只想在我的代码中指出:
_insert.Parameters.Add("float", OleDbType.Single).Value = float.parse("123");
插入的值为0:
感谢您的帮助......