Code Bye

JAVA MYSQL JDBC ERROR

开发环境 mysql-connection-5.0.8.jar  MYSQL 5.5 WINDOWS 环境

问题:我的数据库表设置为所有字段不能为空(字段有 id,name),没有自动增长,没有默认值

我的my.ini 配置 sql_mode=NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION 
想得到的结果:insert into xxx(id,name)values(“”1″”,””2″”); success
insert into xxx(id)values(“”1″”); success  请注意,这两个都要执行成功。

(注:叫我填写默认值的,填写自增长的请不要回答,这两个我清楚,我想要第三种方法)
我想得到的是,我填写了不管多少个字段都执行成功,没有填写进去的字段,数据库自动帮我填充默认值,
比如字符串就自动填充空字符串,int 类型自动填充0等等

在客户端上面上,两个SQL都可以执行成功的,但是我使用JAVA JDBC  执行第二个SQL失败了,提示
java.sql.SQLException: Field “”name”” doesn””t have a default value
at com.mysql.jdbc.SQLError.createSQLException(SQLError.java:946)
at com.mysql.jdbc.MysqlIO.checkErrorPacket(MysqlIO.java:2985)
at com.mysql.jdbc.MysqlIO.sendCommand(MysqlIO.java:1631)
at com.mysql.jdbc.MysqlIO.sqlQueryDirect(MysqlIO.java:1723)
at com.mysql.jdbc.Connection.execSQL(Connection.java:3277)
at com.mysql.jdbc.Statement.executeUpdate(Statement.java:1402)
at com.mysql.jdbc.Statement.executeUpdate(Statement.java:1317)
at dao.DoDao.insert(DoDao.java:39)
at dao.DoDao.main(DoDao.java:68)
请明白我表达的意思的,能帮我解决问题的帮帮忙,如果不能回答,给一点大概的思路也行?


20分
“我的数据库表设置为所有字段不能为空”,这就注定了执行insert的时候需要提供所有的字段值。你不想提供,而且还是直接执行sql/jdbc执行sql,我是想不出折。

20分
设置为不能为空了的话,直接insert应该不能实现吧
能在插入之前判断下需要插入的参数有几个,没有的插入默认值可以么?
引用 2 楼 w405112941 的回复:

设置为不能为空了的话,直接insert应该不能实现吧
能在插入之前判断下需要插入的参数有几个,没有的插入默认值可以么?

我也是没辙了,目前只能使用你这个方法,做一个公共包装类,没有插入的参数使用默认值。


CodeBye 版权所有丨如未注明 , 均为原创丨本网站采用BY-NC-SA协议进行授权 , 转载请注明JAVA MYSQL JDBC ERROR