Java连接各类数据库
几种常用数据库的连接,以及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连接各类数据库的更多相关文章
- java连接mysql数据库详细步骤解析
java连接mysql数据库详细步骤解析 第一步:下载一个JDBC驱动包,例如我用的是:mysql-connector-java-5.1.17-bin.jar 第二步:导入下载的J ...
- Java连接SqlServer2008数据库(转)
Java连接SqlServer2008数据库 首先下载JDBC:下载地址:http://www.microsoft.com/zh-cn/download/details.aspx?id=21599 下 ...
- Java连接MySQL数据库及简单操作代码
1.Java连接MySQL数据库 Java连接MySql需要下载JDBC驱动MySQL-connector-java-5.0.5.zip(举例,现有新版本).然后将其解压缩到任一目录.我是解压到D盘, ...
- 转载:Java连接MySQL 数据库的正确操作流程
转载网址:http://www.bitscn.com/pdb/mysql/201005/186551.html 以下的文章主要介绍的是Java连接MySQL 数据库(以MySQL数据库为例 ...
- Java连接MySQL数据库增删改查通用方法
版权声明:本文为博主原创文章,未经博主允许不得转载. Java连接MySQL数据库增删改查通用方法 运行环境:eclipse+MySQL 以前我们Java连接MySQL数据库都是一个数据库写一个类,类 ...
- Java进阶(二十五)Java连接mysql数据库(底层实现)
Java进阶(二十五)Java连接mysql数据库(底层实现) 前言 很长时间没有系统的使用java做项目了.现在需要使用java完成一个实验,其中涉及到java连接数据库.让自己来写,记忆中已无从搜 ...
- Java 连接 MySQL 数据库
最近想学习一下 Java 连接 MySQL 数据库,于是有了这样的一些问题&解决办法. 首先是解决 JDBC(Java Data Base Connectivity)驱动问题,因为默认安装的J ...
- Java连接SqlServer2008数据库
Java连接SqlServer2008数据库 首先下载JDBC:下载地址:http://www.microsoft.com/zh-cn/download/details.aspx?id=21599 下 ...
- java连接MySql数据库 zeroDateTimeBehavior
JAVA连接MySQL数据库,在操作值为0的timestamp类型时不能正确的处理,而是默认抛出一个异常, 就是所见的:java.sql.SQLException: Cannot convert va ...
随机推荐
- android面试题之四
十六.Android中Dalvik和JVM的区别是什么? 1. Dalvik基于寄存器,而JVM基于栈.基于寄存器的虚拟机对于更大的程序来说,在它们编译的时候,花费的时间更短. 2. Dalvik负责 ...
- [每日一题] 11gOCP 1z0-052 :2013-09-4 block header grows............................................A33
转载请注明出处:http://write.blog.csdn.net/postedit/11100311 正确答案是:AD 要理解这道题就要去了解数据块的结构.引用OCPPPT中的一幅图: 从这幅图中 ...
- go中string和slice no-copy转换
在go里面,string和slice的互换是需要进行内存拷贝的,虽然在底层,它们都只是用 pointer + len来表示的一段内存. 通常,我们不会在意string和slice的转换带来的内存拷贝性 ...
- Cordova for android怎样在App中处理退出button事件
项目须要在HTML5 Android App中增加对返回键的处理,发现直接在Activity中加返回键处理代码不起作用,分析cordova源代码发现返回键已经被WebView处理掉了,所以仅仅能在js ...
- asp.net MVC 学习笔记
1.可以看出每个区域Areas里都是个mini的MVC项目,Controller.Models.Views一个都不缺,还多了一个AdminAreaRegistration类 2.MVC 将URL映射到 ...
- 【css基础】文本对齐,水平对齐,垂直对齐
先说水平对齐,那首先想到的就是text-align了,text-align:left,text-align:center,text- align:right,代表的就是左对齐,居中对齐和右对齐,需要注 ...
- 未能加载文件或程序集“System.Web.Helpers, Version=2.0.0.0(转)
在本地终于用上了ASP.NET MVC4自带的认证功能,但放到生产服务器上就出问题了:打开注册页面没问题,但一点下注册按钮就报错了: 未能加载文件或程序集“System.Web.Helpers, Ve ...
- lucene评分推导公式
在进行Lucene的搜索过程解析之前,有必要单独的一张把Lucene score公式的推导,各部分的意义阐述一下.因为Lucene的搜索过程,很重要的一个步骤就是逐步的计算各部分的分数. Lucene ...
- MJExtension(JSON到数据模型的自动转换)
整理自:http://www.jianshu.com/p/93c242452b9b. 1.MJExtension的功能 字典-->模型 模型-->字典 字典数组-->模型数组 模型数 ...
- MYSQL操作的一些知识点,持续更新中····
基本概念——库 1.数据库服务器:库——>表——>行/列 2.cmd下链接: mysql – uroot –proot 3.创建库:create database php; 3.看数据库 ...