以下代码工作 - 更新表(通过查看代码执行前后的表内容,在SQL服务器上进行确认)。更新表时生成异常 - java
但是,当我在NetBeans中并从命令行运行程序时,只要执行“rs = stmt.executeQuery(SQLquery);”,CATCH块就会捕获异常。
我知道这是因为在CATCH块的执行从未执行之前,系统“System.out.println(”已成功更新!“);”。如果我将它移动到“rs = stmt.executeQuery(SQLquery);”之后,它也不会执行。
异常错误是:
run:
The statement did not return a result set.
BUILD SUCCESSFUL (total time: 0 seconds)
我不明白我做了什么错。
我也尝试使用 “RS = stmt.executeUpdate(SqlQuery类);” 而不是 “RS = stmt.executeQuery(SqlQuery类);”,但NetBeans的有红色感叹号本笔记,当我徘徊在它:
incompatible types
required: ResultSet
found: int
如果我编译它,NetBeans的吐出了这一点:
C:\Java\Example\src\example\Example.java:56: error: incompatible types
rs = stmt.executeUpdate(SQLquery);
^
required: ResultSet
found: int
1 error
哎呀。我疯了! 请帮忙!
package example;
import java.io.BufferedReader;
import java.io.FileReader;
import java.io.FileWriter;
import java.io.PrintWriter;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement;
class Example
{
public static void main(String args[])
{
String host = "jdbc:sqlserver://SERVER1\\Primrose;databaseName=Primrose";
String uName = "sa";
String uPwd = "[email protected]@ct";
String SQLquery = "";
int totalFolders = 4;
int getRecId = 0;
String getUser = "";
String getSection = "";
String getKey = "";
String getValue = "";
String getExtraInfo = "";
try
{
Connection con = DriverManager.getConnection(host, uName, uPwd);
Statement stmt = con.createStatement();
SQLquery = "SELECT * FROM _Registry WHERE (Section = 'RecIds' AND Key_ = '_Folders' AND User_ = 'sc_general')";
ResultSet rs = stmt.executeQuery(SQLquery);
while (rs.next())
{
getRecId = rs.getInt("RecId");
getUser = rs.getString("User_");
getSection = rs.getString("Section");
getKey = rs.getString("Key_");
getValue = rs.getString("Value");
getExtraInfo = rs.getString("ExtraInfo");
getValue = getValue.trim(); // Strip trailing spaces from string
int newValue = Integer.parseInt(getValue) + 1; // Convert string to number so I can add it to total folders
newValue = newValue + totalFolders; // Change to total + existing value to write back to dB
getValue = Integer.toString(newValue); // Convert to string as required by the table
}
SQLquery = "UPDATE _Registry SET Value=" + getValue + " WHERE (RecId = 5 AND User_ = 'sc_general' AND Section = 'RecIds' AND Key_ = '_FOLDERS')";
rs = stmt.executeQuery(SQLquery);
rs.updateInt("RecId", getRecId);
rs.updateString("User_", getUser);
rs.updateString("Section", getSection);
rs.updateString("Key_", getKey);
rs.updateString("Value", getValue);
rs.updateString("ExtraInfo", getExtraInfo);
rs.updateRow();
System.out.println("Updated successfully!");
}
catch (SQLException err)
{
System.out.println(err.getMessage());
}
}
}
非常感谢,它做到了(并删除rs.update行):) – user2199508 2013-05-03 17:30:19