【问题标题】:Fetch ID from separate table in SQL从 SQL 中的单独表中获取 ID
【发布时间】:2015-09-30 10:24:47
【问题描述】:

我有两张表,一张叫Member:

 NAME  |   PERSONALNUMBER  |               ID  |  
LUDDE  |       9409251171  |                1  |

还有一个叫船:

       TYPE  |           LENGTH  |         MEMBERID  |  
Motorsailer  |            100.0  |             null  | 

我想从成员那里获取ID 并将其存储在Boats 中的MEMBERID 中。

现在我尝试通过这样做从特定成员那里获取 ID:

public void createBoat(Boat boat, Member member) {
    try {
        connection.createStatement().execute("Insert into BOAT (Type, Length) values " + boat.toString());
        connection.createStatement().executeQuery("SELECT ID FROM MEMBER WHERE NAME LIKE " + "'" + member.getName() + "'" );
    } catch(SQLException e) {
        System.out.println(e.getMessage());
    }
}

但是,我得到的是 null 而不是任何真实数据。

【问题讨论】:

  • 很抱歉,但我看不到你得到了“空”。您可以通过添加更多代码来帮助人们重现您的问题,或者您可以添加一些控制台输出。
  • 你不会对 executeQuery() 的结果做任何事情。
  • 还有。如果你使用 'LIKE' 函数,不要忘记添加百分比符号,例如:"SELECT ID FROM MEMBER WHERE NAME LIKE" + "'%" + member.getName() + "%'"。否则,您不妨只使用等号运算符 '='

标签: java sql intellij-idea derby


【解决方案1】:

首先使用 select 语句从 Member 表中选择特定的 id。然后在Boats表的插入语句中使用member id

您可以使用以下。您可能需要做一些小的修改。我不知道船的长度是多少,所以我使用 100 作为长度。另外我假设成员 id 是一个整数

public void createBoat(Boat boat, Member member) {
    try {

        ResultSet rs=connection.createStatement().executeQuery("SELECT ID FROM MEMBER WHERE NAME =" + "'" + member.getName() + "'");
        while(rs.next()){
            int memberId=rs.getInt("ID");
            connection.createStatement().execute("Insert into BOAT (Type, Length,MEMBERID) values (" + boat.toString() ",100,"+memberId+" )");
        }
    } catch (SQLException e) {
        System.out.println(e.getMessage());
    }
}

【讨论】:

    猜你喜欢
    • 2018-12-21
    • 2022-01-22
    • 2010-11-27
    • 2015-07-02
    • 2013-07-07
    • 2013-11-29
    • 2019-11-19
    • 2019-04-21
    • 1970-01-01
    相关资源
    最近更新 更多