gpt4 book ai didi

java - 如何在SQL语句中使用生成的id?

转载 作者:行者123 更新时间:2023-11-30 06:56:44 25 4
gpt4 key购买 nike

我正在尝试将新记录添加到 Derby 数据库的表中。我需要在其字段之一中使用记录号。例如。我需要在照片字段中保存图像的路径。并且图像的名称必须与其ID相对应。例如1.jpg。我正在尝试这个语句(本例中未使用文件扩展名):

PreparedStatement pstmt = conn.prepareStatement("INSERT INTO Users (name, lastname, email, address, password, photo, lastvisit, status) VALUES ('" + name + "','" + lastname + "','" + email + "','" + address + "','" + DigestUtils.toMd5(password) + "', id, '" + now + "','user')");

但我收到错误:java.sql.SQLSyntaxErrorException:列“ID”不在 FROM 列表中的任何表中...但这个专栏确实存在。错误原因是什么?

最佳答案

嗯,简短的回答是,你不能在 SQL 中做到这一点。在你的表 Users 中,我猜你的 id 列是一个自动递增的主键。您可以做的是插入记录,然后获取为此插入语句生成的最后一个 id。然后您必须执行更新查询来设置照片列的值。

顺便说一下,一定要学会在准备好的语句中使用占位符

我不是 Derby 的专家,但浏览文档我发现了如何获取生成的列。

pstmt.execute(sql, Statement.RETURN_GENERATED_KEYS);
ResultSet keys = pstmt.getGeneratedKeys();
keys.next();
int id = keys.getInt();

关于java - 如何在SQL语句中使用生成的id?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41649036/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com