开网站设计公司多少钱,网站设计的图片,贵阳网站空间,wordpress顶部图像JDBC插入记录语法及案例
一、JDBC插入记录语法
在JDBC中#xff0c;插入记录主要通过执行SQL的INSERT语句来实现。其基本语法如下#xff1a;
INSERT INTO 表名 (列1, 列2, ..., 列n) VALUES (值1, 值2, ..., 值n);表名#xff1a;需要插入记录的表的名称。列1, 列2, …,…JDBC插入记录语法及案例
一、JDBC插入记录语法
在JDBC中插入记录主要通过执行SQL的INSERT语句来实现。其基本语法如下
INSERT INTO 表名 (列1, 列2, ..., 列n) VALUES (值1, 值2, ..., 值n);表名需要插入记录的表的名称。列1, 列2, …, 列n指定要插入数据的列名。如果插入的数据包含表中所有列的值并且顺序与表中列的顺序一致那么列名可以省略。值1, 值2, …, 值n对应于各列要插入的具体值。数据类型需要与列的数据类型相匹配。
二、案例代码
以下是一个使用JDBC插入记录的Java案例代码
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.PreparedStatement;
import java.sql.SQLException;public class JdbcInsertExample {public static void main(String[] args) {// 数据库连接信息String url jdbc:mysql://localhost:3306/testdb; // 数据库URLtestdb为数据库名String username root; // 数据库用户名String password 123456; // 数据库密码// 要插入的数据String name 张三;int age 25;String email zhangsanexample.com;// SQL插入语句String sql INSERT INTO users (name, age, email) VALUES (?, ?, ?);// 加载数据库驱动try {Class.forName(com.mysql.cj.jdbc.Driver);} catch (ClassNotFoundException e) {e.printStackTrace();System.out.println(数据库驱动加载失败);return;}// 建立数据库连接try (Connection conn DriverManager.getConnection(url, username, password);// 使用PreparedStatement来执行SQL语句提高安全性和效率PreparedStatement pstmt conn.prepareStatement(sql)) {// 设置SQL语句中的参数pstmt.setString(1, name);pstmt.setInt(2, age);pstmt.setString(3, email);// 执行插入操作int affectedRows pstmt.executeUpdate();if (affectedRows 0) {System.out.println(记录插入成功);} else {System.out.println(记录插入失败);}} catch (SQLException e) {e.printStackTrace();System.out.println(数据库操作异常);}}
}代码说明
导入相关包导入了java.sql包下的Connection、DriverManager、PreparedStatement和SQLException等类这些是JDBC编程中常用的类。数据库连接信息定义了数据库的URL、用户名和密码用于建立数据库连接。要插入的数据定义了要插入的用户信息包括姓名、年龄和邮箱。SQL插入语句定义了插入记录的SQL语句使用了占位符?来代替具体的值这是为了使用PreparedStatement来设置参数提高安全性和效率。加载数据库驱动通过Class.forName方法加载MySQL的JDBC驱动如果驱动加载失败会捕获异常并输出错误信息。建立数据库连接使用DriverManager.getConnection方法建立数据库连接并通过try-with-resources语句来自动关闭连接和PreparedStatement避免资源泄露。设置SQL语句中的参数通过PreparedStatement的setXxx方法如setString、setInt等来设置SQL语句中的参数将具体的值赋给占位符。执行插入操作调用PreparedStatement的executeUpdate方法来执行插入操作该方法返回一个整数表示受影响的行数。如果受影响的行数大于0说明记录插入成功否则插入失败并输出相应的提示信息。异常处理捕获SQLException异常如果数据库操作过程中出现异常会输出异常信息和错误提示。
通过以上代码你可以实现将一条记录插入到数据库的users表中。在实际使用中需要根据具体的数据库环境和表结构进行相应的调整。
当然可以。以下是一些具体的不同场景下的JDBC插入记录案例。
案例一插入单条记录到学生表
假设有一个学生表students表结构如下
字段名数据类型idintnamevarchargendervarcharscoreint
SQL表创建语句
CREATE TABLE students (id INT PRIMARY KEY AUTO_INCREMENT,name VARCHAR(50),gender VARCHAR(10),score INT
);Java代码
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.PreparedStatement;
import java.sql.SQLException;public class InsertStudent {public static void main(String[] args) {String url jdbc:mysql://localhost:3306/testdb;String username root;String password 123456;String sql INSERT INTO students (name, gender, score) VALUES (?, ?, ?);try {Class.forName(com.mysql.cj.jdbc.Driver);} catch (ClassNotFoundException e) {e.printStackTrace();System.out.println(数据库驱动加载失败);return;}try (Connection conn DriverManager.getConnection(url, username, password);PreparedStatement pstmt conn.prepareStatement(sql)) {pstmt.setString(1, 李四);pstmt.setString(2, 男);pstmt.setInt(3, 85);int affectedRows pstmt.executeUpdate();if (affectedRows 0) {System.out.println(学生记录插入成功);} else {System.out.println(学生记录插入失败);}} catch (SQLException e) {e.printStackTrace();System.out.println(数据库操作异常);}}
}案例二批量插入多条记录到商品表
假设有一个商品表products表结构如下
字段名数据类型idintnamevarcharpricedoublestockint
SQL表创建语句
CREATE TABLE products (id INT PRIMARY KEY AUTO_INCREMENT,name VARCHAR(100),price DOUBLE,stock INT
);Java代码
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.PreparedStatement;
import java.sql.SQLException;
public class BatchInsertProducts {public static void main(String[] args) {String url jdbc:mysql://localhost:3306/testdb;String username root;String password 123456;String sql INSERT INTO products (name, price, stock) VALUES (?, ?, ?);try {Class.forName(com.mysql.cj.jdbc.Driver);} catch (ClassNotFoundException e) {e.printStackTrace();System.out.println(数据库驱动加载失败);return;}try (Connection conn DriverManager.getConnection(url, username, password);PreparedStatement pstmt conn.prepareStatement(sql)) {// 批量添加数据pstmt.setString(1, 苹果);pstmt.setDouble(2, 5.5);pstmt.setInt(3, 100);pstmt.addBatch();pstmt.setString(1, 香蕉);pstmt.setDouble(2, 3.0);pstmt.setInt(3, 150);pstmt.addBatch();pstmt.setString(1, 橙子);pstmt.setDouble(2, 4.0);pstmt.setInt(3, 80);pstmt.addBatch();// 执行批量插入int[] affectedRows pstmt.executeBatch();if (affectedRows.length 0) {System.out.println(商品记录批量插入成功共插入 affectedRows.length 条记录);} else {System.out.println(商品记录批量插入失败);}} catch (SQLException e) {e.printStackTrace();System.out.println(数据库操作异常);}}
}案例三插入记录并获取自增主键
假设有一个订单表orders表结构如下
字段名数据类型idintuser_idintamountdoublestatusvarchar
SQL表创建语句
CREATE TABLE orders (id INT PRIMARY KEY AUTO_INCREMENT,user_id INT,amount DOUBLE,status VARCHAR(20)
);Java代码
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
public class InsertOrderAndGetId {public static void main(String[] args) {String url jdbc:mysql://localhost:3306/testdb;String username root;String password 123456;String sql INSERT INTO orders (user_id, amount, status) VALUES (?, ?, ?);try {Class.forName(com.mysql.cj.jdbc.Driver);} catch (ClassNotFoundException e) {e.printStackTrace();System.out.println(数据库驱动加载失败);return;}try (Connection conn DriverManager.getConnection(url, username, password);PreparedStatement pstmt conn.prepareStatement(sql, PreparedStatement.RETURN_GENERATED_KEYS)) {pstmt.setInt(1, 1);pstmt.setDouble(2, 200.0);pstmt.setString(3, 待支付);int affectedRows pstmt.executeUpdate();if (affectedRows 0) {try (ResultSet rs pstmt.getGeneratedKeys()) {if (rs.next()) {int orderId rs.getInt(1);System.out.println(订单记录插入成功生成的订单ID为 orderId);}}} else {System.out.println(订单记录插入失败);}} catch (SQLException e) {e.printStackTrace();System.out.println(数据库操作异常);}}
}代码说明
获取自增主键在prepareStatement方法中传入PreparedStatement.RETURN_GENERATED_KEYS参数表示在执行插入操作后返回生成的主键。获取生成的主键通过getGeneratedKeys方法获取一个ResultSet从中可以获取生成的主键值。 以上三个案例分别展示了插入单条记录、批量插入记录以及插入记录并获取自增主键的常见场景你可以根据实际需求进行参考和修改。