java访问数据库的方式有很多种,这里我只说两种,一种是普通的访问方式,一种是用context的方式。下面分别就是这两种的代码片段:
普通的访问方式:
public class AccessDatabase {
private static Connection getConnection()throws SQLException, ClassNotFoundException{
Class.forName("com.mysql.jdbc.Driver");
Connection conn=null;
conn=DriverManager.getConnection("jdbc:mysql://localhost:3306/mysql","root","root");
return conn;
}
public static boolean queryUser(String name){
boolean returnValue=false;
String sql="select * from user where userName='"+name+"'";
Connection conn=null;
Statement st=null;
ResultSet rs=null;
try{
conn=getConnection();
st=conn.createStatement();
System.out.println("SQL:"+sql);
rs=st.executeQuery(sql);
while(rs.next()){
returnValue=true;
}
if(rs!=null){
rs.close();
}
if(st!=null){
st.close();
}
if(conn!=null){
conn.close();
}
}
catch(Exception e)
{
e.printStackTrace();
}
System.out.println("返回值:"+returnValue);
return returnValue;
}
public static void main(String[] args) {
System.out.println("DataBase Operation Demo");
boolean b=queryUser("xiaoming");
System.out.println("is have:"+b);
}
}
context的访问方式:
package com.lina.tools; import java.sql.Connection; import java.sql.PreparedStatement; import java.sql.ResultSet; import java.sql.SQLException; import java.sql.Statement; import javax.naming.Context; import javax.naming.InitialContext; import javax.naming.NamingException; import javax.sql.DataSource; import org.apache.commons.dbutils.QueryRunner; import org.apache.commons.dbutils.ResultSetHandler; import org.apache.commons.dbutils.handlers.BeanListHandler; /** * 数据源的连接 * * @author admin * */ public class dbaccess { private Context ct = null; private Connection conn = null; private DataSource ds = null; private Statement state = null; private ResultSet result = null; public Connection getCon() { try { ct = new InitialContext(); ds = (DataSource) ct.lookup("java:comp/env/mysource"); conn = ds.getConnection(); } catch (NamingException e) { e.printStackTrace(); } catch (SQLException e) { e.printStackTrace(); } return conn; } /** * 查询 * * @param sql * @param paras * @param rsh * @return Object对象,查询的是实体的对象,就返回实体bean的对象. */ public Object query(String sql, Object paras[], ResultSetHandler rsh) { this.getCon(); // 获取连接 QueryRunner qr = new QueryRunner(ds); Object result = null; try { // 自动让参数与sql语句 中的?号匹配,再查询结果 result = qr.query(sql, paras, rsh); } catch (Exception e) { e.printStackTrace(); } return result; } /** * 增删改的方法 * * @param sql * @param paras * @return 整型的,更改的条数 */ public int update(String sql, Object paras[]) { this.getCon(); QueryRunner qr = new QueryRunner(ds); int result = -1; try { result = qr.update(sql, paras); } catch (SQLException e) { e.printStackTrace(); } return result; } /** * 查询的一般方法 * @param sql * @param param * @return */ public ResultSet query(String sql, Object param[]) { conn = this.getCon(); try { PreparedStatement prp = conn.prepareStatement(sql); for (int i=0; i<param.length; i++) { prp.setObject(i+1, param[i]); } result = prp.executeQuery(); } catch (SQLException e) { e.printStackTrace(); } return result; } } META-INF下的context.xml <Context> <Resource name="mysource" type="javax.sql.DataSource" auth="Container" driverClassName="oracle.jdbc.driver.OracleDriver" url="jdbc:oracle:thin:@127.0.0.1:1521:orcl" username="system" password="triger" maxActive="200" maxIdle="20" maxWait="6000" /> </Context>