Mysql
 sql >> Baza danych >  >> RDS >> Mysql

com.mysql.jdbc.exceptions.jdbc4.MySQLIntegrityConstraintViolationException:Zduplikowany wpis „” dla klucza „PRIMARY”

należy remove ; w zapytaniu sql:

złe zapytanie:

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

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

prawidłowe zapytanie to:

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

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

SPRAWDŹ SWOJE WSTAWIANIE ZAPYTANIA

I myślę, że Twoje WSTAW wartości w bazie danych, to zapytanie jest zbyt błędne, wspominały nazwę tabeli tylko nie należy wymieniać nazwy kolumny . więc powinieneś dodać nazwę tabeli do zapytania.

złe zapytanie:

insert into staff values(?)

poprawne zapytanie:

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

sprawdź ten link:

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

AKTUALIZACJA:1

niewłaściwy kod:

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

powinieneś zmienić jak:przykład

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

Uwaga:

  1. nie należy wywoływać zapytania sql.
  2. I używasz preparedStatement aby zadzwonić, należy przejść do statement
  3. preparedStatement nie można rozwiązać.

jak,

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

update:2:-->przykład

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. Błąd przygotowanej instrukcji mysql:MySQLSyntaxErrorException

  2. Czy przypisywanie bazy danych MySQL każdemu użytkownikowi w mojej witrynie jest nierozsądne?

  3. Najlepszy sposób na bezpieczne połączenie z MySQL za pomocą PHP

  4. Jak usunąć zduplikowane elementy w MySQL z zestawem danych składającym się z 20 milionów wierszy?

  5. Czy `mysqlcheck` może pomóc mi rozwiązać problemy z bazą danych bez uszkadzania mojej bazy danych?