你的Connection变量应该在类之中,在使用ResultSet之前不可以把Statement和Connnection不应该关,你的ResultSet不应被返回而是直接把结果拿到 []string 内再返回
import java.util.Arrays;
import java.lang.*;
import java.sql.*;
public class DatabaseConnectorTest {
private Connection connection = null;
private Statement statement = null;
public void connect(String connString) throws SQLException {
try {
Class.forName("org.sqlite.JDBC");
connection = DriverManager.getConnection(connString,"root", "root");
} catch (SQLException e) {
System.err.print("connect SQLException: ");
System.err.println(e.getMessage());
} catch (ClassNotFoundException e) {
System.err.print("ClassNotFoundException: ");
System.err.println(e.getMessage());
}
}
public String[] getUserName(String connString, String SQLString) {
ResultSet rs = null;
try {
if(null == connection)
connect(connString);
if(null == statement)
statement = connection.createStatement();
rs = statement.executeQuery(SQLString);
int rowcount = 0;
int i = 1;
while(rs.next()) {
rowcount = i++;
}
String[] retArray = new String[rowcount];
i=0;
rs = statement.executeQuery(SQLString);
while (rs.next()) {
retArray[i++] = rs.getString("user_name");
}
return retArray;
} catch (SQLException e ) {
System.err.print("getUserName SQLException: ");
System.err.println(e.getMessage());
} finally {
if (statement != null) {
try { statement.close(); }
catch(SQLException e) {
System.err.print("getUserName Final SQLException: ");
System.err.println(e.getMessage());
}
}
}
return null;
}
public static void main(String[] agrs){
String connString = "jdbc:sqlite:/tmp/test.db"; <<<< 用你自己的
String SQLString = "SELECT user_name FROM users";
DatabaseConnectorTest db = new DatabaseConnectorTest();
String[] user_name = db.getUserName(connString, SQLString);
System.out.println(Arrays.toString(user_name));
}
}