java 主键不唯一吗_java-JDBC SQLite不强制执行唯一主键约束

论坛 期权论坛 编程之家     
选择匿名的用户   2021-6-2 17:35   2297   0

谁能向我建议为什么我的SQLite JDBC数据库不执行唯一主键约束?

创建表的方法是:

public static void TableCars()

{

Connection c = null;

Statement stmt = null;

try {

Class.forName("org.sqlite.JDBC");

c = DriverManager.getConnection("jdbc:sqlite:WalkerTechCars.db");

System.out.println("Opened database successfully");

stmt = c.createStatement();

String sql = "CREATE TABLE IF NOT EXISTS CARS3 " +

"(REGISTRATION TEXT PRIMRY KEY NOT NULL, " +

" PHONE TEXT NOT NULL," +

" MAKE TEXT NOT NULL, " +

" MODEL TEXT, " +

" COLOUR TEXT)";

stmt.executeUpdate(sql);

stmt.close();

c.close();

} catch ( Exception e ) {

System.err.println( e.getClass().getName() + ": " + e.getMessage() );

System.exit(0);

}

System.out.println("Cars3 created successfully");

}

插入方法是:

public static void InsertCars(String table, String phone, String registration, String make, String model, String colour)

{

Connection c = null;

PreparedStatement pstmt = null;

try {

Class.forName("org.sqlite.JDBC");

c = DriverManager.getConnection("jdbc:sqlite:WalkerTechCars.db");

c.setAutoCommit(false);

System.out.println("Opened database successfully");

String query="INSERT INTO "+table+" (PHONE,REGISTRATION,MAKE, MODEL,COLOUR) VALUES (?,?,?,?,?)";

pstmt = c.prepareStatement(query);

pstmt = c.prepareStatement

("insert into CARS3 values(?,?,?,?,?)");

pstmt.setString(1,registration);

pstmt.setString(2,phone);

pstmt.setString(3, make);

pstmt.setString(4, model);

pstmt.setString(5, colour);

pstmt.executeUpdate();

pstmt.close();

c.commit();

c.close();

} catch ( Exception e ) {

System.err.println( e.getClass().getName() + ": " + e.getMessage() );

System.exit(0);

}

System.out.println("Car Records created successfully");

}

不应允许但可以重复执行的代码行是:

DbHandler.InsertCars("Cars3", "1","BN51 MZY", "Mini", "C220", "BLACK");

分享到 :
0 人收藏
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

积分:3875789
帖子:775174
精华:0
期权论坛 期权论坛
发布
内容

下载期权论坛手机APP