【问题标题】:Insert and sort the data at the same time using java使用java同时插入和排序数据
【发布时间】:2019-10-22 07:38:30
【问题描述】:

这是我写的示例代码:

String sql =" INSERT INTO "+tablename+" (id,timestamp,type,current_num_workers,target_num_workers) 
VALUES (?,?,?,?,?)";
PreparedStatement pstmt=con.prepareStatement(sql);

System.out.println("Fetching records in ascending order...");
String se="SELECT * FROM " + tablename + " ORDER BY type ASC";
PreparedStatement pstmt=con.prepareStatement(sql);

pstmt.setString(1, id); 
pstmt.setString(2, timestamp); 
pstmt.setString(3, type); 
pstmt.setString(4, current_num_workers); 
pstmt.setString(5, target_num_workers);
pstmt.executeUpdate();
pstmt.executeUpdate();

这是我面临的例外:

Exception in thread "main" com.microsoft.sqlserver.jdbc.SQLServerException: A result set was 
generated for update.
at com.microsoft.sqlserver.jdbc.SQLServerException.makeFromDriverError(SQLServerException.java:226)
at com.microsoft.sqlserver.jdbc.SQLServerPreparedStatement.doExecutePreparedStatement
(SQLServerPreparedStatement.java:592)
at com.microsoft.sqlserver.jdbc.SQLServerPreparedStatement$PrepStmtExecCmd.doExecute
(SQLServerPreparedStatement.java:508)
at com.microsoft.sqlserver.jdbc.TDSCommand.execute(IOBuffer.java:7240)
at com.microsoft.sqlserver.jdbc.SQLServerConnection.executeCommand(SQLServerConnection.java:2869)
at com.microsoft.sqlserver.jdbc.SQLServerStatement.executeCommand(SQLServerStatement.java:243)
at com.microsoft.sqlserver.jdbc.SQLServerStatement.executeStatement(SQLServerStatement.java:218)
at com.microsoft.sqlserver.jdbc.SQLServerPreparedStatement.executeUpdate
(SQLServerPreparedStatement.java:461)

帮助我解决这个问题以及我应该同时在哪里排序和插入详细信息。

【问题讨论】:

  • 该代码甚至无法编译,因为您将变量 pstmt 声明了两次。
  • 不要将executeUpdate 用于 SELECT 查询。请参阅:docs.oracle.com/javase/7/docs/api/java/sql/…
  • 这是两件不同的事情:首先将数据插入表中,然后获取表的排序内容。不要混在一起。
  • 为什么不使用insert into ... select ...?那么就不需要通过Java来回数据了。

标签: java sql sql-server jdbc


【解决方案1】:

试试这样的。 这假定查询中存在使用的字段。

String sql =" INSERT INTO "+tablename+" (id,timestamp,type,current_num_workers,target_num_workers) 
VALUES (?,?,?,?,?)";
PreparedStatement pstmtInsert=con.prepareStatement(sql);

System.out.println("Fetching records in ascending order...");
String se="SELECT * FROM " + tablename + " ORDER BY type ASC";
PreparedStatement pstmtSelect=con.prepareStatement(se);
Resultset rs=pstmtSelect.executeQuery();
while(rs.next()){
    pstmtInsert.setString(1, rs.getString("id")); 
    pstmtInsert.setString(2, rs.getString("timestamp")); 
    pstmtInsert.setString(3, rs.getString("type")); 
    pstmtInsert.setString(4, rs.getString("current_num_workers")); 
    pstmtInsert.setString(5, rs.getString("target_num_workers"));
    pstmtInsert.executeUpdate();
}

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2014-03-06
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-11-05
    • 1970-01-01
    相关资源
    最近更新 更多