JDBC之使用配置文件链接数据库
写在前面
JDBC以一种统一的方式来对各种各样的数据库进行存取,JDBC为开发人员隐藏了不同数据库的不同特性。程序员开发时,知道要开发访问数据库的应用,于是将一个对应数据库的JDBC驱动程序类的引用进行了编码,并通过使用适当的JDBC URL 连接到数据库。
首先保证oracle服务开启,至于怎么开启,请看oracle篇。
第一步
当然是创建配置文件啊
1.选好文件夹右键 new file
或者
点左上角file 再选路径
2.取号配置文件名字+文件后缀 name.properties 点finish
3.编辑配置文件
点Source ♂ 根据具体情况写,#是注释,
driver后边写的是JDBC驱动文件名(固定写法)
url=jdbc:oracle:thin:ip地址: 端口:数据库名
本机地址@localhost 或者127.0.0.1
name=数据库账号名
password=密码
第二步
编写一个类
1 import java.io.IOException; 2 import java.io.InputStream; 3 import java.sql.Connection; 4 import java.sql.DriverManager; 5 import java.sql.PreparedStatement; 6 import java.sql.ResultSet; 7 import java.sql.SQLException; 8 import java.sql.Statement; 9 import java.text.SimpleDateFormat; 10 import java.util.Date; 11 import java.util.Properties; 12 13 public class JdbcTest { 14 15 public void queryEmp() { 16 Connection conn = null; 17 PreparedStatement ps = null; 18 ResultSet rs = null; 19 // 配置文件路径 20 String configFile = "db.properties"; 21 // 创建一个Properties对象 22 Properties prop = new Properties(); 23 // 将Properties配置文件 读入输入流 24 // 读取Properties配置文件的方法有6种 25 InputStream in = ClassLoader.getSystemResourceAsStream(configFile); 26 try { 27 prop.load(in); 28 } catch (IOException e1) { 29 30 e1.printStackTrace(); 31 } 32 String driver = prop.getProperty("driver"); 33 String url = prop.getProperty("url"); 34 String name = prop.getProperty("name"); 35 String password = prop.getProperty("password"); 36 37 try { 38 // 加载JDBC驱动 39 Class.forName(driver); 40 // 获取连接 链接数据库 41 conn = DriverManager.getConnection(url, name, password); 42 String sql = "select * from emp where empno=?"; 43 // 获取Statement对象,来写SQL语句 44 ps = conn.prepareStatement(sql); 45 ps.setInt(1, 7902); 46 // 执行SQL语句,获取结果集 47 rs = ps.executeQuery(); 48 while (rs.next()) { 49 String ename = rs.getString("ename"); 50 int empno = rs.getInt("empno"); 51 Date date = rs.getDate("hiredate"); 52 double salary = rs.getDouble("sal"); 53 SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd"); 54 String hiredate = sdf.format(date); 55 System.out.println("员工姓名:" + ename + "\t员工编号" + empno 56 + "\t入职日期" + hiredate + "\t工资" + salary); 57 } 58 } catch (ClassNotFoundException e) { 59 e.printStackTrace(); 60 } catch (SQLException e) { 61 e.printStackTrace(); 62 } finally { 63 // 关闭资源 必须写 很占内存 64 if (rs != null) { 65 try { 66 rs.close(); 67 } catch (SQLException e) { 68 e.printStackTrace(); 69 } 70 71 } 72 if (ps != null) { 73 try { 74 ps.close(); 75 } catch (SQLException e) { 76 e.printStackTrace(); 77 } 78 } 79 if (conn != null) { 80 try { 81 conn.close(); 82 } catch (SQLException e) { 83 e.printStackTrace(); 84 } 85 } 86 } 87 } 88 89 }
写个main方法测试一哈
1 public class Test { 2 3 public static void main(String[] args) { 4 JdbcTest test = new JdbcTest(); 5 test.queryEmp(); 6 } 7 }
控制台输出
说明链接到数据了,over!
写在后边
这么做有什么弊端?
这种方式带来的问题:
1、数据库服务器名称、用户名和口令都可能需要改变,由此引发JDBC URL需要修改;
2、数据库可能改用别的产品,如改用DB2或者MySql,引发JDBC驱动程序包和类名需要修改;
3、随着实际使用终端的增加,原配置的连接池参数可能需要调整;
4·
我们的WEB应用每次接受到一个客户的请求,都会和数据库取得连接,数据库操作结束后就会断开连接,这样的话就会耗费服务器大量的时间和内存。
因为此时数据库每次配置链接都要将Connection对象加载到内存中,再验证用户名和密码。这个是很可怕的。
解决办法:
程序员应该不需要关心“具体的数据库后台是什么?JDBC驱动程序是什么?JDBC URL格式是什么?访问数据库的用户名和口令是什么?”等等这些问题,程序员编写的程序应该没有对 JDBC 驱动程序的引用,没有服务器名称,没有用户名称或口令 —— 甚至没有数据库池或连接管理。而是把这些问题交给J2EE容器来配置和管理,程序员只需要对这些配置和管理进行引用即可。
由此,就有了JNDI,配置数据源。
数据源,一下篇讲。
posted on 2017-09-29 17:18 PoeticalJustice 阅读(1080) 评论(0) 编辑 收藏 举报