JDBC - 插入记录



本章提供了一些示例,说明如何使用 JDBC 应用程序在表中插入记录、插入多条记录以及使用 select 查询插入记录。在执行以下示例之前,请确保您已准备好以下内容:

  • 要执行以下示例,您可以将用户名密码替换为您实际的用户名和密码。

  • 您的 MySQL 或您正在使用的任何数据库都已启动并正在运行。

必要步骤

使用 JDBC 应用程序创建新数据库需要以下步骤:

  • 导入包 - 需要包含用于数据库编程的 JDBC 类所在的包。大多数情况下,使用import java.sql.*就足够了。

  • 注册 JDBC 驱动程序 - 需要初始化一个驱动程序,以便您可以打开与数据库的通信通道。

  • 打开连接 - 需要使用DriverManager.getConnection()方法创建一个 Connection 对象,该对象表示与数据库服务器的物理连接。

  • 执行查询 - 需要使用 Statement 类型的对象来构建和提交 SQL 语句,以将记录插入表中。

  • 清理环境 try with resources 会自动关闭资源。

示例:在表中插入记录

在此示例中,我们有三个静态字符串,包含数据库连接 URL、用户名和密码。现在,使用 DriverManager.getConnection() 方法,我们准备了一个数据库连接。连接准备就绪后,我们使用 createStatement() 方法准备了一个 Statement 对象。下一步,我们准备了一个 SQL 字符串,用于将记录插入 REGISTRATION 表中,并通过调用 statement.executeUpdate() 方法将记录插入数据库。此后,我们更新了 SQL 字符串以插入更多新记录,并使用 executeUpdate() 方法逐个插入所有记录。

如果在连接到数据库时出现任何异常,catch 块将处理 SQLException 并打印堆栈跟踪。

复制并粘贴以下示例到 JDBCExample.java 中,编译并运行如下:

import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.SQLException;
import java.sql.Statement;

public class JDBCExample {
   static final String DB_URL = "jdbc:mysql://127.0.0.1/TUTORIALSPOINT";
   static final String USER = "guest";
   static final String PASS = "guest123";

   public static void main(String[] args) {
      // Open a connection
      try(Connection conn = DriverManager.getConnection(DB_URL, USER, PASS);
         Statement stmt = conn.createStatement();
      ) {		      
         // Execute a query
         System.out.println("Inserting records into the table...");          
         String sql = "INSERT INTO Registration VALUES (100, 'Zara', 'Ali', 18)";
         stmt.executeUpdate(sql);
         sql = "INSERT INTO Registration VALUES (101, 'Mahnaz', 'Fatma', 25)";
         stmt.executeUpdate(sql);
         sql = "INSERT INTO Registration VALUES (102, 'Zaid', 'Khan', 30)";
         stmt.executeUpdate(sql);
         sql = "INSERT INTO Registration VALUES(103, 'Sumit', 'Mittal', 28)";
         stmt.executeUpdate(sql);
         System.out.println("Inserted records into the table...");   	  
      } catch (SQLException e) {
         e.printStackTrace();
      } 
   }
}

现在让我们编译上述示例,如下所示:

C:\>javac JDBCExample.java
C:\>

运行JDBCExample时,它会产生以下结果:

C:\>java JDBCExample
Inserting records into the table...
Inserted records into the table...
C:\>

示例:在表中使用单个语句插入记录

在此示例中,我们有三个静态字符串,包含数据库连接 URL、用户名和密码。现在,使用 DriverManager.getConnection() 方法,我们准备了一个数据库连接。连接准备就绪后,我们使用 createStatement() 方法准备了一个 Statement 对象。下一步,我们准备了一个 SQL 字符串,用于一次性将多条记录插入 sampledb4 表中,并通过调用 statement.execute() 方法将记录插入数据库。此后,我们运行了一个 select 查询以读取表中的所有记录并打印出来。

如果在连接到数据库时出现任何异常,catch 块将处理 SQLException 并打印堆栈跟踪。

复制并粘贴以下示例到 JDBCExample.java 中,编译并运行如下:

import java.sql.*;

// This class demonstrates use of multiple inserts within a single SQL
public class JDBCExample {

   static final String DB_URL = "jdbc:mysql://127.0.0.1/TUTORIALSPOINT";
   static final String USER = "root";
   static final String PASS = "guest123";

   public static void main(String args[]) {
      try{
         Connection conn = DriverManager.getConnection(DB_URL, USER, PASS);
         Statement stmt = conn.createStatement();
         stmt.execute("INSERT INTO sampledb4(id, name) VALUES(3, 'Sachin'), (4, 'Kishore')");
         System.out.println("----- Successfully inserted into table sampledb4 ----\n\n");
         System.out.println("Displaying records from sampledb4 table, showing inserted values");
         System.out.println("---------------------------");
         ResultSet rs = stmt.executeQuery("select * from sampledb4");

         while(rs.next()){
            System.out.println("id: " + rs.getInt(1));
            System.out.println("name: " + rs.getString(2));
         }
      }catch(SQLException e){
         e.printStackTrace();
      }
   }
}

现在让我们编译上述示例,如下所示:

C:\>javac JDBCExample.java
C:\>

运行JDBCExample时,它会产生以下结果:

C:\>java JDBCExample
----- Successfully inserted into table sampledb4 ----

Displaying records from sampledb4 table, showing inserted values
---------------------------
id: 3
name: Sachin
id: 4
name: Kishore
C:\>

示例:使用 Select 语句在表中插入记录

在此示例中,我们有三个静态字符串,包含数据库连接 URL、用户名和密码。现在,使用 DriverManager.getConnection() 方法,我们准备了一个数据库连接。连接准备就绪后,我们使用 createStatement() 方法准备了一个 Statement 对象。下一步,我们准备了一个 SQL 字符串,用于使用 select 查询将记录插入 sampledb4 表中,并通过调用 statement.execute() 方法将记录插入数据库。此后,我们运行了一个 select 查询以读取表中的所有记录并打印出来。

如果在连接到数据库时出现任何异常,catch 块将处理 SQLException 并打印堆栈跟踪。

复制并粘贴以下示例到 JDBCExample.java 中,编译并运行如下:

import java.sql.*;

// This class demonstrates use of INSERT..SELECT SQL, 
//where data is inserted in table using select from another table.
public class JDBCExample {
   static final String DB_URL = "jdbc:mysql://127.0.0.1/TUTORIALSPOINT";
   static final String USER = "root";
   static final String PASS = "guest123";

   public static void main(String args[]) {

      try{
         Connection conn = DriverManager.getConnection(DB_URL, USER, PASS);
         Statement stmt = conn.createStatement();

         // Data from students table (student id, first name) is inserted into sampledb4(id, name)
         String ins_sel = "insert into sampledb4(id, name) select studentid,"
            +" firstname from students where studentid > 1004";

         stmt.executeUpdate(ins_sel);

         ResultSet rs = stmt.executeQuery("select * from sampledb4 ");

         System.out.println("Displaying records of table sampledb4/ Ids"
            +" greater than 1004 are from students table");
         System.out.println("--------------------------------------");

         while(rs.next()){
            System.out.print("id: " + rs.getInt(1));
            System.out.println(" name: " + rs.getString(2));
         }
      }catch(SQLException e){
         e.printStackTrace();
      }
   }
}

现在让我们编译上述示例,如下所示:

C:\>javac JDBCExample.java
C:\>

运行JDBCExample时,它会产生以下结果:

C:\>java JDBCExample
Displaying records of table sampledb4/ Ids greater than 1004 are from students table
--------------------------------------
id: 3 name: Sachin
id: 4 name: Kishore
id: 1005 name: Kishore
id: 1006 name: Ganesh

C:\>
广告