データセットにcsvファイルを読み込むOLDB接続があります。今私は3,00または15,00(それはユーロの金額)のような列がありますが、OdbcDataAdapterの.Fillメソッドを呼び出すと、値がDateTimeに変更されます。これは私がCSVを読み、データセットに変換するために使用するコードです: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;
レコードは次のようになります。
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に変換する必要があるのは、データベースにすべての行を追加したくないためです。インポートするモジュールにDataSetを一度に挿入します(インポートモジュールです)。
?
ありがとうございます!
私は何かが紛失していますか?あなたのファイルはコンマ区切りかタブ区切りですか?小数点としてコンマをカンマで区切ったファイルですか?それはいくつかの問題を引き起こす可能性がある。ファイルの行の正確な形式を投稿できますか? – Brett
多分あなたは '.'で置き換えるためにコード中のカンマを必要とするかもしれません、今それは時間として解釈されます。それは私の謙虚な意見です。 –
申し訳ありませんが、私はそれについて言及していませんでしたが、それはタブで区切られています... '、'を '。'ですばやく置き換えることは可能です。コード内にあるか、それともノートパッド++などで置き換える必要がありますか? – CyberK