我在applicationContext.xml中配置了数据源,如下:
<bean id="dataSource" class="org.apache.commons.dbcp.BasicDataSource">
<property name="driverClassName">
<value>oracle.jdbc.driver.OracleDriver</value>
</property>
<property name="url">
<value>jdbc:oracle:thin:@localhost:1521:orcl</value>
</property>
<property name="username">
<value>sys</value>
</property>
<property name="password">
<value>sys</value>
</property>
</bean>
在Action中,我希望通过sql来查询,于是用了个笨拙的办法,先取得配置的数据源,然后用sql语句操作
String filepath = request.getSession().getServletContext().getRealPath("/WEB-INF/applicationContext.xml");
if(filepath.contains("//")){//如果包含反斜杠,则替换为正斜杠,这样在linux下或windows下都能用
filepath=filepath.replace("//", "/");
}
String sql = "select * from(
select complaincall,count(*) counts
from t_complain
group by complaincall
having complaincall is not null
order by counts desc
)
where rownum<=10 ";
ApplicationContext ac = new FileSystemXmlApplicationContext(filepath);
BasicDataSource bds = (BasicDataSource)ac.getBean("dataSource");
Connection coon = bds.getConnection();
Statement stat = coon.createStatement();
ResultSet rs = stat.executeQuery(sql);
try {
while (rs.next()) {
System.out.print ("+++++++++++++++"+rs.getString(1));
System.out.println("+++++++++++++++"+rs.getInt(2));
}
} catch (SQLException e) {
e.printStackTrace();
}
try{
rs.close();
stat.close();
coon.close();
}catch(Exception e){
e.printStackTrace();
}