首页 / JAVA / java操作数据库的3中基本方式
java操作数据库的3中基本方式
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了java操作数据库的3中基本方式,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含5786字,纯文字阅读大概需要9分钟。
内容图文
![java操作数据库的3中基本方式](/upload/InfoBanner/zyjiaocheng/498/a823dccf92a8417b82f38a1a338ccff0.jpg)
package utils;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.IOException;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.util.Properties;
import com.mysql.jdbc.Statement;
public class JdbcUtils {
private static final String DRIVERCLASS;
private static final String URL;
private static final String USERNAME;
private static final String PASSWORD;
static{
Properties p = new Properties();
try {
p.load(new FileInputStream("src/jdbc.properties"));
} catch (FileNotFoundException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}
DRIVERCLASS = p.getProperty("driverClass");
URL = p.getProperty("url");
USERNAME = p.getProperty("username");
PASSWORD = p.getProperty("password");
}
/**
- 加载驱动
*/
public static void loadDriver(){
try {
// 加载驱动
Class.forName(DRIVERCLASS);
} catch (ClassNotFoundException e) {
e.printStackTrace();
}
}
/** - 获取连接,返回连接
- @return
*/
public static Connection getConnection(){
// 调用一次加载驱动的方法
loadDriver();
Connection conn = null;
try {
// 获取连接
conn = DriverManager.getConnection(URL, USERNAME, PASSWORD);
} catch (SQLException e) {
e.printStackTrace();
}
return conn;
}
/** - 释放资源
- @param stmt
-
@param conn
*/
public static void release(Statement stmt,Connection conn){
if(stmt != null){
try {
stmt.close();
} catch (SQLException e) {
e.printStackTrace();
}
}
if(conn != null){
try {
conn.close();
} catch (SQLException e) {
e.printStackTrace();
}
}
}/**
- 释放资源
- @param stmt
- @param conn
*/
public static void release(ResultSet rs,Statement stmt,Connection conn){
if(rs != null){
try {
rs.close();
} catch (SQLException e) {
e.printStackTrace();
}
}
if(stmt != null){
try {
stmt.close();
} catch (SQLException e) {
e.printStackTrace();
}
}
if(conn != null){
try {
conn.close();
} catch (SQLException e) {
e.printStackTrace();
}
}
}
}
//链接池和jdbc联合提取出来的工具类
package utils;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.IOException;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.util.Properties;
import javax.sql.DataSource;
import org.apache.commons.dbcp.BasicDataSourceFactory;
import com.mchange.v2.c3p0.ComboPooledDataSource;
import com.mysql.jdbc.Statement;
public class JdbcUtils {
/**
* 获取连接,返回连接 是apache的
* @return
*/
public static Connection getDbcpConnection(){
Connection connection = null;
try {
Properties pro = new Properties();
pro.load(new FileInputStream("src\\dbcpconfig.properties"));
DataSource ds = BasicDataSourceFactory.createDataSource(pro);
connection = ds.getConnection();//被增强后的connetion
} catch (Exception e) {
e.printStackTrace();
}
return connection;
}
/**
* 获取连接,返回连接 不是apache的
* 配置文件名称是固定的c3p0-config.xml 并且 放在src目录下
* ComboPooledDataSource会自动去src目录查找c3p0-config.xml的配置文件
* @return
*/
public static Connection getC3P0Connection(){
Connection connection = null;
try {
DataSource ds =new ComboPooledDataSource();//这个地方的参数是与配置文件匹配,如果不写,则为默认
connection = ds.getConnection();//被增强后的connetion
} catch (Exception e) {
e.printStackTrace();
}
return connection;
}
/**
* 释放资源
* @param stmt
* @param conn被增强后的
*/
public static void release(Statement stmt,Connection conn){
if(stmt != null){
try {
stmt.close();
} catch (SQLException e) {
e.printStackTrace();
}
}
if(conn != null){
try {
// 已经变成了归还了...
conn.close();
} catch (SQLException e) {
e.printStackTrace();
}
}
}
/**
* 释放资源
* @param stmt
* @param conn被增强后的
*/
public static void release(ResultSet rs,Statement stmt,Connection conn){
if(rs != null){
try {
rs.close();
} catch (SQLException e) {
e.printStackTrace();
}
}
if(stmt != null){
try {
stmt.close();
} catch (SQLException e) {
e.printStackTrace();
}
}
if(conn != null){
try {
// 把close()给修改了,原来是销毁连接,现在让方法变成归还连接。
conn.close();
} catch (SQLException e) {
e.printStackTrace();
}
}
}
}
//DButis的使用 导入包
import java.sql.ResultSet;
import java.sql.SQLException;
import java.util.Date;
import javax.sql.DataSource;
import org.apache.commons.dbutils.QueryRunner;
import org.apache.commons.dbutils.ResultSetHandler;
import org.junit.Test;
import com.mchange.v2.c3p0.ComboPooledDataSource;
/**
- 因为:没有使用DButis之前
- (1)数据库链接对象、sql语句操作对象,封装结果集对象,这三大对象会重复定义
(2)封装数据的代码重复,而且操作复杂,代码量大
(3)释放资源的代码重复
结果:(1)程序员在开发的时候,有大量的重复劳动。(2)开发的周期长,效率低
所以apache开发了一套封装jdbc的工具类DButis提供给程序员使用 - @author WangShuang
-
*/
public class test {
DataSource ds = new ComboPooledDataSource();@Test<br/" rel="nofollow">br/>@Test<br/public void runInsert(){
/**-
- 先创建QueryRunner类
-
- 调用update()方法,可以完成增删改的操作
/
QueryRunner qr = new QueryRunner(ds);
try {
// 添加
qr.update("insert into product values (null,?,?,?)", "鸭梨",3.5,new Date());
} catch (SQLException e) {e.printStackTrace();
}
}
@Test<br/" rel="nofollow">br/>e.printStackTrace();
}
}
@Test<br/public void findById(){
QueryRunner qr = new QueryRunner();
try {
qr.query("select from product where pid = ?",new MyResultSetHandler() , 1);
} catch (SQLException e) {
e.printStackTrace();
}
}
}
/**
- 调用update()方法,可以完成增删改的操作
-
- 类似BeanHandler
- @author WangShuang
-
*/
class MyResultSetHandler implements ResultSetHandler<Product>{@Override<br/" rel="nofollow">br/>@Override<br/public Product handle(ResultSet arg0) throws SQLException {
Product p = new Product();
p.setPid(arg0.getInt(1));
p.setPname(arg0.getString(2));
p.setPrice(arg0.getDouble(3));
p.setPdate(arg0.getDate(4));
return p;
}
}
java操作数据库的3中基本方式
标签:并且 net 封装 values factory dbutil 自动 pre override
本文系统来源:http://blog.51cto.com/13579086/2065151
内容总结
以上是互联网集市为您收集整理的java操作数据库的3中基本方式全部内容,希望文章能够帮你解决java操作数据库的3中基本方式所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。