在表中,有几个列是 number(16,3)类型,用sql语句查询后,放到datatable中,有两个列的类型就变成int64,其他列类型就double,这是为什么呢?怎么让所有列都是double类型呢代码如下 string sql = " select c_spmc as 商品名称,n_spdj as 上货价,n_xsdj as 零售价,n_bysl as 库存数量,n_byje as 库存金额,n_sysl as 接班数量,n_syje as 接班金额, n_rksl as 上货数量,n_rkje as 上货金额,n_drsl as 补货数量,n_drje as 补货金额,n_cksl as 销售数量,n_ckje as 成本金额,n_cksl* n_xsdj as 零售金额,n_dcsl as 交班数量,n_dcje as 交班金额,c_splb as 商品类别,c_spfl as 商品分类,c_sptm as 商品条码,c_spgg as 商品规格,c_spdw as 商品单位,c_spbh as 商品编号 from cy_pda_spmxz  order by c_spbh";
    
            DataTable dt =dbconnect.dbDataReader(sql);
           MessageBox.Show( dt.Rows[0]["交班金额"].GetType().ToString()); //这个就是int64类型
           MessageBox.Show(dt.Rows[0]["库存金额"].GetType().ToString());//这个就是double类型
n_dcje n_byje在数据库中都是number(16,3)
数据库是sqlite wince下,
请高手指点。。数据库DATATABLE

解决方案 »

  1.   

    数据库里类型跟你DataTable毛关系
      

  2.   

    问题解决,sqlite数据库,没有严格的类型校验,存进去是整数,列类型就是int,存进去的不是整数,甚至是0.00,就是double,所以,我给个默认值0.00就ok了
      

  3.   

    在补充一下,number(16,3)是oracle的类型,我偷懒,直接存出sql语句,在sqlite中建的表,后来测试,在sqlite中,number(16,3) 存进去是0,列类型自动就变成int,把类型改成double,即使存进去的是0,也是double类型。