当前位置: 首页 > 知识库问答 >
问题:

当有复合键时,如何使用jdbc插入表

卞经业
2023-03-14

我有一个带有属性(id、语言\u id、流派\u名称)的表genre_name获取两种语言的名称,idlanguage_id是主键的一部分。如何使用JDBC(preparedStatement,(java.sql.Connection)连接“insert”新值,这样,id可以自动与language\u id相同
例如:

id | language_id| name                    |
1  |      1     | name in one language    |
1  |      2     | name in another language|

P.S.id是自动递增的。

共有1个答案

颜文康
2023-03-14

通过JDBC进行插入非常简单。你必须连接你的数据库(你还没有命名),然后通过你需要的数据创建PreparedStatement(这意味着你应该有language\u idname)。

这将是一个粗略的例子:

String SQL_INSERT = "INSERT INTO genre(language_id, name) VALUES (?, ?)";

try (Connection conn = DriverManager.getConnection(
        "jdbc:postgresql://127.0.0.1:5432/test", "postgres", "password");
     PreparedStatement preparedStatement = conn.prepareStatement(SQL_INSERT)) {

    preparedStatement.setInt(1, YOUR_ID_COMES_HERE);
    preparedStatement.setString(2, YOUR_NAME);

    int row = preparedStatement.executeUpdate();

    // rows affected
    System.out.println(row); //1

} catch (SQLException e) {
    System.err.format("SQL State: %s\n%s", e.getSQLState(), e.getMessage());
} catch (Exception e) {
    e.printStackTrace();
}

这是Postgresql的一个例子,但是如果你在谷歌上搜索如何使用java JDBC执行插入,你会有比这多得多的资源。

 类似资料:
  • 问题内容: 是否有一种跨数据库平台的方法来获取刚刚插入的记录的主键? 我注意到,这个答案表明您可以通过调用来获得它,而且我认为您可以调用jdbc中的数据库来实现此目的吗? 如果不是,您如何建议我为可以访问SQL Server,MySQL和Oracle中的任何代码的代码实现此功能? 问题答案: 从我的代码复制: 其中pInsertOid是准备好的语句。 然后您可以获取密钥: 希望这为您提供一个良好的

  • 我在写一个地牢风格的游戏,地牢基本上是一个网格窗格。我想让玩家每0.5秒移动一格,如果他保持控制键。但我不知道如何做到这一点。我读过JavaFX:如何检测钥匙是否被按下。但这个问题与我的问题并没有特别的关系(除了我可以追踪发生了多少关键事件,或许可以在此基础上做更多)。所以我跟随这篇文章并尝试使用线程。sleep()解决了我的问题,但事实证明玩家只是停了几秒钟,然后突然移动了几格。 有人知道怎么解

  • 我为这个特殊的问题找了很多,但我没有找到任何具体的解决办法。我在一个表中有一个复合主键,这个复合主键的一个字段是另一个表的复合主键的一部分。您可以说这个特定的字段是第二个表中的外键,但是在表定义中没有定义任何独占外键约束。对于第一个表中的每个rec,第二个表中可能有多条记录。我试图使用SPringBoot-JPA-Hibernate实现这一点,但无法实现。有人能帮我吗。以下是德泰:- 我有一个US

  • 我试图使用以下JDBC语句将一些值插入到来自Java的Oracle DB中: 序列创建如下: 我得到以下错误, 但当我尝试手动插入到表中时,它是成功的。 有什么问题?

  • 如果尝试执行上述查询,则会出现错误 原因:错误:933,位置:36,Sql=插入St(id)值('ADMIN');select*from Student where id in(select id from St);,OriginalSql=INSERT INTO St(id)values(“admin”);select*from Student where id in(select id fro

  • 我的意图是创建4个Emp对象。2个对象(e1和e2)具有相同的哈希代码。因此,当插入e1(插入在e2之后)时,hashmap会意识到具有相同哈希值的对象已经存在(对象e2)。然后它会将槽中所有对象的键与相同的哈希值进行比较。如果它找到一个具有匹配键的对象(通过调用下面Emp类的equals方法),它将用新值替换旧值。 下面请看一下测试代码: 我期望的输出:替换的记录名称:Terry,年龄:60名称