几种常用数据库的连接,以及Dao层的实现。

1、加载JDBC驱动:

 1   加载JDBC驱动,并将其注册到DriverManager中:
2 //MySQL数据库
3 Class.forName("com.mysql.jdbc.Driver").newInstance();
4 //Oracle数据库
5 Class.forName("oracle.jdbc.driver.OracleDriver").newInstance();
6 //Sql Server数据库
7 Class.forName("com.microsoft.jdbc.sqlserver.SQLServerDriver").newInstance();
8 //DB2数据库
9 Class.froName("com.ibm.db2.jdbc.app.DB2Driver").newInstance();
10 //Informix数据库
11 Class.forName("com.informix.jdbc.IfxDriver").newInstance();
12 //Sybase数据库
13 Class.forName("com.sybase.jdbc.SybDriver").newInstance();
14 //PostgreSQL数据库
15 Class.forNaem("org.postgresql.Driver").newInstance();

2、建立数据库连接:

 1  //MySQL数据库//后接字符格式防止中文乱码
2 String url="jdbc:mysql://localhost:3306/test?user=root&password=123456&useUnicode=true&characterEncoding=utf-8";
3 Connection conn=DriverManager.getConnection(url);
4
5 //Oracle数据库
6 String url="jdbc:oracle:thin:@localhost:1521:orcl";
7 String user="scott";
8 String password="tiger";
9 Connection conn=DriverManager.getConnection(url,user,password);
10
11 //Sql Server数据库
12 String url="jdbc:microsoft:sqlserver://localhost:1433;DatabaseName=pubs";
13 String user="admin";
14 String password="123456";
15 Connection conn=DriverManager.getConnection(url,user,password);
16
17 //DB2数据库
18 String url="jdbc:db2://localhost:5000/sample";
19 String user="amdin"
20 String password=-"123456";
21 Connection conn=DriverManager.getConnection(url,user,password);
22
23 //Informix数据库
24 String url="jdbc:informix-sqli://localhost:1533/testDB:INFORMIXSERVER=myserver;user=username;password=123456";
25 Connection conn=DriverManager.getConnection(url);
26
27 //Sybase数据库
28 String url="jdbc:sybase:Tds:localhost:5007/tsdata";
29 Properties sysProps=System.getProperties();
30 SysProps.put("user","userid");
31 SysProps.put("password","password");
32 Connection conn=DriverManager.getConnection(url,SysProps);
33
34 //PostgreSQL数据库
35 String url="jdbc:postgresql://localhost/test";
36 String user="myuser";
37 String password="123456";
38 Connection conn=DriverManager.getConnection(url,user,password);

3、建立Statement对象或PreparedStatement对象:

<!-- PreparedStatement是预编译的,继承自Statement。如果带有不同参数的同一SQL语句被多次执行的时候,PreparedStatement对象比Statement对象更有效。实际上,在多数时候都建议使用PreparedStatement来代替Statement,这是因为每一种数据库都会尽最大努力对预编译语句提供最大的性能优化.因为预编译语句有可能被重复调用。所以语句在被DB的编译器编译后的执行代码被缓存下来,下次调用时只要是相同的预编译语句就不需要编译,只要将参数直接传入编译过的语句执行代码中(相当于一个涵数)就会得到执行。而Statement的语句中,即使是相同一操作,而由于每次操作的数据不同所以使整个语句相匹配的机会极小,几乎不太可能匹配。-->

1   //建立Statement对象
2 String sql="select * from user where userName="+username;   
3 Statement stmt=conn.createStatement(sql);
4 //建立ProparedStatement对象
5 String sql="select * from user where userName=?";
6 PreparedStatement pstmt=Conn.prepareStatement(sql);
7 pstmt.setString(1,"admin");

4、执行sql语句:

1   //执行SQL查询
2 String sql1="select * from users";
3 ResultSet rs=stmt.executeQuery(sql);
5
6 //执行insert update delete等语句
7 String sql2="delete from users where id=?";
8 pstmt.setString(1, id);
9 pstmt.executeUpdate(sql);

5、执行完毕后,依将关闭ResultSet、Statement、PreparedStatement、Connection对象,释放所占用的资源:

1   rs.close();
// 2 stmt.close();
3 pstmt.close();
4 con.close();

以上就是整个数据库连接的完整步骤。下面是我做的数据库工厂例子,返回一个数据库连接对象

(当然,你首先得导入对应数据库的连接包,此处以MySql数据库为例)

 1 package com.db;
2
3 import java.io.InputStream;
4 import java.sql.Connection;
5 import java.sql.PreparedStatement;
6 import java.sql.ResultSet;
7 import java.sql.SQLException;
8 import java.util.Properties;
9
10 import javax.sql.DataSource;
11
12 import org.apache.commons.dbcp.BasicDataSourceFactory;
13
14 public class DbcpDb {
15 private static DataSource ds=null;
16
17 static
18 {
19
20 try {
21 InputStream in=DbcpDb.class.getClassLoader().
22 getResourceAsStream("dbcpconfig.properties");//加载配置
23 Properties prop=new Properties();
24 prop.load(in);
25 BasicDataSourceFactory factory=new BasicDataSourceFactory();//工厂模式
26 ds=factory.createDataSource(prop);//将配置传递给Datasource工厂
27 }catch (Exception e) {
28 // TODO Auto-generated catch block
29 e.printStackTrace();
30 throw new RuntimeException(e.getMessage());
31 }
32
33 }
34
35 public static Connection getConnection() throws SQLException {
36 return ds.getConnection();
37
38 }
39
40 public static void close(Connection con,PreparedStatement pstmt,ResultSet rs) {
41 try {
42 if(rs!=null)
43 rs.close();
44 } catch (SQLException e) {
45 // TODO Auto-generated catch block
46 e.printStackTrace();
47 }
48 try {
49 if(pstmt!=null)
50 pstmt.close();
51 } catch (SQLException e) {
52 // TODO Auto-generated catch block
53 e.printStackTrace();
54 }
55 try {
56 if(con!=null)
57 con.close();
58 } catch (SQLException e) {
59 // TODO Auto-generated catch block
60 e.printStackTrace();
61 }
62 }
63
64 }

使用配置文件是一种良好的编程习惯,避免了数据库配置与代码的硬耦合,以下是数据库配置文件("dbcpconfig.properties"):

 1 #连接设置
2 driverClassName=com.mysql.jdbc.Driver
3 url=jdbc\:mysql\://localhost\:3306/test
4 username=root
5 password=123456
6
7 #<!-- 初始化连接 -->
8 initialSize=10
9 #<!-- 最大连接数量 -->
10 maxActive=50
11 #<!-- 最大空闲连接 -->
12 maxIdle=20
13 #<!-- 最小空闲连接 -->
14 minIdle=5
15 #<!-- 超时等待时间以毫秒为单位 6000毫秒/1000等于60秒 -->
16 maxWait=60000
17
18 #JDBC驱动建立连接时附带的连接属性属性的格式必须为这样:[属性名=property;]
19 #注意:"user" 与 "password" 两个属性会被明确地传递,因此这里不需要包含他们。
20 connectionProperties=useUnicode=true;characterEncoding=utf8
21
22 #指定由连接池所创建的连接的自动提交(auto-commit)状态。
23 defaultAutoCommit=true
24
25 #driver default 指定由连接池所创建的连接的只读(read-only)状态。
26 #如果没有设置该值,则“setReadOnly”方法将不被调用。(某些驱动并不支持只读模式,如:Informix)
27 defaultReadOnly=
28
29 #driver default 指定由连接池所创建的连接的事务级别(TransactionIsolation)。
30 #可用值为下列之一:(详情可见javadoc。)NONE,READ_UNCOMMITTED, READ_COMMITTED, REPEATABLE_READ, SERIALIZABLE
31 defaultTransactionIsolation=READ_COMMITTED

dao层事例

 1 package com.dao;
2
3 import java.io.Serializable;
4 import java.util.List;
5
6 public interface BaseDao<T>{
7
8 public boolean save(T entity);
9
10 public boolean update(T entity);
11
12 public boolean delete(T entity);
13
14 public T findById(Serializable id);
15
16 public List<T> findByHql(String hql,Object...params);
17
18 public List<T> findByPage(String hql,int pageNo,int pageSize,Object...params);
19
20 public int getCount(String hql,Object...params);
21
22 }

dao的实现层

省。

Java连接各类数据库的更多相关文章

  1. java连接mysql数据库详细步骤解析

    java连接mysql数据库详细步骤解析      第一步:下载一个JDBC驱动包,例如我用的是:mysql-connector-java-5.1.17-bin.jar      第二步:导入下载的J ...

  2. Java连接SqlServer2008数据库(转)

    Java连接SqlServer2008数据库 首先下载JDBC:下载地址:http://www.microsoft.com/zh-cn/download/details.aspx?id=21599 下 ...

  3. Java连接MySQL数据库及简单操作代码

    1.Java连接MySQL数据库 Java连接MySql需要下载JDBC驱动MySQL-connector-java-5.0.5.zip(举例,现有新版本).然后将其解压缩到任一目录.我是解压到D盘, ...

  4. 转载:Java连接MySQL 数据库的正确操作流程

    转载网址:http://www.bitscn.com/pdb/mysql/201005/186551.html       以下的文章主要介绍的是Java连接MySQL 数据库(以MySQL数据库为例 ...

  5. Java连接MySQL数据库增删改查通用方法

    版权声明:本文为博主原创文章,未经博主允许不得转载. Java连接MySQL数据库增删改查通用方法 运行环境:eclipse+MySQL 以前我们Java连接MySQL数据库都是一个数据库写一个类,类 ...

  6. Java进阶(二十五)Java连接mysql数据库(底层实现)

    Java进阶(二十五)Java连接mysql数据库(底层实现) 前言 很长时间没有系统的使用java做项目了.现在需要使用java完成一个实验,其中涉及到java连接数据库.让自己来写,记忆中已无从搜 ...

  7. Java 连接 MySQL 数据库

    最近想学习一下 Java 连接 MySQL 数据库,于是有了这样的一些问题&解决办法. 首先是解决 JDBC(Java Data Base Connectivity)驱动问题,因为默认安装的J ...

  8. Java连接SqlServer2008数据库

    Java连接SqlServer2008数据库 首先下载JDBC:下载地址:http://www.microsoft.com/zh-cn/download/details.aspx?id=21599 下 ...

  9. java连接MySql数据库 zeroDateTimeBehavior

    JAVA连接MySQL数据库,在操作值为0的timestamp类型时不能正确的处理,而是默认抛出一个异常, 就是所见的:java.sql.SQLException: Cannot convert va ...

随机推荐

  1. JS 点击复制Copy插件--Zero Clipboard

    写博客就是一周工作中遇到哪些问题,一个优点就是能够进行一个总结,另外一个优点就是下次遇到相同的问题即使那你记不住,也能够翻看你的博客攻克了.相同也能够帮到别人遇到与你一样问题的人.或者别人有比你更好的 ...

  2. Swift 全功能的绘图板开发

    要做一个全功能的绘图板,至少要支持以下这些功能: 支持铅笔绘图(画点) 支持画直线 支持一些简单的图形(矩形.圆形等) 做一个真正的橡皮擦 能设置画笔的粗细 能设置画笔的颜色 能设置背景色或者背景图 ...

  3. Android进程间通信(IPC)机制Binder简要介绍和学习计划

    文章转载至CSDN社区罗升阳的安卓之旅,原文地址:http://blog.csdn.net/luoshengyang/article/details/6618363 在Android系统中,每一个应用 ...

  4. Javascript进阶篇——浏览器对象—Location、Navigator、userAgent、screen对象

    Location对象location用于获取或设置窗体的URL,并且可以用于解析URL.语法: location.[属性|方法] location对象属性图示: location 对象属性: loca ...

  5. Spark配置&启动脚本分析

    本文档基于Spark2.0,对spark启动脚本进行分析. date:2016/8/3 author:wangxl Spark配置&启动脚本分析 我们主要关注3类文件,配置文件,启动脚本文件以 ...

  6. (转)Ubuntu中让终端对于历史输出的内容保持足够长

    原地址:http://www.crifan.com/ubuntu_terminal_make_retain_long_enough_history_output_content/ Ubuntu下用终端 ...

  7. linux学习方法之一

    相信不少想学习linux的新手们正愁不知道看什么linux学习教程好,下面小编给大家收集和整理了几点比较重要的教程,供大家学习,如需想学习更多的话,可到wdlinux学堂寻找更多教程. 1.什么是RP ...

  8. linux下python多版本共存

    为何要安装python,linux下不是已经集成了python吗? 大多数linux系统都集成了python,但是他们的版本太低了.不能满足我们的需求,尤其是好多系统居然仍停留在 python2.6. ...

  9. js跨浏览器事件处理

    var EventUtil = { addHandler: function(element,type,handler){ if(element.addEventListener){ element. ...

  10. ajax创建对象

    <script>     function createAjax(){         var request=false;                   //window对象中有X ...