java - 尝试在 java 中连接 2 个表,但出现错误

标签 java sql join

我正在使用 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 '?'.

最佳答案

问题出在这里:

ResultSet rs = st.executeQuery(sql);

您正在使用Statement#executeQuery(String sql)它继承自Statement接口(interface)。您应该使用 PreparedStatement#executeQuery .

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

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

并从代码中删除此 Statement 变量,它只会让您和 future 的代码读者感到困惑:

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 = ?";

关于java - 尝试在 java 中连接 2 个表,但出现错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27064828/

相关文章:

mysql - Sql Join 查询的行结果

java - 如何在jtable中加载1000+图像而不出现java.lang.OutOfMemoryError : Java heap space exception

SQL - 带有 JOIN 的 SELECT 语句

java - 在java中获取准备语句的空异常

MySQL 查询从两个表中检索数据,即使在第二个表中找不到数据

python - Pandas 强制对包含重复键的列进行一对一合并

java - Android 的 argb 方法出现问题

java - 从 jlabel 中的 url 加载图像

java - 如何根据 http 状态代码路由从 http 出站网关发出的错误消息?

sql - EF Code First回滚数据库表设计