sql >> Database teknologi >  >> RDS >> Mysql

com.mysql.jdbc.exceptions.jdbc4.MySQLIintegrityConstraintViolationException:Dubleret indtastning '' for nøglen 'PRIMARY'

du skal remove ; i din sql-forespørgsel:

forkert forespørgsel:

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

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

korrekte forespørgsel er:

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

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

TJEK DIN INDSÆT FORESPØRGSEL

Og jeg tror, ​​din INSERT værdierne i db, den forespørgsel er for forkert, nævnte tabelnavnet kun, du bør ikke nævne kolonnenavnet . så du skal tilføje tabelnavnet med din forespørgsel.

forkert forespørgsel:

insert into staff values(?)

korrekt forespørgsel:

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

henvis dette link:

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

OPDATERING:1

forkert kode:

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

du bør ændre like:sample

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

Bemærk:

  1. du bør ikke kalde sql-forespørgslen.
  2. Og du bruger preparedStatement for at ringe, skal du skifte til statement
  3. det preparedStatement det kan ikke løses.

synes godt om,

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

opdatering:2:-->eksempel

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. Sådan får du lat og long fra sdo_geometry i oracle

  2. TNS-12519 uden maksimale processer nået

  3. Opret en midlertidig tabel i SQL Server

  4. Tips til migrering fra MySQL-replikering til MySQL Galera Cluster 4.0