使用带有Mysql的TableName的JDBC PreparedStament以'\'结尾

时间:2015-05-14 08:58:01

标签: java mysql jdbc

我正在尝试在我的Mysql数据库中插入一些东西,该数据库有一个名称以“\”结尾的表。它的名字是'abc\'。

    public static void main(String[] args) throws ClassNotFoundException{
    try {
        Class.forName("com.mysql.jdbc.Driver");

        Connection master = DriverManager.getConnection($URL,$USR,$PWD);
        String st = "insert into `abc\\` (`pad`,`c`,`k`,`id`) values(?,?,?,?)";
        PreparedStatement pstmt = master.prepareStatement(st);
        pstmt.setInt(1, 10);
        pstmt.setInt(2, 1);
        pstmt.setString(3, "1");
        pstmt.setString(4, "2");
        pstmt.execute();
        master.close();
    }catch(SQLException ex){
        ex.printStackTrace();
    } 

但它不起作用,问题是:

java.sql.SQLException: Parameter index out of range (1 > number of parameters, which is 0).

但是,表的名称是'a\bc',其反斜杠不是最后一个字符,我的程序效果很好。

任何人都可以帮我解决这个问题吗?非常感谢。

1 个答案:

答案 0 :(得分:0)

正在使用Statement

public static void main(String[] args) throws ClassNotFoundException,
            SQLException {
        Class.forName("com.mysql.jdbc.Driver");
        Connection con = (Connection) DriverManager.getConnection("jdbc:mysql://localhost:3306/test", "root", "password");
        String st = "insert into `abc\\` (`pad`,`c`,`k`,`d`) values(10,11,'5','6')";
        Statement stmt = (Statement) con.createStatement();
        stmt.execute(st);
        con.close();
}