首页 新闻 搜索 专区 学院

C#判断数据库中表中某列是否可以为空

0
悬赏园豆:30 [已关闭问题] 关闭于 2012-12-26 08:52

怎么样判断数据库中表中字段是否可以为空,我将数据库中表绑定到数据集DataSet中,代码实现如下:

public DataSet GetDataSet(string sql)        

{  

           DataSet ds = new DataSet();

            using (SqlConnection con = new SqlConnection(@"data source=WEIHU001\SQLEXPRESS;integrated security=true;database=Text;"))            

    {

                using (SqlCommand cmd = con.CreateCommand())                     

      {

                       cmd.CommandType = CommandType.Text;                     cmd.CommandText = sql;

                      SqlDataAdapter sda = new SqlDataAdapter(cmd);                     sda.Fill(ds);

                }            

    }

        return ds;        

}

现在我想通过绑定到数据集中的表来判断表中的某列是否可以为空。用过GetDataSet().Tables[0].Columns[0].AllowDBNull这个属性,发现所有的值都是true,查过之后发现这个属性似乎适用于编程创建的表,而不适合从数据库中获得的表。

尐sんΙ頭的主页 尐sんΙ頭 | 初学一级 | 园豆:178
提问于:2012-12-24 15:12
< >
分享
所有回答(3)
0

是某行的某列还是,而是这一列全部为Null

select * from t1 where col1 is not null

chenping2008 | 园豆:9836 (大侠五级) | 2012-12-24 15:23

我是想判断这一列是否是非空的,问题没描述清楚

在程序动态的判断表中列的非空状态,是想用户在DataGridView控件中添加数据时提示用户该字段是否可以为空

支持(0) 反对(0) 尐sんΙ頭 | 园豆:178 (初学一级) | 2012-12-24 15:29

@尐sんΙ頭: 那应该是要得到这个表的定义的信息。

举个例子:

SELECT name,is_nullable FROM sys.columns
WHERE object_id = (SELECT object_id FROM sys.objects
WHERE name ='rolebasic' ) AND name='ruid'

rolebasic是表名

ruid 是你要检测的列

is_nullable 为 0  表示不能为null ,1代表可以为null

支持(0) 反对(0) chenping2008 | 园豆:9836 (大侠五级) | 2012-12-24 15:45
0

数据库有isnull的函数啊 select  isnull(name) from table

程序新青年 | 园豆:841 (小虾三级) | 2012-12-24 15:59

都说了,我是想在用户动态添加数据的时候判断

支持(0) 反对(0) 尐sんΙ頭 | 园豆:178 (初学一级) | 2012-12-24 16:02

@尐sんΙ頭: 你想太多了

支持(0) 反对(0) 茂茂 | 园豆:2892 (老鸟四级) | 2012-12-24 16:12
0

Tables[0].Columns[0] == DBNull.Value

geass.. | 园豆:1819 (小虾三级) | 2012-12-24 18:17

是否可以为空,不是等于空,你得这种写法我知道,我就是想写一个公共的方法,用来判断当用户添加数据时此列是否可以为空

支持(0) 反对(0) 尐sんΙ頭 | 园豆:178 (初学一级) | 2012-12-24 20:35
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册