为什么这个INSERT不起作用?

时间:2014-03-05 19:33:59

标签: java android mysql sql insert

在下面的块中,RestaurantInt是一种数据类型,update()打开与数据库的连接并操纵数据。

public boolean registerRestaurant(RestaurantInt restaurant) {
    boolean result = update("INSERT INTO restaurants (name, emailAddress, houseNumber, postCode, password) VALUES (\'"+restaurant.getName()+"\', \'"+restaurant.getEmail()+"\', "+restaurant.getAddress().getHouseNumber()+", \'"+restaurant.getAddress().getPostCode()+"\', \'"+restaurant.getPassword()+"\')");
    return result;
}

以下是餐厅的结构:

Name - Type - Null? - Extra
restaurantID - int(11) - NO - auto_increment (primary key)
name - varchar(20) - YES -
emailAddress - varchar(20) - NO -
houseNumber - int(11) - NO -    (multiple key)
postCode - varchar(6) - NO - 
password - varchar(20) - NO - 

修改

我只是删除了逃脱,它完美无缺。我没有删除逃脱,因为我被指示总是使用逃生。在整个项目的其余部分,它从未提出过一个问题,直到现在。谢谢你的帮助!

2 个答案:

答案 0 :(得分:0)

假设您插入的每个变量都有一个值(甚至不会导致错误),您的错误可能与转义SQL语句中的单引号有关。你不必这样做,因为它们被包含在一个双引号句中,它们将按字面解释。

答案 1 :(得分:0)

正如你可以在其中一条评论中看到的那样,你不需要逃避单引号。 但是,运行插入时,您的数据库可能会逃脱它们。删除逃逸的反斜杠,这应该工作。 也考虑使用 PreparedStatement