Mysql
 sql >> Base de Dados >  >> RDS >> Mysql

com.mysql.jdbc.exceptions.jdbc4.MySQLIntegrityConstraintViolationException:Entrada duplicada '' para a chave 'PRIMARY'


você deve remove o ; na sua consulta sql:

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

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

consulta correta é:
prepareStatement("create table staff (staffname varchar(30) primary key)");

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

VERIFIQUE SUA INSERÇÃO DE CONSULTA

E acho que seu INSERIR os valores no banco de dados, essa consulta está muito errada, mencionou o tablename apenas, você não deve mencionar o nome da coluna . então você deve adicionar o nome da tabela com sua consulta.

consulta errada:
insert into staff values(?)

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

consulte este link:

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

ATUALIZAÇÃO:1

código errado:
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();

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

Observação:
  1. você não deve chamar a consulta sql.
  2. E você está usando preparedStatement para chamar, você deve mudar para statement
  3. a preparedStatement não pode ser resolvido.

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

atualização:2:-->amostra
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);
    }
}