Mysql
 sql >> Cơ Sở Dữ Liệu >  >> RDS >> Mysql

com.mysql.jdbc.exceptions.jdbc4.MySQLIntegrityConstraintViolationException:Mục nhập trùng lặp '' cho khóa 'CHÍNH'

you shoud remove ; trong truy vấn sql của bạn:

truy vấn sai:

prepareStatement("create table staff (staffname varchar(30) primary key);");

preparedStatement = connect.prepareStatement("insert into staff values(?);");

truy vấn đúng là:

prepareStatement("create table staff (staffname varchar(30) primary key)");

preparedStatement = connect.prepareStatement("insert into staff values(?)");

KIỂM TRA CÂU HỎI CHÈN CỦA BẠN

Và, tôi nghĩ rằng CHÈN của bạn các giá trị trong db, truy vấn đó quá sai, đã đề cập đến tên bảng chỉ, bạn không nên đề cập đến tên cột . vì vậy bạn phải thêm tên bảng với truy vấn của mình.

truy vấn sai:

insert into staff values(?)

truy vấn đúng:

    INSERT INTO table_name
    VALUES (value1,value2,value3,...);

tham khảo liên kết này:

http://www.w3schools.com/sql/sql_insert.asp

CẬP NHẬT:1

mã sai:

statement = connect.createStatement();
preparedStatement = connect
                .prepareStatement("SELECT count(*)FROM information_schema.tables\n"
                        + "WHERE table_schema = 'project' AND table_name = 'staff'");
        rs = preparedStatement.executeQuery();
        rs.next();

bạn nên thay đổi như:mẫu

Class.forName(driverName).newInstance();
con=DriverManager.getConnection(connectionUrl+dbName,user,password);
st = con.createStatement();
String sql="SELECT * FROM employees";
rs=st.executeQuery(sql);

Lưu ý:

  1. bạn không nên gọi truy vấn sql.
  2. Và, bạn đang sử dụng preparedStatement để gọi, bạn phải chuyển sang câu lệnh statement
  3. preparedStatement không thể giải quyết được.

thích,

string sql=....sql query...;
statement.executeQuery(sql) 

cập nhật:2:-> mẫu

public class User 
{
private String empname;
public String getEmpName()
{
    return empname;
}
public void setEmpName(String empname)
{
    this.empname=empname;
}
public void addUser(User user)
{
    try
    {
        PreparedStatement ps;
        ps=connection.prepareStatement("INSERT INTO employee (empname,empaddress,depname) VALUES (?,?,?)");
        ps.setString(1, user.getEmpName());
        ps.setString(2, user.getEmpAddress());
        ps.setString(3, user.getDepName());
        ps.executeUpdate();
    }
    catch(Exception e)
    {
        System.out.println(e);
    }
}


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. MySQL - Không thể chèn giá trị NULL vào cột, nhưng tôi có một giá trị mặc định được chỉ định?

  2. Ràng buộc mô hình tuyến đường không hoạt động

  3. Làm thế nào để phiên bản kiểm soát dữ liệu được lưu trữ trong mysql

  4. PDO Không thể thực thi các truy vấn trong khi các truy vấn không có bộ đệm khác đang hoạt động

  5. Tôi có thể thực thi nhiều truy vấn được phân tách bằng dấu chấm phẩy với MySQL Connector / J không?