Java:使用Result Test在循环内插入INTO

时间:2013-01-25 16:10:47

标签: java sql sql-server resultset

当我尝试在我的数据库中插入一些数据(MS-SQL)时,我遇到了一个小问题。 我正在使用这段代码(我只是复制粘贴所有代码,所以有人可能会理解我没有的代码)

 try 
              {
                  Connection connection = null;
                  Statement Statement = null;
                  ResultSet ResultSet = null;
                  String query = "";

              // jdbc:sqlserver://[serverName[\instanceName][:portNumber]][;property=value[;property=value]]
              String host = "jdbc:sqlserver://server;databaseName=db";
              String username = "user";
              String password = "pass";
              Statement = connection.createStatement();
              DateFormat dateFormat = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
              Calendar cal = Calendar.getInstance();

              DateFormat dateFormat1 = new SimpleDateFormat("dd.MM.yyyy");
              Calendar cal1 = Calendar.getInstance();

              for (int k = 0; k < idArray.length ; k ++ )
              {
                  query = "INSERT INTO Companies (ID,Company,Company2,Company3,Country,ZIP,City,Street," +
                        "Phone,Fax,Email,Internet,CustomerNo,AccountMngr,Icon,AddressSource," +
                        "UserDefined1,UserDefined2,CreatedOn,CreatedBy,ColectedInformation) " +
                        " VALUES ('" + UUID.randomUUID() + "','" + company_nameArray[k] 
                                + "','" + company_name2Array[k] + "','" + company_name3Array[k] + "','DE','"   
                                + zipArray[k] + "','" + cityArray[k] + "','" + streetArray[k] + "','"  
                                + phone_Array[k] + "','" + faxArray[k] + "','" + emailArray[k] + "','"
                                + internetArray[k] + "','" + customer_noArray[k] 
                                + "','d','131','60','Baufinder Import','Import Datum "
                                + dateFormat1.format(cal1.getTime()) + "','" 
                                + dateFormat1.format(cal1.getTime()) + "','d','" 
                                + "cxcxvcx" +  
                                "')";

                  ResultSet = Statement.executeQuery(query);   
              }

              connection.close();
          }
          catch(NullPointerException e)
          {
                System.out.println("NullPointerException");
          }
          catch ( SQLException err ) 
          {
              System.out.println( "SQL Exception:" ) ;

              // Loop through the SQL Exceptions
              while( err != null )
                 {
                  System.out.println( "State  : " + err.getSQLState()  ) ;
                  System.out.println( "Message: " + err.getMessage()   ) ;
                  System.out.println( "Error  : " + err.getErrorCode() ) ;

                  err = err.getNextException() ;
                 }
          }
          catch( Exception e )
          {
              System.out.println( "There is a problem with " + e ) ;
          }

    }

我收到此错误:

  

SQL异常:状态:null   消息:语句没有返回结果集。   错误:0

我不明白结果测试的问题。我一直在使用它,因为我尝试从另一个数据库读取数据,现在我尝试将它们插入到另一个数据库中。 此外,所有这些表都不包含空值。

提前谢谢你:)

1 个答案:

答案 0 :(得分:0)

使用Statement#executeUpdate(String)代替Statement#execute(query);

for (int k = 0; k < idArray.length ; k ++ )
          {
              query = "INSERT INTO Companies (ID,Company,Company2,Company3,Country,ZIP,City,Street," +
                    "Phone,Fax,Email,Internet,CustomerNo,AccountMngr,Icon,AddressSource," +
                    "UserDefined1,UserDefined2,CreatedOn,CreatedBy,ColectedInformation) " +
                    " VALUES ('" + UUID.randomUUID() + "','" + company_nameArray[k] 
                            + "','" + company_name2Array[k] + "','" + company_name3Array[k] + "','DE','"   
                            + zipArray[k] + "','" + cityArray[k] + "','" + streetArray[k] + "','"  
                            + phone_Array[k] + "','" + faxArray[k] + "','" + emailArray[k] + "','"
                            + internetArray[k] + "','" + customer_noArray[k] 
                            + "','d','131','60','Baufinder Import','Import Datum "
                            + dateFormat1.format(cal1.getTime()) + "','" 
                            + dateFormat1.format(cal1.getTime()) + "','d','" 
                            + "cxcxvcx" +  
                            "')";

              int updatedRowCount = Statement.executeUpdate(query);   
          }

注意:

  1. 如果用户直接输入某些数据,请考虑使用PreparedStatement来防止 SQL注入的可能性。
  2. 如果您需要提高插入效果,请尝试使用batch insert