我使用此代码为我的控制器将值插入表中。
public boolean createDuty() throws ParseException{
boolean success = false;
DBController db = new DBController();
String dbQuery;
db.getConnection();
dbQuery = "INSERT INTO duty(dutyName)" + " VALUES ('" + dutyName + "')";
dbQuery = "INSERT INTO venue(venueAddress)" + " VALUES ('" + venueAddress + "')";
if (db.updateRequest(dbQuery) == 1){
success = true;
}
db.terminate();
return success;
}
但是,java的输出只表示只插入了venueAddress而不是dutyName。
Successfully connected to jdbc:mysql://xxxxx/xxxxx.
DB Query: INSERT INTO venue(venueAddress) VALUES ('Woodgrove Tennis Centre')
Connection is closed
我的代码有问题吗?有人可以帮帮我..
答案 0 :(得分:0)
你只执行第二个查询:
变化:
dbQuery = "INSERT INTO duty(dutyName)" + " VALUES ('" + dutyName + "')";
dbQuery = "INSERT INTO venue(venueAddress)" + " VALUES ('" + venueAddress + "')";
if (db.updateRequest(dbQuery) == 1){
success = true;
}
为:
dbQuery = "INSERT INTO duty(dutyName)" + " VALUES ('" + dutyName + "');";
dbQuery += "INSERT INTO venue(venueAddress)" + " VALUES ('" + venueAddress + "')";
if (db.updateRequest(dbQuery) == 1){
success = true;
}
你必须添加一个“;”广告结束语。 你也必须连接两个字符串。
答案 1 :(得分:0)
阅读您的代码:
dbQuery = "INSERT INTO duty(dutyName)" + " VALUES ('" + dutyName + "')";
您可以在此处为变量dbQuery
分配SQL查询。然后
dbQuery = "INSERT INTO venue(venueAddress)" + " VALUES ('" + venueAddress + "')";
在这里,您将另一个SQL查询分配给同一个变量。然后
if (db.updateRequest(dbQuery) == 1){
您执行dbQuery
引用的查询。如果要执行2个查询,则需要使用第一个SQL查询调用db.updateRequest()
两次,而使用第二个SQL查询调用一次。
另外,请阅读prepared statements。您的代码容易受到SQL注入攻击,并且只要venueAddress
或dutyName
包含单引号就会中断。