Mysql
 sql >> Base de données >  >> RDS >> Mysql

com.mysql.jdbc.exceptions.jdbc4.MySQLIntegrityConstraintViolationException :entrée en double '' pour la clé 'PRIMARY'

vous devriez remove le ; dans votre requête sql :

mauvaise requête :

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

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

la requête correcte est :

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

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

VÉRIFIEZ VOTRE REQUÊTE D'INSERTION

Et, je pense que votre INSERT les valeurs dans la base de données, cette requête est trop mauvaise, ont mentionné le tablename seulement, vous ne devez pas mentionner le columnname . vous devez donc ajouter le nom de la table avec votre requête.

mauvaise requête :

insert into staff values(?)

requête correcte :

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

référez-vous à ce lien :

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

MISE À JOUR : 1

code erroné :

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

vous devriez changer comme :exemple

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

Remarque :

  1. vous ne devez pas appeler la requête sql.
  2. Et, vous utilisez preparedStatement pour appeler, vous devez passer à statement
  3. le preparedStatement est impossible à résoudre.

comme,

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

mise à jour :2 :-->exemple

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