博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Java连接各类数据库
阅读量:4323 次
发布时间:2019-06-06

本文共 6972 字,大约阅读时间需要 23 分钟。

几种常用数据库的连接,以及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 block29                 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 block46                 e.printStackTrace();47             }48             try {49                 if(pstmt!=null)50                 pstmt.close();51             } catch (SQLException e) {52                 // TODO Auto-generated catch block53                 e.printStackTrace();54             }55             try {56                 if(con!=null)57                 con.close();58             } catch (SQLException e) {59                 // TODO Auto-generated catch block60                 e.printStackTrace();61             }62     }6364 }

使用配置文件是一种良好的编程习惯,避免了数据库配置与代码的硬耦合,以下是数据库配置文件("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=5011 #
12 maxIdle=2013 #
14 minIdle=515 #
16 maxWait=6000017 18 #JDBC驱动建立连接时附带的连接属性属性的格式必须为这样:[属性名=property;] 19 #注意:"user" 与 "password" 两个属性会被明确地传递,因此这里不需要包含他们。20 connectionProperties=useUnicode=true;characterEncoding=utf821 22 #指定由连接池所创建的连接的自动提交(auto-commit)状态。23 defaultAutoCommit=true24 25 #driver default 指定由连接池所创建的连接的只读(read-only)状态。26 #如果没有设置该值,则“setReadOnly”方法将不被调用。(某些驱动并不支持只读模式,如:Informix)27 defaultReadOnly=28 29 #driver default 指定由连接池所创建的连接的事务级别(TransactionIsolation)。30 #可用值为下列之一:(详情可见javadoc。)NONE,READ_UNCOMMITTED, READ_COMMITTED, REPEATABLE_READ, SERIALIZABLE31 defaultTransactionIsolation=READ_COMMITTED

dao层事例

1 package com.dao; 2  3 import java.io.Serializable; 4 import java.util.List; 5  6  public interface BaseDao
{ 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
findByHql(String hql,Object...params);17 18 public List
findByPage(String hql,int pageNo,int pageSize,Object...params);19 20 public int getCount(String hql,Object...params);21 22 }

dao的实现层

省。

转载于:https://www.cnblogs.com/yuht/p/5677116.html

你可能感兴趣的文章
NSFileManager打印目录下的文件的函数
查看>>
JavaScript 循环绑定之变量污染
查看>>
poj 1038 Bugs Integrated, Inc. 三进制状态压缩 DFS 滚动数组
查看>>
zoj 1654 Place the Rebots 最大独立集转换成二分图最大独立边(最大匹配)
查看>>
Wordpress解析系列之PHP编写hook钩子原理简单实例
查看>>
怎样看待个体经济
查看>>
不明觉厉的数据结构题2
查看>>
面向对象编程思想概览(四)多线程
查看>>
二十三种设计模式及其python实现
查看>>
Math类、Random类、System类、BigInteger类、BigDecimal类、Date类、SimpleDateFormat、Calendar类...
查看>>
【设计模式】 访问者模式
查看>>
关于FFMPEG 中I帧、B帧、P帧、PTS、DTS
查看>>
request和response的知识
查看>>
bootstrap 表单类
查看>>
20165332第四周学习总结
查看>>
Codeforces Round #200 (Div. 1)D. Water Tree dfs序
查看>>
linux安全设置
查看>>
Myflight航班查询系统
查看>>
团队-团队编程项目爬取豆瓣电影top250-代码设计规范
查看>>
【linux驱动分析】之dm9000驱动分析(六):dm9000_init和dm9000_probe的实现
查看>>