悲剧:第一次使用Mysql

本博客还有大量的.NET开源技术文章,您可能感兴趣: 

1.开源Math.NET基础数学类库使用系列文章链接

2.开源C#彩票数据资料库系列文章链接

3.开源的.NET平台ORM组件文章:链接

4.其他开源的.NET组件文章:链接

5..NET平台机器学习组件-Infer.NET系列文章:链接

6.Matlab混合编程文章:链接 

     好久没有写程序了,准备开始上班了,有些地方要用到数据库,经过仔细斟酌,还是考虑选用开源的MySql,虽然一直用MSSQL和Access还不错,但Mysql的鼎鼎大名和优势也听说过,只是没机会用到。所以也想趁此机会好好学习一下。

      建立数据库和表这些简单的过程都差不多了,也很顺利,感觉比较好,虽然是英文界面,但还可以接受。接下来通过C#来操作数据库就遇到了很大的麻烦。插入数据时一直提示错误,不能为空。可是调试发现所有的数据值都有,怎么会出现这种情况呢。。纳闷之际想到了,我想到可能是字符集的问题,而且我的字段名称都用的是中文。google一下,还发现字符集的问题真不少,所以把有重新建表,测试还是不通过,提示“Column '列名' cannot be null”,这次还好是英文,开始都是一些乱码,还是不能解决问题,又去google,这次发现有人和我有同样的问题,而且下面这篇文章还详细介绍了改正方法:http://bybaxiao.blog.163.com/blog/static/309761232009321102523527/

经过调试确认就是这个原因:

MySQL使用基于Parameter方式代码,总是提示:“Column '列名' cannot be null”

MySQL使用基于Parameter方式代码,总是提示:“Column '列名' cannot be null”

解决方法1:直接在连接字符串里面加一个 oldsyntax=true  即可。

例如:server=127.0.0.1;user id=root;password=;database=itemdb;oldsyntax=true

解决方法2:将语句中的 @ 替换为 ?

例如:

StringBuilder strSql=new StringBuilder();

strSql.Append("insert into test(");

strSql.Append("name)");

strSql.Append(" values (");

strSql.Append("?name)");

MySqlParameter[] parameters = {

  new MySqlParameter("?name", MySqlDbType.VarChar,45)};

parameters[0].Value = model.name;

DbHelperMySQL.ExecuteSql(strSql.ToString(),parameters);

终于解决问题了,郁闷死了,花了我3个小时啊。

 

 

编程爱好者,关注.NET软件开发,Matlab编程及网络技术

欢迎光临我的Cnblog博客:http://www.cnblogs.com/asxinyu/

欢迎大家进行交流,QQ :1287263703 ;MSN:dong.binhui@hotmail.com

E-mail:asxinyu@qq.com,asxinyu@126.com

 

posted @ 2010-03-21 17:14  数据之巅  阅读(710)  评论(0编辑  收藏  举报