【问题标题】:How to resolve the id from MySQL DB into a variable如何将 MySQL DB 中的 id 解析为变量
【发布时间】:2014-08-12 08:07:58
【问题描述】:

是否可以从 MySQL 表中获取 id 并将其“保存”到 JDBC 上的变量中?

在我的程序中,我有一个JTextfield,用户在其中提供了一张票,该票将存储在 MySQL 数据库中。每次他给票时,我想从插入票的数据库中获取 id,而不是在终端上打印,而是将其解析为变量并在其他类上使用它。我需要它用于其他课程。

有可能吗?

【问题讨论】:

    标签: java mysql sql jdbc


    【解决方案1】:

    这样的?

        statement.executeUpdate();
        ResultSet generatedKeys = statement.getGeneratedKeys();
        long generatedId= 0L;
        if (generatedKeys.next()) {
            generatedId = generatedKeys.getLong(1);// here is your generated Id , 
        }
    

    【讨论】:

    • 所以这只会返回我插入的票的 id 值?
    • 是的。这是。你能检查一下吗?
    • 我现在正在检查它。顺便说一句,您为什么将 id 声明为 long 而不是 int?
    • @vagg77 克服整数溢出。
    • 你能解释一下吗?没看懂
    【解决方案2】:

    类似的东西?

    PreparedStatement st;
            st = con.prepareStatement("SQL STATAMENT", "HERE COLUMN NAME FROM TABLE") VALUES(?)",Statement.RETURN_GENERATED_KEYS);
            st.setString(1,"Binded String Veriable");
            st.executeUpdate();
            ResultSet rs = st.executeQuery("select last_insert_id() as id from "HERE TABLE NAME"");
            if(rs.next()){
              int lastId = Integer.parseInt(rs.getString("id"));
    

    使用 PrpearedStatment 来防止 SQL 注入,例如:
    st = con.prepareStatement("INSERT INTO component(user) VALUES(?)", Statement.RETURN_GENERATED_KEYS ) st.setString(1,username)

    这里有 last_insert_id() 的工作原理:JDBC LAST INSER ID AND OTHER

    【讨论】:

    • 您可以随时将其更改为我的 :D 无论如何希望它会帮助您:)
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2020-06-16
    • 2015-02-06
    • 2021-03-15
    • 1970-01-01
    • 1970-01-01
    • 2021-12-06
    • 2021-07-17
    相关资源
    最近更新 更多