JDBC——架构层、驱动
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——架构层、驱动的更多相关文章
- 【转】USB协议架构及驱动架构
1. USB协议 1.1 USB主机系统 在USB主机系统中,通过根集线器与外部USB从机设备相连的处理芯片,称为USB主机控制器.USB主机控制器包含硬件.软件和固件一部分. 1.2 USB设备系统 ...
- 老调重弹:JDBC系列之<驱动加载原理全面解析) ----转
最近在研究Mybatis框架,由于该框架基于JDBC,想要很好地理解和学习Mybatis,必须要对JDBC有较深入的了解.所以便把JDBC 这个东东翻出来,好好总结一番,作为自己的笔记,也是给读者 ...
- Linux3.10.0块IO子系统流程(6)-- 派发SCSI命令到低层驱动
在SCSI策略例程中最后调用scsi_dispatch_cmd将SCSI命令描述符派发给低层驱动进行处理 /** * scsi_dispatch_command - Dispatch a comman ...
- Android HAL层与Linux Kernel层驱动开发简介
近日稍微对Android中的驱动开发做了一些简要的了解. HAL:Hardware Abstract Layer 硬件抽象层,由于Linux Kernel需要遵循GPL开源协议,硬件厂商为了保护自己硬 ...
- jdbc 03:注册驱动的方式
jdbc连接mysql时,注册驱动的方式 package com.examples.jdbc.o3_注册驱动方式; //mysql驱动所在的包 import com.mysql.jdbc.Driver ...
- 架构-层-BLL:BLL
ylbtech-架构-层-BLL:BLL 业务逻辑层(Business Logic Layer)无疑是系统架构中体现核心价值的部分.它的关注点主要集中在业务规则的制定.业务流程的实现等与业务需求有关的 ...
- 架构-层-DAL:DAL
ylbtech-架构-层-DAL:DAL DAL是数据访问层的英文缩写,即为数据访问层(Data Access Layer).其功能主要是负责数据库的访问.简单地说就是实现对数据表的Select(查询 ...
- 关于jdbc注冊驱动的那点事
看到非常多人写jdbc连接工具类的时候,都会写到Class.forName()去显示载入类,一写错点点就会抛出ClassNotFoundException,关于显示载入类,究竟会不会产生作用呢? 參考 ...
- JDBC架构
JDBC API支持两层和三层处理模型进行数据库访问,但在一般的JDBC体系结构由两层组成: JDBC API: 提供了应用程序对JDBC的管理连接. JDBC Driver API: 支持JDBC管 ...
随机推荐
- iPhone 崩溃日志解析
方法一.在编译时保留xx.app, xx.app.dSYM在/user目录下,xcode->orgernize->Device Logs就能够自动部分定位地址 方法二.xcode 有自带的 ...
- 韦东山yy公开课笔记(2)--各种杂的问题
1. 编译器的版本和glibc库有对应关系吗,如何查看glibc的版本(glibc是linux系统中最底层的api,几乎其它任何运行库都会依赖于glibc),编译器是不是只带glibc被编译生成的 . ...
- sensor的skipping and binning 模式
关于sensor的缩放存在两种模式 binning mode 和skip mode skipping mode 就是把想要的数据采集上来 把其余的数据扔掉 如下所示 column skip 2 row ...
- 解决高版本 Google Chrome 扩展程序强制停用问题 -摘自网络
1]前往这里下载你喜欢的语言的组策略模板 后缀为.adm (其他的文件自己看 https://docs.google.com/viewer?a=v&pid=sites&srcid=Y2 ...
- tail -f logfile.log 一直监控某个文件,若该文件有改动,立即在屏幕上输出
tail -f logfile.log 可以一直监控某个文件,只要文件有改动,就立即在屏幕上输出
- Android学习之 博客专栏 与 资料
android | Android Developers Android学习系列 - 谦虚的天下 - 博客园 android基础 - 生如夏花之灿烂 - 博客园 Android开发 - 皓月繁星 - ...
- [struts2]struts结合ECharts的用法
<script src="http://echarts.baidu.com/build/dist/echarts-all.js"></script> < ...
- 生成N个不相等的随机数
近期项目中须要生成N个不相等的随机数.实现的时候.赶工期,又有项目中N非常小(0-100)直接谢了一个最直观的方法: public static List<Integer> randomS ...
- linux 系统磁盘分区之fdisk
对于学习磁盘分区,通常学习的都是fdisk命令 当然,对于小于2TB的磁盘,我们基本上是使用fdisk命令进行分区 下面就简单介绍一下fdisk操作磁盘的基本命令和场景模拟 常用命令介绍 fdis ...
- [TypeScript] 1. Catching JavaScript Mistakes with TypeScript
The TypeScript compiler is a powerful tool which catches mistakes even in vanilla JavaScript. Try it ...