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

注:通过Mysql,上述查询执行成功......

我在程序中导入了所有必需的库及其各自的接口......当我通过 java 面板/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)       

请提出可能是什么问题............

4

2 回答 2

1

来自变量 mobileNumber 的值超过了它的限制。因此,请检查您在 DB 和 java 程序中定义的数据类型,并验证您提供的要保存的 mobileNumber。

于 2012-10-29T13:49:09.913 回答
1

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

即生成的代码应该是:

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

另一个提示:始终尝试使用准备好的语句来避免 SQL 注入攻击的可能性。

于 2012-10-29T13:49:17.790 回答