2011-01-27 57 views
0

我有一個OLDB連接將csv文件讀入數據集。現在在CSV中我有一列像3,00或15,00(這是歐元的金額),但是當我調用OdbcDataAdapter的.Fill方法時,它將值更改爲DateTime。這是我的代碼用於讀取CSV並將其轉換爲一個數據集:OLDB讀取CSV文件,但它會更改值

DataSet ds = new DataSet(); 
      try 
      { 
       // Creates and opens an ODBC connection 
       string strConnString = "Driver={Microsoft Text Driver (*.txt; *.csv)};Dbq=" + filePath.Trim() + ";Extensions=asc,csv,tab,txt;Persist Security Info=False"; 
       string sql_select; 
       OdbcConnection conn; 
       conn = new OdbcConnection(strConnString.Trim()); 
       conn.Open(); 

       //Creates the select command text 
       sql_select = "select * from [" + this.fileName.Trim() + "]"; 

       //Creates the data adapter 
       OdbcDataAdapter obj_oledb_da = new OdbcDataAdapter(sql_select, conn); 

       //Fills dataset with the records from CSV file 
       obj_oledb_da.Fill(ds, "csv"); 

       //closes the connection 
       conn.Close(); 
      } 
      catch (Exception e) //Error 
      { 
       MessageBox.Show(e.Message, "Error - LoadCSV", MessageBoxButtons.OK, MessageBoxIcon.Error); 
      } 
      return ds; 

的CSV的記錄是這樣的:

2005 2 20 7024 0 0 2900 14 19 0,00 3,00 3,00 0,00 0,00 0,00 15,80 18,80 0,00 0,00 90014 99999998 99999998  0 0 23/02/2005 0 stt  7024 15,80 0,00 N 60376940043 fis 

從數據集接收到的記錄是這樣的:

2005 2 20 7024 0 0 2900 14 19 30-12-1899 0:00:00 30-12-1899 15:26:00 30-12-1899 15:26:00 30-12-1899 0:00:00 30-12-1899 0:00:00 30-12-1899 0:00:00 80,33 95,59 30-12-1899 0:00:00 30-12-1899 0:00:00 92705 99999998 99999998  0 0 23-2-2005 0:00:00 0 stt  7024 80,33 30-12-1899 0:00:00 N  fis 

我在這裏錯過了什麼?因爲DataSet的記錄應該與CSV記錄完全相同。我需要將CSV轉換爲DataSet,因爲我不想將所有單獨的行添加到數據庫中,所以我一次將數據集插入到數據庫中(這是導入模塊)

誰能幫助我?

在此先感謝!

+0

我錯過了什麼 - 你的文件逗號分隔或製表符分隔嗎?它是逗號分隔文件,逗號作爲小數點嗎?這可能會導致一些問題。你能在文件中發佈該行的確切格式嗎? – Brett 2011-01-27 20:48:09

+0

也許你需要代碼中的逗號替換爲`.`,現在它被解釋爲時間。這是我的愚見。 – 2011-01-27 20:48:47

回答