无法运行executeUpdate()

时间:2015-07-29 11:49:40

标签: java jdbc

我一直在尝试使用预准备语句将数据插入到数据库中,但无法运行stmt.executeUpdate()查询将从下面声明的数组中插入字段,该语句将设置数组中的值。 / p>

 long[] array = new long[100];
 int[] devreg = new int[10];
 int count = 0, index = 0;
 try
        {  
            Class.forName("com.mysql.jdbc.Driver");
            conn = DriverManager.getConnection(Constants.DB_URL, Constants.USER, Constants.PASS); 
    //      LogMgr.dblogger.info(name +" : Database connection established");       //connection passed
        }
        catch (Exception e)
        {
            LogMgr.dblogger.info("Cannot connect to database" + e.toString()); //connection failure
        }
        if (conn != null)  //if connection passed or available
        {   //checking device registration
            String InsertQuery = " INSERT INTO `acc_dev_db`.`widhb` (`name`,`age`, `type`) VALUES ";

            int needacomma = 0; 
            for (int i=0; i< noofMsg; i++)
            {
                long empid = array[(i*indexlength)+1];
                try
                {
                    Statement s = conn.createStatement ();
                    s.executeQuery ("SELECT `empid` FROM `acc_dev_db`.`ID` WHERE `widevid` = "+empid+";");
                    ResultSet rs = s.getResultSet ();
                    if (rs.next())
                    {
                        devstatus = true;
                        if(needacomma>0)
                        {
                            InsertQuery = InsertQuery + ","; 
                        }
                        InsertQuery = InsertQuery + "(?,?,?,?)";
                        needacomma += 1;
                        devreg[j] = i;
                        j++;

                        LogMgr.dblogger.info("ID found registered : " + empid);         //found device id in the device table. Known device
                    }  
                    else
                    {
                        LogMgr.dblogger.info("ID found not registered : " + empid); 
                    }
                    rs.close ();
                    s.close ();
                }
                catch (Exception e) {
                    LogMgr.dblogger.info("Database reading error \n" + e.toString() );  //database reading error
                }
            }        
            if (devstatus == true)      //if device is registered or known device
            {   
                InsertQuery = InsertQuery + ";"; 
                java.sql.PreparedStatement stmt = conn.prepareStatement(InsertQuery);
                int loc = 1;
                for (count = 0;count < j; count++)
                {
                    int position = (indexlength*devreg[count]);      
                    stmt.setLong(loc, array[position]);
                    System.out.println( array[position]);
                    stmt.setDouble(loc + 1, array[position + 1]);
                    System.out.println( array[position+1]);
                    stmt.setTimestamp(loc + 2,dateconvert(2, array[position + 2]));
                    System.out.println( array[position+2]);
                    stmt.setLong(loc + 3, array[position + 3]);
                    System.out.println( array[position+3]);
                    loc += 4;   

                }
                LogMgr.jmslogger.info(stmt.toString());
                try{
                    stmt.executeUpdate();  
                    LogMgr.dblogger.info(name +" : studentdata update successfull from dev : " + devaddress);
                }
                catch(SQLException e){
                    System.out.println("EXCEPTION MAN!!!");
                }

                conn.close ();
            }

目前的O / P:

 12355419
 3740073994
 491504582
 43690
 EXCEPTION MAN!!!

1 个答案:

答案 0 :(得分:1)

您应该throw SqlException或使用try-catch阻止并管理SqlException