有关DataSourse实现

来源:互联网 发布:知到电脑客户端下载 编辑:程序博客网 时间:2024/06/05 14:46

   javax.sql 包下的接口Interface DataSourse,它是一个数据源,相当于一个工厂,有了DataSourse这个数据源之后,你在程序中就可以连接真正的物理数据库了,每个数据库产商也都提供有相应的DataSourse,每个框架也都提供了相应的DataSourse...

下面介绍几种产商和框架提供获取DataSourse,连接数据库的例子:
1:Spring 的DriverManagerDataSourse
2:jakarta的BsicalDataSourse ,BsicalDataSourseFactory
3:ibatis也有数据源 SimpleDataSourse
4:hibernate 的 DriverManagerConnectionProvider

示例:下面都以连接MySql数据库为例,我的数据库名字是itcast,表名是student.


1:用jakarta的 BsicalDataSourse 创建一个DataSourse连接池,连接数据库
package cn.itcast;
import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
import org.apache.commons.dbcp.BasicDataSource;

public class BasicDataSourseDemo {
 public static void main(String[] args) {
  //获取一个BasicDataSource对象,并设置连接数据库的属性
  BasicDataSource bds = new BasicDataSource();
  bds.setDriverClassName("com.mysql.jdbc.Driver");
  bds.setUrl("jdbc:mysql:///itcast");
  bds.setUsername("root");
  bds.setPassword("");

  Connection cn = null;
  PreparedStatement pstmt = null;
  ResultSet rs = null;
  try {
   //建立连接
   cn = bds.getConnection();
   // 显示表student内容
   pstmt = cn.prepareStatement("select * from student");
   rs = pstmt.executeQuery();
   while (rs.next()) {
    System.out.println(rs.getString("name") + "/t"
      + rs.getString("salary"));
   }

  } catch (Exception e) {
   e.printStackTrace();
  } finally {
   if (rs != null) {
    try {
     rs.close();
     rs = null;

    } catch (SQLException e) {
     e.printStackTrace();
    }
   }
   if (pstmt != null) {
    try {
     pstmt.close();
     pstmt = null;
    } catch (SQLException e) {
     e.printStackTrace();
    }
   }
   if (cn != null) {
    try {
     cn.close();
     cn = null;
    } catch (SQLException e) {
     e.printStackTrace();
    }
   }
  }

 }
}

//运行上面程序之前你要导入相关jar包如:commons-dbcp-1.2.1.jar,commons-pool-1.3.jar,mysql-connector-java-5.0.3-bin.jar然后建立好mysql数据库,就可以运行了,其实上面那些连接数据库的信息完全可以用Spring 来完成,可以写一个配置文件,这里就不介绍了。

2:用apache的.BasicDataSourceFactory 创建一个数据源连接数据库
package cn.itcast;

import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.util.Properties;
import javax.sql.DataSource;
import org.apache.commons.dbcp.BasicDataSourceFactory;

public class BasicDataSourseFactoryDemo {
 //获取数据库连接信息,返回一个Properties对象
 public Properties getProperties() {
  Properties properties = new Properties();
  properties.put("driverClassName", "com.mysql.jdbc.Driver");
  properties.put("url", "jdbc:mysql:///itcast");
  properties.put("username", "root");
  properties.put("password", "");
  return properties;
 }
 //数据库操作,用BasicDataSourceFactory来建立一个dataSourse
 public void dbOperater() {
  DataSource dataSourse = null;
  Connection cn = null;
  PreparedStatement pstmt = null;
  ResultSet rs = null;
  try {
   dataSourse = BasicDataSourceFactory.createDataSource(getProperties());//调用getProperties()获得一个Properties对象
   cn = dataSourse.getConnection();
   //显示表student内容
   pstmt = cn.prepareStatement("select * from student");
   rs = pstmt.executeQuery();
   while (rs.next()) {
    System.out.println(rs.getString("name") + "/t"
      + rs.getString("salary"));
   }

  } catch (Exception e) {
   e.printStackTrace();
  } finally {
   if (rs != null) {
    try {
     rs.close();
     rs = null;

    } catch (SQLException e) {
     e.printStackTrace();
    }
   }
   if (pstmt != null) {
    try {
     pstmt.close();
     pstmt = null;
    } catch (SQLException e) {
     e.printStackTrace();
    }
   }
   if (cn != null) {
    try {
     cn.close();
     cn = null;
    } catch (SQLException e) {
     e.printStackTrace();
    }
   }
  }
 }
 //
 public static void main(String[] args) {
  BasicDataSourseFactoryDemo basicDataSourseFactoryDemo = new BasicDataSourseFactoryDemo();
  basicDataSourseFactoryDemo.dbOperater();//调用dbOperater()方法,对数据库操作
 }
}

3:ibatis也有数据源 SimpleDataSourse
运行下面这个程序之前先加入相应的jar包mysql-connector-java-5.0.3-bin.jar,ibatis-common-2.jar
commons-dbcp-1.2.1.jar,commons-pool-1.3.jar
package cn.itcast;

import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.util.Properties;

import com.ibatis.common.jdbc.SimpleDataSource;

public class SimpleDataSourceDemo {

 public static void main(String[] args) {
  Properties props = new Properties();
  props.put("JDBC.Driver", "com.mysql.jdbc.Driver");
  props.put("JDBC.ConnectionURL", "jdbc:mysql://localhost/itcast");
  props.put("JDBC.Username", "root");
  props.put("JDBC.Password", "");

  Connection conn = null;
  PreparedStatement pstmt = null;
  ResultSet rs = null;
  SimpleDataSource simpleDS = null;

  try {
   // SimpleDataSource创建一个数据源
   simpleDS = new SimpleDataSource(props);
   conn = simpleDS.getConnection();
   conn.setAutoCommit(false);
   pstmt = conn.prepareStatement("select * from student");

   rs = pstmt.executeQuery();
   while (rs.next()) {
    System.out.println(rs.getString("name") + "/t"
      + rs.getString("salary"));
   }

  } catch (Exception e) {
   e.printStackTrace();
  } finally {
   if (rs != null) {
    try {
     rs.close();
    } catch (SQLException e) {
     e.printStackTrace();
    }
    rs = null;
   }
   if (rs != null) {
    try {
     pstmt.close();
    } catch (SQLException e) {
     e.printStackTrace();
    }
   }
   if (conn != null) {
    try {
     conn.close();
    } catch (SQLException e) {
     e.printStackTrace();
    }
   }
  }
 }

}


//同样运行上面程序之前你要导入相关jar包如:commons-dbcp-1.2.1.jar,commons-pool-1.3.jar,mysql-connector-java-5.0.3-bin.jar然后建立好mysql数据库,就可以运行了。

4:用hibernate 的 DriverManagerConnectionProvider
package cn.itcast;

import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.util.Properties;

import org.hibernate.cfg.Environment;
import org.hibernate.connection.DriverManagerConnectionProvider;

public class DriverManagerConnectionProviderDemo {

 public static void main(String[] args) throws Exception {

  DriverManagerConnectionProvider dmcp = new DriverManagerConnectionProvider();
  Properties props = new Properties();
  // 下面这两种形式都可以
  props.setProperty(Environment.DRIVER, "com.mysql.jdbc.Driver");
  props.setProperty(Environment.URL, "jdbc:mysql:///itcast");
  props.setProperty("hibernate.connection.username", "root");
  props.setProperty("hibernate.connection.password", "");
  // 调用configure()方法获取一个Properties对象,Initialize the connection provider
  // from given properties.
  dmcp.configure(props);
  Connection cn = null;
  PreparedStatement pstmt = null;
  ResultSet rs = null;
  try {
   // 显示表student内容
   cn = dmcp.getConnection();
   pstmt = cn.prepareStatement("select * from student");
   rs = pstmt.executeQuery();
   while (rs.next()) {
    System.out.println(rs.getString("name") + "/t"
      + rs.getString("salary"));
   }

  } catch (Exception e) {
   e.printStackTrace();
  } finally {
   if (rs != null) {
    try {
     rs.close();
     rs = null;

    } catch (SQLException e) {
     e.printStackTrace();
    }
   }
   if (pstmt != null) {
    try {
     pstmt.close();
     pstmt = null;
    } catch (SQLException e) {
     e.printStackTrace();
    }
   }
   if (cn != null) {
    try {
     cn.close();
     cn = null;
    } catch (SQLException e) {
     e.printStackTrace();
    }
   }
  }

 }

}

 

以上例子都可以顺利跑通,读者在实验时如果遇到问题,可以给我留言...


 

原创粉丝点击