几种常用数据库的连接,以及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. VMware+Ubuntu8.10+Skyeye+gdb实现u-boot源码调试

    系统平台:WindowsXP 虚拟机: VMware Workstation 6.5.0 Ubuntu8.10 安装程序 ubuntu-8.10-desktop-i386.iso 下载地址:http: ...

  2. 绩效等级系统与MBO

    1. 目标管理(MBO)在一定时期内(一般为一年)组织活动的期望成果,是组织使命在一定时期内的具体化,是衡量组织活动有效性的标准.由于组织活动个体活动的有机叠加,因此只有各个员工.各个部门的工作对组织 ...

  3. C语言漫谈(二) 图像显示 Windows和Linux

    关于图像显示有很多库可以用,Windows下有GDI,GDI+,D3D等,Linux下有X Window和Wayland,此外还有OpenGL ,SDL等图形库以及各种GUI库. 了解最原始的方式,对 ...

  4. pyqt 右击+指定位置点击例子学习

    # -*- coding: utf-8 -*- # python:2.x __author__ = 'Administrator' import sys from PyQt4.QtCore impor ...

  5. MVVM 介绍

    我会修改一个关键架构,并将其带入我从那时起就在开发的各种应用,即使用一种叫做 Model-View-ViewModel 的架构替换 Model-View-Controller. 所以,MVVM 到底是 ...

  6. IOS 创建一张有颜色的UIImage

    #import <UIKit/UIKit.h> @interface UIImage (ImageWithColor) + (UIImage *)imageWithColor:(UICol ...

  7. 盒子模型&position定位

    有时候深深的感觉语文这门课程其实很有用, 至少以前学的时候没有感觉到 直到现在阅读大量的别人的资料文章的时候或者是看一些题目....... 总之:认真阅读小心品味 当然,前面的孤言自语和本文无关,只是 ...

  8. ASP.NET中时间的绑定和格式化

    1.Eval和Bind的区别  绑定表达式  <%# Eval("字段名") %>  <%# Bind("字段名") %> 区别 1.e ...

  9. 在Ubuntu上为Android系统编写Linux内核驱动程序

    文章转载至CSDN社区罗升阳的安卓之旅,原文地址:http://blog.csdn.net/luoshengyang/article/details/6568411 在智能手机时代,每个品牌的手机都有 ...

  10. java 中Date的格式化样式

    public static void main(String[] args) { Date d = new Date(); System.out.println(d); // Date类的默认格式 T ...