【问题标题】:Updated in a database [update ... set] java在数据库中更新 [update ... set] java
【发布时间】:2015-05-11 22:53:53
【问题描述】:

我的 java 代码有问题。当我进行数据库更新但它们无法正常工作时。我用了网上找的三种方法,还是不行! 帮我 提前谢谢你

package HLR_SERVEUR;
public class model_HLR{

    public void setupdate(String[] information) 
    {
        int imsdn_values,cins,kcs,kis;
        long IMSI_values=0;

        this.IMSI_values = Long.parseLong(information[0]);
        this.imsdn_values = Integer.parseInt(information[1]);
        this.kis = Integer.parseInt(information[2]);
        this.kcs = Integer.parseInt(information[3]);
        this.service = new String(information[4]);
        this.nom = new String(information[5]);
        this.prenom = new String(information[6]);
        this.cins = Integer.parseInt(information[7]);
        System.out.println(this.IMSI_values);
        System.out.println(this.imsdn_values);
        System.out.println(this.kis);
        System.out.println(this.kcs);
        System.out.println(this.service);
        System.out.println(this.nom);
        System.out.println(this.prenom);
        System.out.println(this.cins);

        try {
            Class.forName("com.mysql.jdbc.Driver");
            dbConnect = DriverManager.getConnection("jdbc:mysql://localhost/abonnes", "root","");
            dbStatement = dbConnect.createStatement();

            /*
                test 1: 

                 PreparedStatement prepareStatement = (PreparedStatement)                                                     dbConnect.prepareStatement("Update sim set ISMIDN="+this.imsdn_values +", KI="+this.kis +",KC="+this.kcs+",SERVICE='"+this.service +"',nom='"+this.nom +"',prenom='"+this.prenom +"',cin="+this.cins +" Where IMSI="+this.IMSI_value+"");

            k=prepareStatement.executeUpdate();
                test 2: 
               PreparedStatement checkDB = (PreparedStatement)   dbConnect.prepareStatement( "UPDATE sim set ISMIDN= ? ,KI= ?,KC= ?,SERVICE= ?,nom= ?,prenom= ?,cin= ? Where ISMI= ? ");

            checkDB.setInt(1,this.imsdn_values);
            checkDB.setInt(2,this.kis);
            checkDB.setInt(3,this.kcs);
            checkDB.setString(4,this.service);
            checkDB.setString(5,this.nom);
            checkDB.setString(6,this.prenom); 
            checkDB.setInt(7,this.cins);
            checkDB.setLong(8,this.IMSI_values);
            k=checkDB.executeUpdate();
            */  
                 /*    test 3: */

            dbStatement=dbConnect.createStatement(ResultSet.TYPE_SCROLL_SENSITIVE,ResultSet.CONCUR_UPDATABLE);

            ResultSet uprs = dbStatement
                    .executeQuery("SELECT * FROM sim where ISMI ='"
                            + this.IMSI_values + "'");


                uprs.moveToInsertRow();
                uprs.updateInt("ISMIDN", this.imsdn_values);
                uprs.updateInt("KI", this.kis);
                uprs.updateInt("KC", this.kcs);
                uprs.updateString("SERVICE", this.service);
                uprs.updateString("nom", this.nom);
                uprs.updateString("prenom", this.prenom);
                uprs.updateInt("cin", this.cins);

                uprs.insertRow();
                uprs.beforeFirst();

            dbStatement.close();
            dbConnect.close();


        } catch (SQLException ex) {
            Logger.getLogger(View.class.getName()).log(Level.SEVERE, null, ex);
        } catch (ClassNotFoundException ex) {
            Logger.getLogger(View.class.getName()).log(Level.SEVERE, null, ex);
        }
    }

2015 年 5 月 12 日上午 12:20:55 HLR_SERVEUR.model_HLR setupdate 坟墓:空 com.mysql.jdbc.exceptions.MySQLIntegrityConstraintViolationException:列“ISMI”不能为空 在 com.mysql.jdbc.SQLError.createSQLException(SQLError.java:931) 在 com.mysql.jdbc.MysqlIO.checkErrorPacket(MysqlIO.java:2941) 在 com.mysql.jdbc.MysqlIO.sendCommand(MysqlIO.java:1623) 在 com.mysql.jdbc.MysqlIO.sqlQueryDirect(MysqlIO.java:1715) 在 com.mysql.jdbc.Connection.execSQL(Connection.java:3249) 在 com.mysql.jdbc.PreparedStatement.executeInternal(PreparedStatement.java:1268) 在 com.mysql.jdbc.PreparedStatement.executeUpdate(PreparedStatement.java:1541) 在 com.mysql.jdbc.PreparedStatement.executeUpdate(PreparedStatement.java:1455) 在 com.mysql.jdbc.PreparedStatement.executeUpdate(PreparedStatement.java:1440) 在 com.mysql.jdbc.UpdatableResultSet.insertRow(UpdatableResultSet.java:739) 在 HLR_SERVEUR.model_HLR.setupdate(model_HLR.java:304) 在 HLR_SERVEUR.AbonnePanel_Rechercher.actionPerformed(AbonnePanel_Rechercher.java:401) 在 javax.swing.AbstractButton.fireActionPerformed(未知来源) 在 javax.swing.AbstractButton$Handler.actionPerformed(未知来源) 在 javax.swing.DefaultButtonModel.fireActionPerformed(未知来源) 在 javax.swing.DefaultButtonModel.setPressed(未知来源) 在 javax.swing.plaf.basic.BasicButtonListener.mouseReleased(未知来源) 在 java.awt.Component.processMouseEvent(未知来源) 在 javax.swing.JComponent.processMouseEvent(未知来源) 在 java.awt.Component.processEvent(未知来源) 在 java.awt.Container.processEvent(未知来源) 在 java.awt.Component.dispatchEventImpl(未知来源) 在 java.awt.Container.dispatchEventImpl(未知来源) 在 java.awt.Component.dispatchEvent(未知来源) 在 java.awt.LightweightDispatcher.retargetMouseEvent(未知来源) 在 java.awt.LightweightDispatcher.processMouseEvent(未知来源) 在 java.awt.LightweightDispatcher.dispatchEvent(未知来源) 在 java.awt.Container.dispatchEventImpl(未知来源) 在 java.awt.Window.dispatchEventImpl(未知来源) 在 java.awt.Component.dispatchEvent(未知来源) 在 java.awt.EventQueue.dispatchEventImpl(未知来源) 在 java.awt.EventQueue.access$500(未知来源) 在 java.awt.EventQueue$3.run(未知来源) 在 java.awt.EventQueue$3.run(未知来源) 在 java.security.AccessController.doPrivileged(本机方法) 在 java.security.ProtectionDomain$1.doIntersectionPrivilege(未知来源) 在 java.security.ProtectionDomain$1.doIntersectionPrivilege(未知来源) 在 java.awt.EventQueue$4.run(未知来源) 在 java.awt.EventQueue$4.run(未知来源) 在 java.security.AccessController.doPrivileged(本机方法) 在 java.security.ProtectionDomain$1.doIntersectionPrivilege(未知来源) 在 java.awt.EventQueue.dispatchEvent(未知来源) 在 java.awt.EventDispatchThread.pumpOneEventForFilters(未知来源) 在 java.awt.EventDispatchThread.pumpEventsForFilter(未知来源) 在 java.awt.EventDispatchThread.pumpEventsForHierarchy(未知来源) 在 java.awt.EventDispatchThread.pumpEvents(未知来源) 在 java.awt.EventDispatchThread.pumpEvents(未知来源) 在 java.awt.EventDispatchThread.run(未知来源)


问题 2015 年 5 月 12 日上午 1:42:15 HLR_SERVEUR.model_HLR setupdate GRAVE: null com.mysql.jdbc.exceptions.MySQLIntegrityConstraintViolationException: 重复条目 '216011100258963' 键 'PRIMARY

【问题讨论】:

  • 请阅读有关 stacvoverflow 的规则

标签: java database


【解决方案1】:

从您作为答案发布的日志中,ISMI 列是您的数据库表的必填字段,它似乎是一个主键

你需要这样的东西:

uprs.updateInt("ISMI", someValue);

完成您的新行数据。

另请注意,表中的主键必须是唯一的

【讨论】:

  • 问题 2015 年 5 月 12 日上午 1:42:15 HLR_SERVEUR.model_HLR setupdate GRAVE: null com.mysql.jdbc.exceptions.MySQLIntegrityConstraintViolationException: 键 'PRIMARY' 的重复条目 '216011100258963'
  • 错误信息说明了一切,您已将重复值设置为主键。
猜你喜欢
  • 2021-10-30
  • 1970-01-01
  • 1970-01-01
  • 2015-07-25
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2022-06-29
相关资源
最近更新 更多