黑马程序员技术交流社区

标题: JDBC求解释报错 [打印本页]

作者: lixing123456    时间: 2014-12-18 08:57
标题: JDBC求解释报错
public class Test {

        public static void main(String[] args) {
                try {
                        Class.forName("com.mysql.jdbc.Driver");
                        String url="jdbc:MySQL://127.0.0.1:3306/test";
                        String sql="insert into student values(?,?,?)";
                        Connection con=DriverManager.getConnection(url, "root", "root");
                        PreparedStatement ps=con.prepareStatement(sql);
                        ps.setInt(1, 103);
                        ps.setString(2, "b");
                        ps.setInt(3, 15);
                        int i=ps.executeUpdate();
                        System.out.println(i);
                } catch (ClassNotFoundException e) {
                        // TODO Auto-generated catch block
                        e.printStackTrace();
                } catch (SQLException e) {
                        // TODO Auto-generated catch block
                        e.printStackTrace();
                }
               
        }
错误信息:
java.sql.SQLException: Duplicate entry '103' for key 1
        at com.mysql.jdbc.MysqlIO.checkErrorPacket(MysqlIO.java:2901)
        at com.mysql.jdbc.MysqlIO.sendCommand(MysqlIO.java:1584)
        at com.mysql.jdbc.Connection.serverExecute(Connection.java:4742)
        at com.mysql.jdbc.ServerPreparedStatement.serverExecute(ServerPreparedStatement.java:1251)
        at com.mysql.jdbc.ServerPreparedStatement.executeInternal(ServerPreparedStatement.java:993)
        at com.mysql.jdbc.PreparedStatement.executeUpdate(PreparedStatement.java:1930)
        at com.mysql.jdbc.PreparedStatement.executeUpdate(PreparedStatement.java:1855)
        at com.mysql.jdbc.PreparedStatement.executeUpdate(PreparedStatement.java:1693)
        at a1.Test.main(Test.java:20)
作者: Little_Pea    时间: 2014-12-18 09:28
估计是你的数据库student表的第一个字段是id,然后你当初创建时是primary key  auto_increment,这样的话第一个字段id MySQL是自动生成的。现在你又往id插值,就报错了。Duplicate entry '103' for key 1意思是第一个字段多值了。你把这一句删了估计就好了。




欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2