有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

sql试图在java中连接两个表,但我遇到了一个错误

我正在使用Sql和java。 这在sql中起作用:

use mybank
Select * from Account
inner join CustomerAccount on accountid = id
where customerid = 18

我用java编写了以下代码:

String sql = ("Select * From Account inner join CustomerAccount on accountid = id where customerid =?;");
try (Connection con = myDbManager.getConnection())
{
    PreparedStatement ps = con.prepareStatement(sql);
    ps.setInt(1, customer.getId());
    Statement st = con.createStatement();
    ResultSet rs = st.executeQuery(sql);

customer.getId给我18分

但是我得到了这个错误

Incorrect syntax near '?'.

共 (2) 个答案

  1. # 1 楼答案

    问题在于:

    ResultSet rs = st.executeQuery(sql);
    

    您正在使用从Statement接口继承的^{}。您应该使用^{}

    简而言之,将该行更改为:

    ResultSet rs = ps.executeQuery();
                                   ^ parameter-less
    

    并从代码中删除这个Statement变量,它只会使您和代码的未来读者感到困惑:

    PreparedStatement ps = con.prepareStatement(sql);
    ps.setInt(1, customer.getId());
    //Statement st = con.createStatement();
      ^ this generates confusion
    

    此外,在从Java执行SQL语句时,应删除SQL语句中的分号:

    String sql = "Select *"
        + " From Account"
        + " inner join CustomerAccount"
        + " on accountid = id"
        + " where customerid = ?";
    
  2. # 2 楼答案

    Java中的SQL查询不使用“;”:

    String sql =( "Select * From Account inner join CustomerAccount on accountid = id where customerid =?");