public class databasemanage { connection conn=null; preparedstatement ps=null; resultset rs=null; list list=null; private log log = logfactory.getlog(getclass()); public connection getconnection() { try { class.forname(oracle.jdbc.driver.or
public class databasemanage {
connection conn=null;
preparedstatement ps=null;
resultset rs=null;
list list=null;
private log log = logfactory.getlog(getclass());
public connection getconnection()
{
try
{
class.forname(oracle.jdbc.driver.oracledriver);
conn=drivermanager.getconnection(jdbc:oracle:thin:@localhost:1521:orcl,qhit,123);
//conn.setautocommit(false);/*设定事务不自动提交*/
}
catch(exception ex)
{
ex.printstacktrace();
}
return conn;
}
public static void main(string args[]){
databasemanage obj=new databasemanage();
system.out.println(conn=+obj.getconnection());
}
//**********************************利用类反射机制查询数据对象*************************************************** 批量处理
public list getdatalistbyreflectfororacle(stringbuffer buffer, pageinfovo pagination, class voclass)
throws sqlexception {
list valuelist = new arraylist();
conn=getconnection();
try {
stringbuffer sqlbuffer = new stringbuffer();
if (pagination == null) // 全部取出记录
{
ps=conn.preparestatement(buffer.tostring());
rs = ps.executequery();
resultsetmetadata rsmd = rs.getmetadata();
int columncount = rsmd.getcolumncount();
hashmap hmlist = new hashmap();
while (rs.next()) {
for (int j = 1; j hmlist.put(rsmd.getcolumnname(j).tolowercase(), rs.getstring(j));
}
object vo = null;
if (voclass != null) {
vo = voclass.newinstance();
beanutils.populate(vo, hmlist);
valuelist.add(vo);
} else {
valuelist.add(hmlist);
}
}
return valuelist;
} else {
int pageno = pagination.getpage();
int max = pageno * pagination.getpagesize() + 1;
int min = (pageno - 1) * pagination.getpagesize();
sqlbuffer.append( select * from (select my_table.*, rownum as my_rownum from ( );
sqlbuffer.append(buffer);
sqlbuffer.append( ) my_table where rownum ).append(min);
log.info(查询sql:= + sqlbuffer.tostring());
ps=conn.preparestatement(sqlbuffer.tostring());
rs = ps.executequery();
resultsetmetadata rsmd = rs.getmetadata();
int columncount = rsmd.getcolumncount();
hashmap hmlist = new hashmap();
while (rs.next()) {
for (int j = 1; j hmlist.put(rsmd.getcolumnname(j).tolowercase(), rs.getstring(j));
}
object vo = null;
if (voclass != null) {
vo = voclass.newinstance();
beanutils.populate(vo, hmlist);
valuelist.add(vo);
} else {
valuelist.add(hmlist);
}
}
stringbuffer buffercount = new stringbuffer( select count(1) as b from ().append(
buffer.tostring()).append());
log.info(buffercount= + buffercount.tostring());
int m = getrecordcount(buffercount.tostring());
log.info(查询所得的记录数为:= + m);
pagination.settotalcount(m);
return valuelist;
}
} catch (exception e) {
e.printstacktrace();
throw new sqlexception(e.getmessage());
}
finally{
rs.close();
ps.close();
conn.close();
}
}
/*利用类反射机制自动给数据对象填充值:用于查询一条数据情况如:修改前提取数据*/
public object getdatavobyreflect(stringbuffer sqlbuffer, class voclass) throws sqlexception {
try {
conn=getconnection();
ps=conn.preparestatement(sqlbuffer.tostring());
system.out.println(==getdatavobyreflect==sql:+sqlbuffer.tostring());
rs = ps.executequery();
resultsetmetadata rsmd = rs.getmetadata();
int columncount = rsmd.getcolumncount();
object vo = null;
hashmap hmlist = new hashmap();
while (rs.next()) {
vo = voclass.newinstance();
/*利用第三方包所做的类反射完成数据填充*/
for (int j = 1; j hmlist.put(rsmd.getcolumnname(j).tolowercase(), rs.getstring(j)); /*列的名称和列的值*/
}
if (voclass != null) {
vo = voclass.newinstance();
beanutils.populate(vo, hmlist); /*调用第三方包对数据对象进行填充*/
}
}
return vo;
} catch (exception e) {
e.printstacktrace();
throw new sqlexception(e.getmessage());
}finally{
rs.close();
ps.close();
conn.close();
}
}
/*获取总的记录数*/
private int getrecordcount(string strsql) throws sqlexception {
int a = 0;
try {
conn=getconnection();
ps=conn.preparestatement(strsql);
rs = ps.executequery();
rs.next();
a = rs.getint(1);
return a;
} catch (exception ex) {
ex.printstacktrace();
log.info(getrecordcount() + ex.getmessage());
throw new sqlexception(get getrecordcount: falure);
}finally{
rs.close();
ps.close();
conn.close();
}
}
}