云主机测评网云主机测评网云主机测评网

云主机测评网
www.yunzhuji.net

java数据库主键

Java数据库中主键是一种特殊的唯一标识符,用于确保表中的每一行数据都具有唯一的标识。

Java数据库主键

在Java中,数据库主键是一个用于唯一标识表中每一行数据的字段或一组字段,主键的值在整个表中必须是唯一的,不能有重复,主键的作用是确保数据的完整性和一致性。

1、主键的类型

主键可以是以下几种类型:

整数类型(如INT、BIGINT)

字符串类型(如VARCHAR、CHAR)

组合类型(如UUID)

2、创建表时设置主键

在创建表时,可以使用PRIMARY KEY关键字来设置主键,创建一个名为students的表,其中id字段为主键:

CREATE TABLE students (
    id INT PRIMARY KEY,
    name VARCHAR(50),
    age INT,
    class VARCHAR(50)
);

3、修改表结构设置主键

如果已经创建了表,可以使用ALTER TABLE语句来修改表结构,添加主键,为students表的name字段添加主键:

ALTER TABLE students
ADD CONSTRAINT pk_students_name PRIMARY KEY (name);

4、Java代码操作主键

在Java中,可以使用JDBC(Java Database Connectivity)来操作数据库,以下是一些常用的操作主键的方法:

getGeneratedKeys():获取插入记录后生成的主键值。

setAutoCommit(false):关闭自动提交事务。

commit():提交事务。

rollback():回滚事务。

示例代码:

import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement;
public class Main {
    public static void main(String[] args) {
        String url = "jdbc:mysql://localhost:3306/test";
        String user = "root";
        String password = "password";
        String sql = "INSERT INTO students (name, age, class) VALUES (?, ?, ?)";
        try {
            Class.forName("com.mysql.jdbc.Driver");
            Connection conn = DriverManager.getConnection(url, user, password);
            conn.setAutoCommit(false); // 关闭自动提交事务
            PreparedStatement pstmt = conn.prepareStatement(sql, Statement.RETURN_GENERATED_KEYS);
            pstmt.setString(1, "张三");
            pstmt.setInt(2, 18);
            pstmt.setString(3, "计算机一班");
            int affectedRows = pstmt.executeUpdate(); // 执行插入操作,返回受影响的行数
            if (affectedRows > 0) { // 如果插入成功,获取生成的主键值
                ResultSet generatedKeys = pstmt.getGeneratedKeys();
                while (generatedKeys.next()) {
                    System.out.println("生成的主键值为:" + generatedKeys.getLong(1));
                }
            } else {
                System.out.println("插入失败");
            }
            conn.commit(); // 提交事务
            pstmt.close();
            conn.close();
        } catch (ClassNotFoundException e) {
            e.printStackTrace();
        } catch (SQLException e) {
            e.printStackTrace();
            try {
                conn.rollback(); // 发生异常,回滚事务
            } catch (SQLException ex) {
                ex.printStackTrace();
            }
        } finally { } // 确保资源释放,无论是否发生异常都会执行到这里来关闭资源,注意finally块的位置不能太靠前,否则会先执行finally块再抛出异常,因为如果在try块中发生了异常,那么catch块就不会被执行到,而finally块一定会被执行到,所以为了保证资源能够被正确释放,需要将finally块放在最后面。
打赏
版权声明:主机测评不销售、不代购、不提供任何支持,仅分享信息/测评(有时效性),自行辨别,请遵纪守法文明上网。
文章名称:《java数据库主键》
文章链接:https://www.yunzhuji.net/internet/178648.html

评论

  • 验证码