当前位置: 首页 > 编程笔记 >

如何使用JDBC将数据插入具有自动递增列的表中?

申屠俊发
2023-03-14
本文向大家介绍如何使用JDBC将数据插入具有自动递增列的表中?,包括了如何使用JDBC将数据插入具有自动递增列的表中?的使用技巧和注意事项,需要的朋友参考一下

在将数据插入具有自动递增列的表中时,只需保留该特定列,并使用INSERT语句的以下语法指定其余列即可插入剩余值-

INSERT into table_name (column_name1, column_name2....) values(value1, value2....)

示例

让我们使用CREATE语句在MySQL数据库中创建一个名称为sales的表,其中一列自动递增,如下所示-

CREATE TABLE Sales(
   ID INT PRIMARY KEY AUTO_INCREMENT,
   ProductName VARCHAR (20),
   CustomerName VARCHAR (20),
   DispatchDate date,
   DeliveryTime time,
   Price INT,
   Location VARCHAR(20)
);

以下JDBC程序与数据库建立连接,并将5条记录插入到sales表中-

import java.sql.Connection;
import java.sql.Date;
import java.sql.DriverManager;
import java.sql.PreparedStatement;
import java.sql.SQLException;
import java.sql.Time;
public class InsertingData_AutoIncrement {
   public static void main(String args[]) throws SQLException {
      //注册驱动程序
      DriverManager.registerDriver(new com.mysql.jdbc.Driver());
      //获得连接
      String mysqlUrl = "jdbc:mysql://localhost/sample_database";
      Connection con = DriverManager.getConnection(mysqlUrl, "root", "password");
      System.out.println("Connection established......");
      //查询以将值插入销售表
      String insertQuery = "INSERT INTO Sales (ProductName, CustomerName, DispatchDate, DeliveryTime, Price, Location) VALUES (?, ?, ?, ?, ?, ?)";
      //创建一个PreparedStatement对象
      PreparedStatement pstmt = con.prepareStatement(insertQuery);
      pstmt.setString(1, "Key-Board");
      pstmt.setString(2, "Raja");
      pstmt.setDate(3, new Date(1567315800000L));
      pstmt.setTime(4, new Time(1567315800000L));
      pstmt.setInt(5, 7000);
      pstmt.setString(6, "Hyderabad");
      pstmt.execute();
      pstmt.setString(1, "Earphones");
      pstmt.setString(2, "Roja");
      pstmt.setDate(3, new Date(1556688600000L));
      pstmt.setTime(4, new Time(1556688600000L));
      pstmt.setInt(5, 2000);
      pstmt.setString(6, "Vishakhapatnam");
      pstmt.execute();
      pstmt.setString(1, "Mouse");
      pstmt.setString(2, "Puja");
      pstmt.setDate(3, new Date(1551418199000L));
      pstmt.setTime(4, new Time(1551418199000L));
      pstmt.setInt(5, 3000);
      pstmt.setString(6, "Vijayawada");
      pstmt.execute();
      pstmt.setString(1, "Mobile");
      pstmt.setString(2, "Vanaja");
      pstmt.setDate(3, new Date(1551415252000L));
      pstmt.setTime(4, new Time(1551415252000L));
      pstmt.setInt(5, 9000);
      pstmt.setString(6, "Chennai");
      pstmt.execute();
      pstmt.setString(1, "Headset");
      pstmt.setString(2, "Jalaja");
      pstmt.setDate(3, new Date(1554529139000L));
      pstmt.setTime(4, new Time(1554529139000L));
      pstmt.setInt(5, 6000);
      pstmt.setString(6, "Goa");
      pstmt.execute();
      System.out.println("Records inserted......");
   }
}

输出结果

Connection established......
Records inserted......

验证

如果您使用SELECT语句验证Sales表的内容,则可以看到插入的记录为-

mysql> select * from sales;
+----+-------------+--------------+--------------+--------------+-------+----------------+
| ID | ProductName | CustomerName | DispatchDate | DeliveryTime | Price | Location       |
+----+-------------+--------------+--------------+--------------+-------+----------------+
| 1  | Key-Board   | Raja         | 2019-09-01    | 11:00:00    | 7000   | Hyderabad     |
| 2  | Earphones   | Roja         | 2019-05-01    | 11:00:00    | 2000   | Vishakhapatnam|
| 3  | Mouse       | Puja         | 2019-03-01    | 10:59:59    | 3000   | Vijayawada    |
| 4  | Mobile      | Vanaja       | 2019-03-01    | 10:10:52    | 9000   | Chennai       |
| 5  | Headset     | Jalaja       | 2019-04-06    | 11:08:59    | 6000   | Goa           |
+----+-------------+--------------+--------------+--------------+-------+----------------+
5 rows in set (0.00 sec)
 类似资料:
  • 问题内容: 我创建了一个具有主键的表并启用了该表,如何使用MYSQL ? 这是我使用的查询,我尝试使用“”和“ 1”作为第一个值,但是它不起作用。 问题答案: 为了利用列的自动递增功能,在插入行时不要为该列提供值。数据库将为您提供一个值。

  • 我有两个表,其中主键(另一个表上的外键)在运行时自动递增(使用TOAD for mysql)。如何使用事务将数据同时插入两个表中。 这是第一个表的ddl: 第二个表的ddl: 注意:主要的挑战是从主键上获取自动递增的键值,以便在运行时插入到另一个表中。 提前谢谢。

  • 问题内容: 我想在具有动态列的表中添加值。我设法用动态列创建了一个表,但无法弄清楚如何插入数据。 问题答案: 您还可以使用数据库元数据获取列名。这样的好处是,您甚至不需要知道列名,而是可以在您的代码中动态检索它们。 一旦有了列名,就可以像平常一样使用它(List.size()当然会给出列数)。 更新: 此代码假定您将正确类型的对象传递给PreparedStatement.setObject(Obj

  • 我正在尝试使用jdbc将数据插入另一个表中的一个表,该表的snowflake中有自动递增列。我跳过了auto increment列,并从下面的查询中只插入了必需的列 它以正确的自动递增顺序正确插入数据,但如果我插入另一个值,自动递增值的值会随机递增 它反映了这个问题, 本期共有260张唱片。这是自动递增键的问题,请帮助。谢谢 另外,如果col1不是主键,并且在snowflake控制台上执行查询,也

  • 问题内容: 我需要创建一个基本上只保留索引列表的表。因此,我创建了一个表,其中只有一个自动递增的列,称为“ id”。但是,我似乎无法向该表隐式添加自动递增的值。 我知道通常在表中有这样一列(不仅有此列)时,您可以执行以下操作: 插入表(col1,col2 …)值(val1,val2 …) 而且,如果您不指定自动递增的列,它将自动获取一个值。但是,类似: 插入表()值()插入表插入表() 等等。所有

  • 例如,我有一个包含2个表的数据库。第一个表(表 1)包含: userId 是我的主键,它是自动递增的。我的下一个表(表2)有: userId(来自表2)是我引用表1(userId)的外键。是否有一种方法可以插入到两个表的所有信息中,并使表2中的用户ID自动从表1中获取它引用的主键?或者,我必须为每个表执行多个插入,并显式地使外键具有相同的值。