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开源协议,硬件厂商为了保护自己硬 ...
-
架构-层-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管 ...
-
手写JDBC - 数据库、驱动信息存储在配置文件
1. 将数据库.驱动信息存储在配置文件 configure.properties url=jdbc:mysql://localhost:3306/数据库名?serverTimezone=GMT& ...
随机推荐
-
Java语言的特点
一. 面向对象:其实是现实世界模型的自然延伸.现实世界中任何实体都可以看作是对象.对象之间通过消息相互作用.另外,现实世界中任何实体都可归属于某类事物,任何对象都是某一类事物的实例.如果说传统的过程式 ...
-
Flask web开发 简单介绍
Flask是一个基于python的轻量级web框架.当安装好后Flask后 (pip install flask),就可以开始使用了. 一.最简单的例子 1.新建目录,作为web应用的目录,如: mk ...
-
递归算法的数据结构和算法 C++和PHP达到
递归算法:它是一种间接的方法调用本身,直接或. 实施过程:按功能或子程序完成.在函数编写代码或子程序直接或间接拥有被称为.你可以完成递归. (相同类型的问题,子问题到最小问题有已知条件,然后来求解,然 ...
-
一个Ruby静态代码分析器 rubocop
A Ruby static code analyzer, based on the community Ruby style guide. http://rubocop.readthedocs.io ...
-
Visual Studio for Mac 使用笔记
无法打开控制台运行程序 Project -> Project Options -> Run -> Configurations -> Default 勾选Run on exte ...
-
linux的日常经常使用的命令
现在经常用到linux命令,又时候回忘记,我就做个小笔记,大家也可以补充补充.....可以评论一下,我会截图做笔记的 netstat -ntlp //查看当前系统进程和端口等信息 tail -f fi ...
-
bl bl bl bl bl
package com.dh.activiti; import org.springframework.web.servlet.HandlerInterceptor; import org.sprin ...
-
poj3274 Gold Balanced Lineup(HASH)
Description Farmer John's N cows (1 ≤ N ≤ 100,000) share many similarities. In fact, FJ has been abl ...
-
winform按钮文字换行
用button的Bounds属性 btn.Bounds = new Rectangle(new Point(5 + i * 143, 25), new Size(100, 60));
-
[原]sencha touch之表单二(注册页面)
接着上一篇的登陆页面,来一个最简单的注册页面,几乎包含了常用的field Ext.application({ id:'itKingApp', launch:function(){ var formPa ...