我不能在不同的SQL表中插入这两个值

时间:2014-07-05 07:34:37

标签: java mysql sql

我使用此代码为我的控制器将值插入表中。

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

我的代码有问题吗?有人可以帮帮我..

2 个答案:

答案 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注入攻击,并且只要venueAddressdutyName包含单引号就会中断。