Mysql
 sql >> Teknologi Basis Data >  >> RDS >> Mysql

com.mysql.jdbc.exceptions.jdbc4.MySQLIntegrityConstraintViolationException:Entri duplikat '' untuk kunci 'PRIMARY'

Anda harus remove ; dalam kueri sql Anda:

kueri salah:

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

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

kueri yang benar adalah:

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

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

PERIKSA PERMINTAAN MASUKKAN ANDA

Dan, menurut saya MASUKKAN . Anda nilai dalam db, kueri itu terlalu salah, menyebutkan namatabel saja, Anda tidak boleh menyebutkan nama kolom . jadi Anda harus menambahkan nama tabel dengan kueri Anda.

kueri salah:

insert into staff values(?)

kueri yang benar:

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

rujuk tautan ini:

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

PERBARUI:1

kode salah:

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();

Anda harus mengubah seperti:contoh

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

Catatan:

  1. Anda tidak boleh memanggil kueri sql.
  2. Dan, Anda menggunakan preparedStatement untuk menelepon, Anda harus mengubah ke statement
  3. preparedStatement tidak dapat diselesaikan.

suka,

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

pembaruan:2:-->contoh

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 Select Query - Dapatkan hanya 10 karakter pertama dari suatu nilai

  2. Menyimpan id facebook sebagai int atau varchar?

  3. Apakah mungkin untuk memindahkan catatan dari satu tabel ke tabel lain menggunakan satu pernyataan SQL?

  4. Kelompokkan berdasarkan tahun di bidang tanggal di MySQL

  5. Urutan MySQL berdasarkan relevansi