我在一个Java上编写了一个SQLite“Actionhandler”,您可以在其中创建/删除表,并在这些表中添加/更新/获取/删除条目。
表的一般创建/删除和条目的添加可以正常工作,但是现在我想要使getEntry(...)函数。
public void getEntry(String table, String[] ident){
try{
stmt = conn.createStatement();
String exec = "SELECT " + ident[0] + " FROM " + table;
if(!ident[1].isEmpty()){
exec += " WHERE(" + ident[1] + ");";
}else{
exec += ";";
}
ResultSet res = stmt.executeQuery(exec);
while(res.next()){
System.out.println(res.getInt("uid"));
System.out.println(res.getString("uname"));
System.out.println(res.getString("pwd"));
System.out.println(res.getString("mail"));
System.out.println(res.getInt("rank"));
System.out.println(res.getInt("coins"));
System.out.println(res.getString("stg"));
}
res.close();
stmt.close();
}catch(Exception e){
e.printStackTrace();
}
}当然,这很管用!但是我不想System.out.println(...)所有的数据,我想把它还给main(...)函数,它叫getEntry(...)函数,这样它就可以处理这些数据了。如何返回此函数的res数据?
发布于 2015-07-21 17:50:05
您可以以ResultSet的形式返回函数:
public ResultSet getEntry(String table, String[] ident){
try{
stmt = conn.createStatement();
String exec = "SELECT " + ident[0] + " FROM " + table;
if(!ident[1].isEmpty()){
exec += " WHERE(" + ident[1] + ");";
}else{
exec += ";";
}
ResultSet res = stmt.executeQuery(exec);
/* while(res.next()){
System.out.println(res.getInt("uid"));
System.out.println(res.getString("uname"));
System.out.println(res.getString("pwd"));
System.out.println(res.getString("mail"));
System.out.println(res.getInt("rank"));
System.out.println(res.getInt("coins"));
System.out.println(res.getString("stg"));
}res.close();
stmt.close();*/
return res;
}catch(Exception e){
e.printStackTrace();
}
}然后在总体上您可以处理ResultSet
public static void main (String args []){
YourClass yourInstance = new YourClass ();
ResultSet tempResultSet = yourInstance.getEntry();
while( tempResultSet .next() ){
System.out.println(res.getInt("uid"));
System.out.println(res.getString("uname"));
System.out.println(res.getString("pwd"));
System.out.println(res.getString("mail"));
System.out.println(res.getInt("rank"));
System.out.println(res.getInt("coins"));
System.out.println(res.getString("stg"));
}
yourInstance .stmt.close() ; // this is assuming stmt is public
yourInstance.tempResultSet.close()
}如果有一个类似于stmt的方法返回getStmt(),那么就用yourInstance.getStmt().close()关闭它
https://stackoverflow.com/questions/31545549
复制相似问题