當前位置:成語大全網 - 書法字典 - Java將返回列表類型改為返回數組類型。

Java將返回列表類型改為返回數組類型。

兩種方案:

第壹種:(推薦)

只需修改返回類型並設置

將return tmplist改為return tmplist . toto array();只需取出對象數組,需要強行轉換成HashMap;

//返回值是壹個數組

公共對象[]quyListBySqlAndParams(String query str,List params,int dno)拋出SQLException {

連接連接=空;

PreparedStatement pstmt = null

結果集rst = null

ResultSetMetaData rsmd = null

list tmplist = new ArrayList();

嘗試{

conn = mydatautil . getconnection(dno);

PS TMT = conn . prepare statement(query str);

//參數賦值

for(int I = 0;我& ltparams . size();i++){

string param = params . get(I)= = null?" ":params.get(i)。toString()。trim();

pstmt.setString(i+1,param);

}

rst = pstmt . execute query();

rsmd = rst . get metadata();

while (rst.next()) {

map tmp map = new HashMap();

for(int I = 1;我& lt= rsmd . getcolumncount();i++ ){

tmp map . put(rsmd . get column name(I),rst . getobject(I));

}

tmplist . add(tmp map);

}

}catch(異常e){

system . out . println(" pubgetstr "+e . tostring()+query str);

}最後{

myDataUtil.free(康涅狄格州rst、pstmt);

//在此調用toArray()方法返回數組。

返回tmplist . to array();

}

}

選項2:

原理是將結果集的光標定位到最後壹行,然後通過返回行號來確定記錄數,從而確定數組的長度。然後將光標回滾到beforefirst。

但是,壹定要註意,這樣做是有需要考慮的地方的。默認的ResultSet類型是TYPE_FORWARD_ONLY,並且只允許前進遊標,不允許後退指針。定義時,將默認結果集類型中的TYPE_FORWARD_ONLY更改為ResultSet。Type _ scroll _ insensitive,並將您的句子更改為。

pstmt = conn . prepare statement(query str,ResultSet。TYPE_SCROLL_INSENSITIVE,ResultSet。CONCUR _ READ _ ONLY);

//返回壹個數組

公共對象[]quyListBySqlAndParams(String query str,List params,int dno)拋出SQLException {

連接連接=空;

PreparedStatement pstmt = null

結果集rst = null

ResultSetMetaData rsmd = null

object[]tmpa arry;

嘗試{

conn = mydatautil . getconnection(dno);

//註意PSTMT = conn . prepare statement(query str,ResultSet。Type _ scroll _ insensitive,ResultSet。Concur _ read _ only)已在此處修改;

//參數賦值

for(int I = 0;我& ltparams . size();i++){

string param = params . get(I)= = null?" ":params.get(i)。toString()。trim();

pstmt.setString(i+1,param);

}

rst = pstmt . execute query();

rsmd = rst . get metadata();

//此處已修改。

rst . last();

int count = rst . getrow();

tmpAarry =新對象[計數];

rst . before first();

while (rst.next()) {

map tmp map = new HashMap();

int j = 0;

for(int I = 1;我& lt= rsmd . getcolumncount();i++ ){

tmp map . put(rsmd . get column name(I),rst . getobject(I));

}

tmp arry[j]= tmp map;

j++;

}

}catch(異常e){

system . out . println(" pubgetstr "+e . tostring()+query str);

}最後{

myDataUtil.free(康涅狄格州rst、pstmt);

//返回的是壹個數組。

返回tmpAarry

}

}

嗯,這兩種方法的結構是壹樣的。妳可以看到自己寫有多麻煩,還有很多意想不到的問題要考慮,比如滾動結果集。所以妳可以充分利用java api中提供的東西,它經得起考驗,非常方便。