필자는 탭으로 구분 된 텍스트 파일을 가지고 있는데, 소수점 값은 0,12 (소수점 구분 기호로 쉼표)로 형식이 지정됩니다. Provider = Microsoft.Jet.OLEDB.4.0을 통해 해당 내용을 OleDBDataReader에 구문 분석하지만 결과를 보면 10 진수이어야하는 값이 DateTime으로 변환되었습니다!OleDbDatareader 10 진수
숫자에 대한 소수 구분 기호로 쉼표를 이해하도록 응용 프로그램에 강제 적용하는 방법은 무엇입니까? cultureinfo를 en-US 또는 다른 언어로 변경하지 않았습니다.
public static OleDbDataReader CriarOleDbDataReader(string sCaminhoArquivo)
{
FileInfo fi = new FileInfo(sCaminhoArquivo);
string format;
string linha;
if (fi.Extension.ToLower().Equals(".csv"))
{
string texto = System.IO.File.ReadAllText(sCaminhoArquivo).Replace(',', ';');
System.IO.File.WriteAllText(sCaminhoArquivo, texto);
linha = System.IO.File.ReadAllLines(sCaminhoArquivo)[0];
format = "Delimited(;)";
}
else
{
linha = System.IO.File.ReadAllLines(sCaminhoArquivo)[0];
format = (linha.Split('\t').Count() > 1) ? "TabDelimited" : "Delimited(;)";
}
DefinirSchema(fi, format);
string cn = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" + fi.DirectoryName + ";Extended Properties='text;HDR=Yes';";
OleDbConnection con = new OleDbConnection(cn);
OleDbCommand cmd = new OleDbCommand("select * from [" + fi.Name + "]", con);
OleDbDataReader dr;
con.Open();
dr = cmd.ExecuteReader(CommandBehavior.CloseConnection);
return dr;
}
"IOF"필드는 10 진수이며 .txt 파일의 값은 0,02이지만 datetime을 반환합니다.
dr["iof"]
{30/12/1899 00:02:00}
Date: {30/12/1899 00:00:00}
Day: 30
DayOfWeek: Saturday
DayOfYear: 364
Hour: 0
Kind: Unspecified
Millisecond: 0
Minute: 2
Month: 12
Second: 0
Ticks: 599264353200000000
TimeOfDay: {00:02:00}
Year: 1899
하지만 데이터 변환기가 데이터로 채워진 후에 변환하고 싶지 않습니다. executereader를 올바른 값으로 채우고 싶습니다. – Lombardo
그러면'select * '대신에 다음과 같이하면됩니다 :'select functionConvertToDecimal (decimalField), anotherField, ... from ...' –