【发布时间】: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