使用C#中的select from csv文件的值错误
本文关键字:文件 错误 csv from 中的 select 使用 | 更新日期: 2023-09-27 18:29:08
我有一个csv文件,其中存储了一些行,如:
code --name --req --country
VS161A0166--ÁO KHOÁC--S79095--VIETNAM
VS161A0240--ÁO THUN --S79096--VIETNAM
Im使用Odbc连接并检索c#中的数据
string strConnString = "Driver={Microsoft Text Driver (*.txt; *.csv)};Dbq=c:;Extensions=asc,csv,tab,txt;Persist Security Info=False;HDR=NO;IMEX=1";
string sql_select;
System.Data.Odbc.OdbcConnection conn;
conn = new System.Data.Odbc.OdbcConnection(strConnString.Trim());
conn.Open();
sql_select = "select * from [test.csv]";
obj_oledb_da = new System.Data.Odbc.OdbcDataAdapter(sql_select, conn);
obj_oledb_da.Fill(ds);
conn.Close();
但我得到了意想不到的价值
VS161A0166--ÁO KHOÁC--79095.000--VIETNAM
VS161A0240--ÁO THUN --79096.000--VIETNAM
我该怎么修?感谢的帮助
所以,这看起来很奇怪,但这里有一个C#中的解决方案,它将引用VisualBasic命名空间。我知道,很奇怪。
using Microsoft.VisualBasic.FileIO;
public List<MyVal> GetValues() {
var path = "path/to/file";
var list = new List<MyVal>();
using(var csvReader = new TextFieldParser(path)) {
csvReader.TextFieldType = FileIO.FieldType.Delimited;
csvReader.SetDelimiters("--");
while(!csvReader.EndOfData) {
var currentRow = csvReader.ReadField();
if(csvReader.LineNumber != 1)
list.Add(new MyPoco() { Code = currentRow[0], Name = currentRow[1], Req = currentRow[2], Country = currentRow[3]});
}
}
}
return list;
}
使用此作为类MyPoco:
public class MyPoco {
public string Code {get;set;}
public string Name {get;set;}
public string Req {get;set;}
public string Country {get;set;}
}