JDBC——架构层、驱动

时间:2020-12-11 09:24:14

JDBC(java Datebase Connector)

jdbc驱动程序

四种类型:

  jdbc-odbc桥接驱动程序

  Native-API

  JDBC-Net

  Native-Protocol  (常见)

 public class DBToolOld
{
public static void main(String[] args)
{
// 1、注册驱动
// DriverManager.registerDriver(new oracle.jdbc.driver.OracleDriver());
// new驱动类的时候会注册一份,DriverManager.registerDriver又会去注册一份驱动
// 硬编码在类中,不方便修改
// System.setProperty("driver", "oracle.jdbc.driver.OracleDriver");
// 因为key和value都是字符串,可以改到配置文件中
// 需要约定好key的值,注册起来不太方便
try
{
Class.forName("oracle.jdbc.driver.OracleDriver");
// 2、获得连接对象
String oracleUrl = "jdbc:oracle:thin:@192.168.6.100:1521:NIIT";
Connection conn = DriverManager.getConnection(oracleUrl, "scott",
"tiger");
// 3、开始执行SQL语句,先创建Statement对象
Statement stmt = conn.createStatement();
// 4、执行SQL语句,返回一个结果集,只有是SELECT语句、executeQuery才会返回结果集
ResultSet rs = stmt
.executeQuery("SELECT empNo, ename, hireDate, sal FROM Emp");
// 5、处理结果集
while (rs.next())
{
int empNo = rs.getInt(1); //根据列下标获得值
System.out.println(empNo);
String ename = rs.getString("ename"); //根据列名获得值,推荐这种方式
System.out.println(ename);
Date joinDate = rs.getDate("hireDate");
System.out.println(joinDate);
Double sal = rs.getDouble("sal");
System.out.println(sal);
System.out.println("============");
}
//6、关闭资源
rs.close();
stmt.close();
conn.close();
}
catch (ClassNotFoundException e)
{
// TODO Auto-generated catch block
e.printStackTrace();
}
catch (SQLException e)
{
// TODO Auto-generated catch block
e.printStackTrace();
} }
}

实际上常用的是:

 public class DBTool
{
private static DBTool instance; private DBTool()
{ } public static DBTool getInstance()
{
if (instance == null)
{
instance = new DBTool(); // 如果该实例为空,表示没实例化,在自己这里实例化,否则直接返回已经实例化好的对象
}
return instance;
} public Connection getConnection()
{
Connection conn = null;
try
{
Properties p = new Properties();
p.load(new FileReader("db.properties"));
String driverName = p.getProperty("driverName");
String url = p.getProperty("url");
String userName = p.getProperty("username");
String pwd = p.getProperty("password");
Class.forName(driverName);
conn = DriverManager.getConnection(url, userName, pwd);
}
catch (IOException | SQLException | ClassNotFoundException e)
{
// TODO Auto-generated catch block
e.printStackTrace();
}
return conn;
} public static void closeAll(Connection conn, Statement stmt, ResultSet rs)
{
close(rs);
close(stmt);
close(conn);
} private static void close(AutoCloseable ac)
{
try
{
if (ac != null)
{
ac.close();
ac = null;
}
}
catch (Exception e)
{
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}

此时驱动配置文件使用映射:

 driverName = com.mysql.jdbc.Driver
url = jdbc:mysql://192.168.6.66:3307/hn
username = zxj
password = wxniit

JDBC——架构层、驱动的更多相关文章

  1. 【转】USB协议架构及驱动架构

    1. USB协议 1.1 USB主机系统 在USB主机系统中,通过根集线器与外部USB从机设备相连的处理芯片,称为USB主机控制器.USB主机控制器包含硬件.软件和固件一部分. 1.2 USB设备系统 ...

  2. 老调重弹:JDBC系列之<驱动加载原理全面解析) ----转

      最近在研究Mybatis框架,由于该框架基于JDBC,想要很好地理解和学习Mybatis,必须要对JDBC有较深入的了解.所以便把JDBC 这个东东翻出来,好好总结一番,作为自己的笔记,也是给读者 ...

  3. Linux3.10.0块IO子系统流程(6)-- 派发SCSI命令到低层驱动

    在SCSI策略例程中最后调用scsi_dispatch_cmd将SCSI命令描述符派发给低层驱动进行处理 /** * scsi_dispatch_command - Dispatch a comman ...

  4. Android HAL层与Linux Kernel层驱动开发简介

    近日稍微对Android中的驱动开发做了一些简要的了解. HAL:Hardware Abstract Layer 硬件抽象层,由于Linux Kernel需要遵循GPL开源协议,硬件厂商为了保护自己硬 ...

  5. 架构-层-BLL:BLL

    ylbtech-架构-层-BLL:BLL 业务逻辑层(Business Logic Layer)无疑是系统架构中体现核心价值的部分.它的关注点主要集中在业务规则的制定.业务流程的实现等与业务需求有关的 ...

  6. 架构-层-DAL:DAL

    ylbtech-架构-层-DAL:DAL DAL是数据访问层的英文缩写,即为数据访问层(Data Access Layer).其功能主要是负责数据库的访问.简单地说就是实现对数据表的Select(查询 ...

  7. 关于jdbc注冊驱动的那点事

    看到非常多人写jdbc连接工具类的时候,都会写到Class.forName()去显示载入类,一写错点点就会抛出ClassNotFoundException,关于显示载入类,究竟会不会产生作用呢? 參考 ...

  8. JDBC架构

    JDBC API支持两层和三层处理模型进行数据库访问,但在一般的JDBC体系结构由两层组成: JDBC API: 提供了应用程序对JDBC的管理连接. JDBC Driver API: 支持JDBC管 ...

  9. 手写JDBC - 数据库、驱动信息存储在配置文件

    1. 将数据库.驱动信息存储在配置文件 configure.properties url=jdbc:mysql://localhost:3306/数据库名?serverTimezone=GMT&amp ...

随机推荐

  1. Java语言的特点

    一. 面向对象:其实是现实世界模型的自然延伸.现实世界中任何实体都可以看作是对象.对象之间通过消息相互作用.另外,现实世界中任何实体都可归属于某类事物,任何对象都是某一类事物的实例.如果说传统的过程式 ...

  2. Flask web开发 简单介绍

    Flask是一个基于python的轻量级web框架.当安装好后Flask后 (pip install flask),就可以开始使用了. 一.最简单的例子 1.新建目录,作为web应用的目录,如: mk ...

  3. 递归算法的数据结构和算法 C++和PHP达到

    递归算法:它是一种间接的方法调用本身,直接或. 实施过程:按功能或子程序完成.在函数编写代码或子程序直接或间接拥有被称为.你可以完成递归. (相同类型的问题,子问题到最小问题有已知条件,然后来求解,然 ...

  4. 一个Ruby静态代码分析器 rubocop

    A Ruby static code analyzer, based on the community Ruby style guide. http://rubocop.readthedocs.io ...

  5. Visual Studio for Mac 使用笔记

    无法打开控制台运行程序 Project -> Project Options -> Run -> Configurations -> Default 勾选Run on exte ...

  6. linux的日常经常使用的命令

    现在经常用到linux命令,又时候回忘记,我就做个小笔记,大家也可以补充补充.....可以评论一下,我会截图做笔记的 netstat -ntlp //查看当前系统进程和端口等信息 tail -f fi ...

  7. bl bl bl bl bl

    package com.dh.activiti; import org.springframework.web.servlet.HandlerInterceptor; import org.sprin ...

  8. poj3274 Gold Balanced Lineup(HASH)

    Description Farmer John's N cows (1 ≤ N ≤ 100,000) share many similarities. In fact, FJ has been abl ...

  9. winform按钮文字换行

    用button的Bounds属性 btn.Bounds = new Rectangle(new Point(5 + i * 143, 25), new Size(100, 60));

  10. [原]sencha touch之表单二(注册页面)

    接着上一篇的登陆页面,来一个最简单的注册页面,几乎包含了常用的field Ext.application({ id:'itKingApp', launch:function(){ var formPa ...