C#中往数据库插入空值报错解决方法
2014-10-04 00:11
162 查看
C#中的NUll于SQL中的null是不一样的, SQL中的null用C#表示出来就是DBNull.Value
在用C#往数据库里面插入记录的时候, 可能有的字段你不赋值,那么这个字段的值就为null, 如果按一般想法的话,这个值会被数据库接受, 然后在数 据表里面显示为NUll, 实际上这就牵扯到一个类型的问题, C#中的NUll于SQL中的null是不一样的, SQL中的null用C#表示出来就 是DBNull.Value, 所以在进行Insert的时候要注意的地方.
Example:
SqlCommand cmd=new SqlCommand("Insert into Student values(@StuName,@StuAge)" ,con);
cmd.parameters.add("@StuName" ,stuname);
cmd.parameters.add("@StuAge" ,stuage);
cmd.ExecuteNonQuery();
这些代码看似没有问题, 其实当stuname于stuage中的任何一个值为null的时候, 这代码就会报错...汗!!!
解决办法:
其实最简单的办法就是进行判断, 当stuname或stuage为空时, 插入DBNull.Value.
但是这样当一个数据库有很多字段时或者是有很多张表时, 代码就会很多了,我也没有找到特别方便的方法,我的方法是:写一个静态的方法来对变量的值进行判断:
Example :
static public object SqlNull(object obj)
{
if (obj == null )
return DBNull.Value;
return obj;
}
//用上面的方法对参数进行了判断
cmd.parameters.add("@StuName" ,SqlNull(stuname));
cmd.parameters.add("@StuAge" ,SqlNull(stuage));
cmd.ExecuteNonQuery();
在用C#往数据库里面插入记录的时候, 可能有的字段你不赋值,那么这个字段的值就为null, 如果按一般想法的话,这个值会被数据库接受, 然后在数 据表里面显示为NUll, 实际上这就牵扯到一个类型的问题, C#中的NUll于SQL中的null是不一样的, SQL中的null用C#表示出来就 是DBNull.Value, 所以在进行Insert的时候要注意的地方.
Example:
SqlCommand cmd=new SqlCommand("Insert into Student values(@StuName,@StuAge)" ,con);
cmd.parameters.add("@StuName" ,stuname);
cmd.parameters.add("@StuAge" ,stuage);
cmd.ExecuteNonQuery();
这些代码看似没有问题, 其实当stuname于stuage中的任何一个值为null的时候, 这代码就会报错...汗!!!
解决办法:
其实最简单的办法就是进行判断, 当stuname或stuage为空时, 插入DBNull.Value.
但是这样当一个数据库有很多字段时或者是有很多张表时, 代码就会很多了,我也没有找到特别方便的方法,我的方法是:写一个静态的方法来对变量的值进行判断:
Example :
static public object SqlNull(object obj)
{
if (obj == null )
return DBNull.Value;
return obj;
}
//用上面的方法对参数进行了判断
cmd.parameters.add("@StuName" ,SqlNull(stuname));
cmd.parameters.add("@StuAge" ,SqlNull(stuage));
cmd.ExecuteNonQuery();
相关文章推荐
- asp.net关于TextBox.Text的值为空时,将string数据插入到数据库中int数据的问题的解决方法
- 用ssh,往数据库插入中文时,出错,不是中文时,能正确插入数据库. 解决方法
- 解决用C#写的窗体应用程序向数据库SQL Server表格中写入中文乱码显示???的方法
- 使用PDO连接数据库 查询和插入乱码的解决方法
- MSSQL数据库被插入JS/sql注入挂马的解决方法
- C#中解决插入数据库的某个字段类型为datetime 去掉默认值1900-01-01
- C# 用数据库读取Excel出现“定义了过多字段”错误的解决方法 .
- C# 海量数据瞬间插入到数据库的方法
- T-SQL 语句插入中文数据时数据库显示全是问号“???”的解决方法(数据库编码规则)
- spring+hibernate 插入数据时控制台打印出sql语句,但是数据库中并没有数据解决方法
- 解决BLOB类型文件大于1MB无法插入数据库的方法
- C#中解决插入数据库的某个字段类型为datetime 为空
- C# :Word 标签替代文字或图片 (图片浮于文字之上 插入后回车或换行符替换的解决方法)
- C# 插入数据写回数据库,InsertCommand的使用方法
- C#以操作数据库方式访问EXCEL文件的几个常见问题及解决方法
- 【转】C#中往数据库插入空值的问题
- C# 海量数据瞬间插入到数据库的方法
- C#中解决插入数据库的某个字段类型为datetime 为空
- C#中往数据库插入/更新时候关于NUll空值的处理
- C#中往数据库插入空值的问题