sql >> Database >  >> RDS >> Mysql

com.mysql.jdbc.exceptions.jdbc4.MySQLIntegrityConstraintViolationException:dubbele invoer '' voor sleutel 'PRIMARY'

je moet remove de ; in uw sql-query:

verkeerde zoekopdracht:

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

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

juiste zoekopdracht is:

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

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

CONTROLEER JE INSERT QUERY

En ik denk dat je INSERT de waarden in de db, die query is te verkeerd, noemde de tabelnaam alleen, je moet de kolomnaam not niet noemen . dus je moet de tabelnaam toevoegen aan je zoekopdracht.

verkeerde zoekopdracht:

insert into staff values(?)

juiste zoekopdracht:

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

verwijs naar deze link:

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

UPDATE:1

verkeerde code:

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

je zou moeten veranderen zoals:sample

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

Opmerking:

  1. je moet de sql-query niet aanroepen.
  2. En u gebruikt preparedStatement om te bellen, moet je veranderen naar statement
  3. de preparedStatement dit kan niet worden opgelost.

vind ik leuk,

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

update:2:-->voorbeeld

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. Een eenvoudige selectiequery maken in de ontwerpweergave in Access 2016

  2. mysql injectie schade?

  3. Geavanceerde partitie-matching voor partitiegewijze join

  4. Hoe een rij kopiëren en in dezelfde tabel invoegen met een autoincrement-veld in MySQL?