java - 如何确保 INSERT INTO 不会在 mySQL 数据库上添加相同的值

标签 java mysql sql jdbc insert

有没有一种方法可以制作一个 INSERT INTO 准备好的语句,但要确保如果数据库已经存在,用户将提供的名称不会被放入数据库中?

public ServerConn(String sql_name,int sql_year,String sql_ticket)
  {
   try
        {
           Class.forName( "com.mysql.jdbc.Driver" ) ;
           java.sql.Connection conn = DriverManager.getConnection("jdbc:mysql://localhost/promitheas?user=gunner&password=1234") ;
           this.sql_name = sql_name;
           this.sql_year = sql_year;
           this.sql_ticket = sql_ticket;
           PreparedStatement ps = conn.prepareStatement("INSERT INTO tickets (xronia,ticket,name) VALUES (?,?,?)");
           ps.setInt(1,sql_year);
           ps.setString(2,sql_ticket);
           ps.setString(3,sql_name);
           ps.executeUpdate();
           System.out.println("Done!");
   } catch (SQLException case1){
         case1.printStackTrace();
   } catch(Exception case2){
         case2.printStackTrace();
 }
}

最佳答案

你可以通过添加一个像这样的唯一约束来检查数据库:

ALTER TABLE tickets ADD UNIQUE (name)

如果该名称已存在于数据库中,则无法执行 INSERT。

关于java - 如何确保 INSERT INTO 不会在 mySQL 数据库上添加相同的值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25183948/

相关文章:

java - Maven 不会在 Eclipse 中自动构建默认文件夹路径

java - 使用 GeoJson 向 google map 添加标记

java - 使用 Oracle UCP 连接池管理器时如何获取连接?

mysql - 对于学生来说,哪一种是 DBMS 的最佳方法?

mysql - 产品分组时选择价格最小的产品

mysql gui 工具 64 位 rpm

sql - 为许多参数执行 SAS 宏

php - 调用成员函数 row() 错误 | $row = $query->row(); |代码点火器

java - 错误 : Exception in thread "main" java. lang.NullPointerException

java - 表中两个外键的组合,不能多次插入