【发布时间】:2020-08-15 05:07:53
【问题描述】:
public static ResultSet getTestDatafromSQL(String QueryString) throws SQLException {
Connection conn = null;
ResultSet resultSet = null;
try {
String dbURL = "jdbc:sqlserver://localhost\\sqlexpress;DatabaseName=master;integratedSecurity=true;";
conn = DriverManager.getConnection(dbURL);
if (conn != null) {
DatabaseMetaData dm = (DatabaseMetaData) conn.getMetaData();
System.out.println("Driver name: " + dm.getDriverName());
System.out.println("Driver version: " + dm.getDriverVersion());
System.out.println("Product name: " + dm.getDatabaseProductName());
System.out.println("Product version: " + dm.getDatabaseProductVersion().toString());
Statement stmt = conn.createStatement();
// Create and execute a SELECT SQL statement.
resultSet = stmt.executeQuery(QueryString);
System.out.println(resultSet);
while(resultSet.next()) {
System.out.println(resultSet.getString(1));
//return resultSet.getString(1);
}
}
} catch (SQLException ex) {
ex.printStackTrace();
} finally {
try {
if (conn != null && !conn.isClosed()) {
conn.close();
}
} catch (SQLException ex) {
ex.printStackTrace();
}
}
return resultSet;
}
现在在其他班级,我称之为...
@Test(enabled = true)
public void query() throws XPathExpressionException, IOException, SQLException {
ResultSet sql = utilities.getTestDatafromSQL("SELECT ACCOUNT_NO1,CREDIT_LMT from [BCMASTER$] Where CAST(Trim(BCM_CREDIT_LMT) as float) >5000");
//System.out.println(sql.first());
System.out.println("SQLValue:"+sql.getString(1));
System.out.println("SQLValue:"+sql.getString(2));
}
我在 8 月 15 日星期六 10:25:24 IST 2020 com.microsoft.sqlserver.jdbc.SQLServerException:连接已关闭。 - 测试用例失败
要读取结果集,数据库连接应该是打开的?
从每个查询中我会得到不同的列,那么有没有可能我们可以将它存储在数组中并且返回是唯一的可能性或结果集可以获得值?
【问题讨论】:
-
仅供参考:
DriverManager.getConnection()不能返回 null,因此if (conn != null)语句是不必要的/多余的/多余的。
标签: java sql-server