数据库更新查询异常处理错误

时间:2012-10-29 13:34:38

标签: java jdbc jdbc-odbc

String Query="insert into sms (Jobno, Mobilenumber, MStatus, ReceivedTime, AmountDeducted, Message, DoneTime)       values ("+jobnum +","+mobilenum+","+ smsstatus+",'"+ rxtimestamp+ "',"+ amt+",'"+smstxt+"','"+timedone1+"')";

注意:通过Mysql,上面的查询成功执行....

我在程序中导入了所有必需的库及其各自的接口.... 当我通过java panel / ide执行时抛出以下错误?

Exception in thread "main" com.mysql.jdbc.MysqlDataTruncation: Data truncation: Out of range value for column 'Mobilenumber' at row 1
    at com.mysql.jdbc.MysqlIO.checkErrorPacket(MysqlIO.java:2983)
    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)       

请建议可能出现的问题...........

2 个答案:

答案 0 :(得分:1)

变量mobileNumber的值大于其限制。因此,请检查您在DB和Java程序中定义的数据类型,并验证您已保存的mobileNumber。

答案 1 :(得分:1)

尝试检查列'Mobilenumber'的类型,范围和长度,并将插入的值放入''以避免出现空格,插入的移动数字中的其他字符(例如“+”或“/”)和长手机号码。如果它是一个实数,MySQL应该正确地将文本转换为数字。

即。结果代码应为:

String Query="insert into sms (Jobno, Mobilenumber, MStatus, ReceivedTime, AmountDeducted, Message, DoneTime)       values ('"+jobnum +"','"+mobilenum+"','"+ smsstatus+"','"+ rxtimestamp+ "','"+ amt+"','"+smstxt+"','"+timedone1+"')";

另外一个提示:总是尝试使用prepared statements来避免SQL注入攻击的可能性。