zoukankan      html  css  js  c++  java
  • 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 + "	员工编号" + empno
    56                         + "	入职日期" + hiredate + "	工资" + 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,配置数据源。

    数据源,一下篇讲。

  • 相关阅读:
    WebFrom 小程序【分页功能 】
    WebForm 【Repeater】展示数据
    WebForm 小项目【人员管理系统】分析
    WebFrom 【内置对象】— —跳转页面,页面传值
    WebForm 【复合控件】
    WebForm 【简单控件】【表单元素】
    WebForm 基础学习
    js对元素属性.内容的操作。定时器。元素的平级,父级,子集关系。
    常用事件【由浅入深】1
    document 对象
  • 原文地址:https://www.cnblogs.com/PoeticalJustice/p/7611906.html
Copyright © 2011-2022 走看看