数据源(DataSource)学习笔记

 
使用BasicDataResource来连接数据库,平时我们都是直接使用Driver,这里我们自己通过编写程序获得一个数据源,并从数据源连接到数据库获得数据。通过数据源的学习对于数据库连接的底层的东西可以有个新的认识。
准备工作:
1.       Eclipse
2.MySql 和 Mysql 连接驱动(mysql-connection-java-5.0.3-bin.jar)
3.下载commons-pool-1.3.jar包 和commons-dbcp-1.2.1.jar包
 
工作流程:
一.数据库MySql
1.       打开MySql 服务器,在MySql服务器里建立一个名叫itcast库。
2.       在库里创建一个名叫student的表,在表里设置一个name和password.。
3.       在表中增加name=huangzongda,password=itcast
二.Eclipse
1.打开Eclipse工具,建立一个itcast包,包下面建立一个测试名叫DbDemo类。
2.导入mysql-connection-java-5.0.3-bin.jar和commons-pool-1.3.jar, commons-dbcp-1.2.1.jar三个包
3.代码比较简单,可是涉及到的面比较广,细心是必须的。 
//包名
package itcast;         
 
import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import org.apache.commons.dbcp.BasicDataSource;
 
public class DCDemo {
 
       /**
        * @param args
        * @throws SQLException
        */
       static Connection cn = null;
       static PreparedStatement stmt = null;
       static ResultSet rs = null;
       public static void main(String[] args) {
              // TODO Auto-generated method stub
              //BasicDataSource数据源对象,用来设置Driver,url,user,password
              BasicDataSource ds = new BasicDataSource();
              ds.setDriverClassName("com.mysql.jdbc.Driver");
        //localhost代表使用本地数据库,如果使用其他计算机上的库可以加上IP和端口号:162.105.*+端口号
         ds.setUrl("jdbc:mysql://localhost/itcast");
              ds.setUsername("root");
              ds.setPassword("");
          try
          {             
        获得连接
              cn = ds.getConnection();
        //查询表
        stmt = cn.prepareStatement("select * from student");
        rs = stmt.executeQuery();
        while(rs.next())
        {
           
               System.out.println(rs.getString("name")+":"+rs.getString(2));
        }
          }
          catch(Exception e)
          {
                 e.printStackTrace();//在实际上应该使用log打印,由于是课堂时间有限没有花太多时间配置log             
          }
          finally
          {
           //关闭不使用的资源,关闭的顺序是倒着来的rs,stmt,cn,关闭之后应该设置为null这样释放就更放心了。
                 if(rs != null)                                
                        try
                 {
                               rs.close();
                   rs=null;
                 }
                 catch(Exception e){e.printStackTrace();}
                
                 if(stmt != null)
                        try
                 {
                               stmt.close();
                   stmt=null;
                 }
                 catch(Exception e){e.printStackTrace();}
                
                 if(cn != null)
                        try
                 {
                               cn.close();
                   cn=null;
                 }
                 catch(Exception e){e.printStackTrace();}
          }
 
       }
 
}
 
打印结果:
Huangzongda:itcast
 
 
下面在上面的程序基础上,用Spring实现同样的例子:
准备工作:
1.       Eclipse
2.       Spring
3.MySql 和 Mysql 连接驱动(mysql-connection-java-5.0.3-bin.jar)
4.下载commons-pool-1.3.jar包 和commons-dbcp-1.2.1.jar包
5.在上面的基础上还需要log4j-1.2.9.jar包,Spring 1.2 Core Libraries包和commons-pool-1.3.jar包
6包确实多,开始程序老是冒错,都有点犯晕,结果出来后会感到苦尽甘来的
步骤:
1.       编写DCDemo类
2.       编写ApplicationContext.xml文件
3.       Mysql服务器启动,这里将使用上面已经建好叫ITCAST的库。
 
//DCDemo类
package itcast;
 
import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
 
import javax.sql.DataSource;
//导入包,这里就不多说了,因为都是Eclipse可以帮你引入,按快捷键Ctrl+Shift+o,不是数字”0”。
import org.springframework.context.ApplicationContext;
import org.springframework.context.support.ClassPathXmlApplicationContext;
 
public class DCDemo {
 
       /**
        * @param args
        * @throws SQLException
        */
       public Connection cn = null;
       public PreparedStatement stmt = null;
       public ResultSet rs = null;
       public DataSource ds = null;
      
       public static void main(String[] args) {
              // TODO Auto-generated method stub
             
              /*BasicDataSource ds = new BasicDataSource();
              ds.setDriverClassName("com.mysql.jdbc.Driver");
              ds.setUrl("jdbc:mysql://localhost/itcast");
              ds.setUsername("root");
              ds.setPassword("");*/         
        //ApplicationContext获得xml资源路径
              ApplicationContext context = new ClassPathXmlApplicationContext("applicationContext.xml");
 //通过bean的id(mybean)获得ApplicationContext.xml里面的属性
              DCDemo demo = (DCDemo)context.getBean("mybean");
              demo.getAll();
             
       }
       public void setDataSource(DataSource ds)
       {
              this.ds = ds;
       }
      
       public void getAll()
       {
          try
          {
        // 获得数据库连接
              cn = ds.getConnection();                   
         //从数据库里查询信息
        stmt = cn.prepareStatement("select * from student");
        rs = stmt.executeQuery();
        while(rs.next())
        {         
            //打印信息
               System.out.println(rs.getString("name")+":"+rs.getString(2));
        }
          }
          catch(Exception e)
          {
                 e.printStackTrace();
          }
          finally
          {                    
           //释放资源
                if(rs != null)
                        try
                 {
                               rs.close();
                   rs=null;
                 }
                 catch(Exception e){e.printStackTrace();}
                
                 if(stmt != null)
                        try
                 {
                               stmt.close();                 
                   stmt=null;
                 }
                 catch(Exception e){e.printStackTrace();}
                
                 if(cn != null)
                        try
                 {
                               cn.close();
                   cn=null;
                 }
                 catch(Exception e){e.printStackTrace();}
          }
 
       }
 
}
 
ApplicationContext.xml文件:            
 
<? xml version = "1.0" encoding = "UTF-8" ?>
<! DOCTYPE beans PUBLIC "-//SPRING//DTD BEAN//EN" "http://www.springframework.org/dtd/spring-beans.dtd" >
 
< beans >
 //id 将会被 JAVA 代码
  < bean id = "mybean" class = "itcast.DCDemo" >
    < property name = "dataSource" >
        < ref bean = "dst" />
    </ property >
  </ bean >
  // 使用 BasicDataSource 里面提供了获得 Driver,url,username 的属性。下面属性的名字 driverClassName,url 都必须是 BasicDataSource 提供的方法保持一致
  < bean id = "dst" class = "org.apache.commons.dbcp.BasicDataSource" >
      // 获得数据库的驱动 Driver, 通过名 driverClassName 取得资源 com.mysql.jdbc.Driver
      < property name = "driverClassName" >
        < value > com.mysql.jdbc.Driver </ value >
      </ property >
      // 获得连接数据的路径 url, 值是 jdbc:mysql://localhost/itcast
      < property name = "url" >
        < value > jdbc:mysql://localhost/itcast </ value >
      </ property >
      // 获得数据库连接的用户名 root 
      < property name = "username" >
        < value > root </ value >
      </ property >
      // 由于 Mysql 数据库没设置密码,下面将没有它的配置     
  </ bean >
下面还是一个 XML 获得数据源的程序 :
除了上面的方式外也可以使用IBATIS来获得自己的数据源。在这里没有改变JAVA代码,也就是说只是修改了XML中的代码,得到的结果还是一样的。这里的还是使用上面所写的DCDemo.java
<? xml version = "1.0" encoding = "UTF-8" ?>
<! DOCTYPE beans PUBLIC "-//SPRING//DTD BEAN//EN" "http://www.springframework.org/dtd/spring-beans.dtd" >
 
< beans >
  < bean id = "mybean" class = "itcast.DCDemo" >
    < property name = "dataSource" >
        < ref bean = "dst" />
    </ property >
  </ bean >
    < bean id = "dst" class = "com.ibatis.common.jdbc.SimpleDataSource" >
     < constructor-arg >
       < props >
         < prop key = "JDBC.Driver" > com.mysql.jdbc.Driver1 </ prop >
         < prop key = "JDBC.ConnectionURL" > jdbc:mysql://localhost/itcast </ prop >
         < prop key = "JDBC.Username" > root </ prop >
         < prop key = "JDBC.Password" ></ prop >
       </ props >
     </ constructor-arg >
  </ bean >
 
              运行结果:
Huangzongda:huang
 

你可能感兴趣的:(数据源(DataSource)学习笔记)