Let's start with a JDBC client.
package com.amq.test; import java.sql.*; public class SimpleJDBCTest { private Connection conn; public SimpleJDBCTest(){ } public void connect(){ try{ Class.forName("com.sybase.jdbc3.jdbc.SybDriver").newInstance(); String url = "jdbc:sybase:Tds:MYLOCALPC:5000/mydatabase"; conn = DriverManager.getConnection(url, "user","password"); } catch (Exception ex){ System.out.println("Connect Exception: "+ex.toString()); } } public void doTests(){ try{ System.out.println("......Select test......."); Statement st = conn.createStatement(); ResultSet rs = st.executeQuery("select name from sysobjects"); while (rs.next()) { String s = rs.getString("name"); System.out.println(s); } System.out.println("..........SP with parameters test......"); PreparedStatement pstmt = conn.prepareStatement("exec sp_spaceused ?"); pstmt.setString(1, "sysobjects"); ResultSet rs1 = pstmt.executeQuery(); while (rs1.next()) { String s = rs1.getString(1); s = s + " " + rs1.getString(2); System.out.println(s); } } catch(Exception ex){ System.out.println("doTest Exception: "+ex.toString()); } } public static void main(String[] args){ System.out.println("Starting SimpleJDBCTest"); SimpleJDBCTest simpleJDBCTest = new SimpleJDBCTest(); simpleJDBCTest.connect(); simpleJDBCTest.doTests(); } } |
Now the same client, but using Spring
package com.amq.test; import java.util.List; import org.springframework.context.ApplicationContext; import org.springframework.context.support.FileSystemXmlApplicationContext; import org.springframework.jdbc.core.JdbcTemplate; public class SpringDbTest { private JdbcTemplate jdbcTemplateDBConnector; public JdbcTemplate getJdbcTemplateDBConnector() { return jdbcTemplateDBConnector; } public void setJdbcTemplateDBConnector(JdbcTemplate JdbcTemplateDBConnector) { this.jdbcTemplateDBConnector = JdbcTemplateDBConnector; } public void runQuery(){ if(jdbcTemplateDBConnector == null){ System.out.println("jdbcTemplateDBConnector not initialized"); return; } /* Execute select */ List resultList = jdbcTemplateDBConnector.queryForList("select name from sysobjects"); System.out.println("Result from Select: "+resultList); /* Execute SP with parameters */ Object[] parameters = new Object[] {new String("sysobjects")}; List resultListSPParam = jdbcTemplateDBConnector.queryForList("exec sp_spaceused ?", parameters); System.out.println("Result from SP with PARAMs: "+resultListSPParam); } public static void main(String[] args) { try { System.out.println("trying to get spring context"); ApplicationContext ctx = new FileSystemXmlApplicationContext("config/db_config.xml"); System.out.println("got spring context"); SpringDbTest springDBTest = (SpringDbTest)ctx.getBean("SpringDbTest"); springDBTest.runQuery(); } catch (Exception ex) { ex.printStackTrace(); } } } |
XML that configures Spring Database access client
<beans xmlns="http://www.springframework.org/schema/beans" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:util="http://www.springframework.org/schema/util" xmlns:oxm="http://www.springframework.org/schema/oxm" xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-2.0.xsd http://www.springframework.org/schema/util http://www.springframework.org/schema/util/spring-util-2.0.xsd http://www.springframework.org/schema/oxm http://www.springframework.org/schema/oxm/spring-oxm-1.5.xsd"> <!-- Primary datasource for reading configurations from the DB --> <bean id="dataSource" destroy-method="close" class="org.apache.commons.dbcp.BasicDataSource"> <property name="driverClassName" value="com.sybase.jdbc3.jdbc.SybDriver" /> <property name="url" value="jdbc:sybase:Tds:MYLOCALPC:5000/mydatabase" /> <property name="username" value="user" /> <property name="password" value="password" /> </bean> <!-- JDBCTemplate to load the config from DB on startup --> <bean id="jdbcTemplate" class="org.springframework.jdbc.core.JdbcTemplate"> <property name="dataSource" ref="dataSource"/> </bean> <bean id="SpringDbTest" class="com.amq.test.SpringDbTest"> <property name="jdbcTemplateDBConnector" ref="jdbcTemplate"> </property> </bean> </beans> |