【发布时间】:2014-01-22 15:27:00
【问题描述】:
这是我的错误:SQL 异常:java.sql.SQLException:不正确的整数值:第 1 行的列“年龄”的“年龄”
给我带来问题的字段是表中的第一个 Int 字段。
这是我正在使用的代码:
数据:
String username = "test1";
String id="test1";
String firstName="Testname";
String lastName="Testnamer";
String address="Testadd";
String phone="Test0851459574";
String email="Testemailee";
int age = 24;
char sex='M';
double height=1.23;
int kgs=125;
double stone=5.75;
int targetWeightKgs=34;
double bmi=4.34;
String medicalHistory="testertester";
String extraHistory="testertestertest";
boolean smoker=true;
boolean usernameCompleted=true;
String myNotes="testnotes";
UsersDatabase.insertMember(username,id,firstName,lastName,address,phone,email,age,sex,height,kgs,stone,targetWeightKgs,bmi,medicalHistory,extraHistory,smoker,usernameCompleted,myNotes);
在 insertMember 方法中:
String sql = "INSERT INTO Members " + "VALUES ('username','id','firstName','lastName','address','phone','email','age','sex','height','kgs','stone','targetWeightKgs','bmi','medicalHistory','extraHistory','smoker','usernameCompleted','myNotes')";
stmt.executeUpdate(sql);
这是表格截图:http://snag.gy/VuMpO.jpg
【问题讨论】:
-
你真的是想插入
'age'吗?或者这实际上是42还是你真实代码中的东西?因为按原样,您的age字段是一个 int,并且您正在尝试将 3 个字符的字符串填充到其中。 -
age 是一个整数,所以在里面插入一个 5 左右的 int
-
您应该使用准备好的语句,并指定参数值...
-
java 不像 php 那样支持魔术引号。
-
同意Jon Skeet,也是为了避免SQL注入攻击。您需要更改代码,如果您不这样做,您的代码中会有一个大漏洞。这里是Prepared Statement API