2016-04-26 70 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文件中的目標字段的類型和尺寸是什麼?