为什么datatable中的数据转换为INT类型

时间:2012-02-10 08:32:01

标签: c# datatable rounding

我有一个txt文件,这里有一些示例数据:

Id,PriceOne,Company,PriceTwo,PriceThree
11,15.3599997,Japan ltd,12.23,3.1777777
12,,Koyoto ltd,,0
13,86.25,New Wor,-1289519.44,2536.1245627
......

我使用这个commandText将txt文件的数据读入datatable:

 string connString = @"Driver={Microsoft Text Driver (*.txt; *.csv)};Dbq=" 
                   + filePath + ";Extensions=asc,csv,tab,txt;";
        try
        {
            using (OdbcConnection odbcConn = new OdbcConnection(connString))
            {
                odbcConn.Open();
                OdbcCommand oleComm = new OdbcCommand();
                oleComm.Connection = odbcConn;

                oleComm.CommandText = string.Empty;
                if (fileName.ToLower().Contains("fairvalue"))
                 oleComm.CommandText = "select * from [" + fileName + "#txt]";
                else
                 oleComm.CommandText = "select * from [" + fileName + "#csv]";
                OdbcDataAdapter adapter = new OdbcDataAdapter(oleComm);
                DataSet ds = new DataSet();
                adapter.Fill(ds, fileName);
                return ds.Tables[0];
            }
       }

但是当我调试数据表​​时,我得到了如下的结果:

Id PriceOne    Company      PriceTwo  PriceThree
11 15.3599997  Japan ltd    12        3
12             Koyoto ltd   0
13 86.25       New Wor      -1289519  2536
......

我不知道为什么PriceTwo列和PriceThree列的值被更改为INT,那么,PriceOne列的值是对的?

有人能帮帮我吗? THX。

1 个答案:

答案 0 :(得分:1)

检查具有什么数据类型的两列中的数据库表([priceHistory #txt])。 它必须是int数据类型。

更改" PriceTwo"的数据类型和 PriceThree"从整数到十进制(18,2)

它会正常工作。

Id PriceOne    Company      PriceTwo (should be decimal)  PriceThree (should be decimal)
11 15.3599997  Japan ltd    12        3
12             Koyoto ltd   0
13 86.25       New Wor      -1289519  253
检查并告诉我。