C#中往数据库插入空值报错解决方法
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#中往数据库插入空值报错解决方法的更多相关文章
- Eclipse中导入项目后js报错解决方法(转未解决问题)
本文转自:http://blog.csdn.net/chenchunlin526/article/details/54666882 Eclipse中导入项目后js报错的原因与解决方法 在我们将项目导入 ...
- xcode6 中增加SDWebImage/SDWebImageDownloaderOperation.m报错解决方法
报错报错:Use of undeclared identifier '_executing' / '_finished': 解决方法例如以下:
- angularJS中$digest already in progress报错解决方法
看到一个前端群里有人问,就查了下解决"$digest already in progress"最好的方式,就是不要使用$scope.$apply()或者$scope.$digest ...
- vue中执行npm run build报错解决方法?
遇到了执行npm run build 后报错: [build:js ] Module not found: Error: Can't resolve 'scss-loader' in 'D:\work ...
- Eclipse中导入项目后js报错解决方法
http://blog.csdn.net/chenchunlin526/article/details/54666882 原因是因为开启了js的校验功能 不影响项目 如需去除错误标志按链接文档操作即可 ...
- django.db.utils.InternalError: (1060, "Duplicate column name 'user_id'")迁移报错解决方法
django.db.utils.InternalError: (1060, "Duplicate column name 'user_id'")迁移报错解决方法 django.db ...
- Loadrunner参数化逗号报错解决方法
Loadrunner参数化逗号报错解决方法 介绍Loadrunner参数化时,参数中包含有逗号时出错的解决方法. 在Loadrunner进行参数化时,参数中如果含有逗号,编辑保存后会报错: 此 ...
- Android Studio support 26.0.0-alpha1 Failed to resolve: com.android.support:appcompat-v7:27.+ 报错解决方法
AS下如何生成自定义的.jks签名文件, 以及如何生成数字签名 链接:http://www.cnblogs.com/smyhvae/p/4456420.html 链接:http://blog.csdn ...
- eclipse创建的maven项目,pom.xml文件报错解决方法
[错误一:]maven 编译级别过低 [解决办法:] 使用 maven-compiler-plugin 将 maven 编译级别改为 jdk1.6 以上: <!-- java编译插件 --> ...
随机推荐
- Vue 组件3 作用域插槽
作用域插槽是一种特殊类型的插槽,用作使用一个(能够传递数据到)可重用模板替换已渲染元素. 在子组件中,只需将数据传递到插槽,就像你将props传递给组件一样: <div class=" ...
- Android中makfile的随记
什么是makefile?也许非常多Winodws的程序员都不知道这个东西,由于那些Windows的IDE都为你做了这个工作,但我认为要作一个好的Android底层程序员. makefile还是要懂. ...
- 你设计的应用是IO依赖型还是CPU依赖型?
这个话题可能看起来非常枯燥,但它对mysql的性能优化非常重要. 其实我在MYSQL 咨询工作中无时无刻接不在接触这类问题. IO工作负载与cpu依赖全然不同,尤其是当你的工作集(通常仅仅有数据库的一 ...
- js实现pdf对页面的打印
//-------------------------------点击打印的图标--------------------------------- <div class="dcsc&q ...
- OpenCV中Camshitf算法学习
今天上午,结合OpenCV自带的camshitf例程,简单的对camshitf有了一个大致的认识和理解,现总结如下: 1:关于HSV H指hue(色相).S指saturation(饱和度).V指val ...
- execute,executeQuery和executeUpdate的区别
在jdbc中有3种执行sql的语句分别是execute,executeQuery和executeUpdate execute执行增删改查操作 execute返回的结果是个boolean型,当返回的是t ...
- SlidingMenu官方实例分析4——AttachExample
AttachExample这个类没有继承BaseActivity,而是FragmentActivity,写到这好像感悟到了 为什么官方现在都推荐使用Fragment而不是Activity,因为Frag ...
- TFS2013安装与使用图文教程
from:http://www.jb51.net/softjc/214560.html TFS2013安装与使用图文教程 一.安装和配置过程介绍 要安装TFS2013当然要先进行下载了,可以在下面的地 ...
- cmd命令 sc
SC 是用于与服务控制管理器和服务进行通信的命令行程序. 用法:sc <server> [command] [service name] <option1> <optio ...
- Mybatis Insert 返回主键ID
<insert id="insert" useGeneratedKeys="true" keyProperty="u_Id" para ...