首页 新闻 会员 周边

Sql数据类型 和 .net数据类型的映射问题

0
悬赏园豆:10 [已关闭问题] 关闭于 2011-11-25 11:59

我们知道,Sql Server的数据类型 和 .net的数据类型并不匹配?比如 Sql Server中的bit类型,通过ado.net的Sql Provider 取回后变成了boolean类型,问题是,我能不能控制这个映射,比如说让它变为整数类型,我取回这个数据只是为了显示,不改写,这样的操作应该是安全的?这样我在DataGridView中(AutoGenerateColumns)显示这个列中就会显示成0,1了,而不是难看的Checkbox。一句话,我想在我的程序中显示的数据和 Sql Server中的查询工具显示的一模一样。大家能不能教教我,怎么做?

问题补充:

这个问题,大家看一下我的博客中的第一个WinForm程序(应该可以下载吧),前面给出的答案不够通用,我自己想了想,要么改数据,要么DataGridView手工生成Column。没什么方便的办法,在我的程序中,Sql语句是不能改的。SqlDataAdapter有个ReturnProviderSpecificTypes属性。我不知道返回来的值是什么?

ChatinCode的主页 ChatinCode | 老鸟四级 | 园豆:2272
提问于:2011-11-04 15:27
< >
分享
所有回答(3)
0

DataGridView可以再后台处理你从数据库当中获取来的值,根据你从数据库中的值,你可以进行手动装换,将装换后的值绑定到DataGridView上面就可以了。

胥健 | 园豆:151 (初学一级) | 2011-11-04 15:34
0

在CellFormatting事件中写。很方便的。

//DataGridView.Cell绘制
        private void dgv_Product_CellFormatting(object sender, DataGridViewCellFormattingEventArgs e)
        {
            if (e.RowIndex >= 0 && e.ColumnIndex == 8)
            {
                if (dgv_Product.Rows[e.RowIndex].Cells["类别性质"].Value.ToString() == "1")
                    e.Value = "产品";
                else if (dgv_Product.Rows[e.RowIndex].Cells["类别性质"].Value.ToString() == "2")
                    e.Value = "库品";
            }
        }

悟行 | 园豆:12559 (专家六级) | 2011-11-04 15:59
0

查询的时候 case when 字段 then 1 else 0 end 即可

小小刀 | 园豆:1991 (小虾三级) | 2011-11-07 22:42
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册