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管 ...
随机推荐
- 解决 MyEclipse 10 中 JSp页面 “return false” 报错问题
1.MyEclipse ->. Preferences 2.validation ->>找到JavaScript validator for Js files builder 下面 ...
- 利用JDBC连接Eclipse和mySQL5.1.26数据库
初学JDBC,看了看书,自己动手的时候还是有很多地方有问题,最终终于解决了实现了数据库的连接.现将整个步骤描述如下: 环境:mySQL5.1.26(win 32bit), Eclipse JavaEE ...
- UVa10534 - Wavio Sequence(LIS)
题目大意 给定一个长度为n的整数序列,求个最长子序列(不一定连续),使得该序列的长度为奇数2k+1,前k+1个数严格递增,后k+1个数严格递减.注意,严格递增意味着该序列中的两个相邻数不能相同.n&l ...
- POJ2192 - Zipper(区间DP)
题目大意 给定三个字符串s1,s2,s3,判断由s1和s2的字符能否组成字符串s3,并且要求组合后的字符串必须是s1,s2中原来的顺序. 题解 用dp[i][j]表示s1的前i个字符和s2的前j个字符 ...
- javascript如何判断一个对象是否是窗口
<!DOCTYPE html> <html> <head> </head> <body> <script type="tex ...
- 微信开发第7章 通过accesstoken获取用户黑名单列表
获取黑名单列表可以查看文档 http://mp.weixin.qq.com/wiki?t=resource/res_main&id=mp1471422259_pJMWA&token=& ...
- 错误: 找不到或无法加载主类 / Class not found
Java Resources文件上有红色感叹号存在 说明引入jar包存在错误,把引用错误的jar包去掉即可. 右键项目,Properties,Java Build Path,选中jar包remove, ...
- hdu2571动态规划
125ms.... 太慢了...dp[i][j] = max(dp[i][j-1],dp[i-1][j],dp[i][k],1<k<j&&j%k==0); #include ...
- C# LINQ详解(一)
原文标题:How does it work in C#?-Part 3 (C# LINQ in detail),作者:Mohammand A Rahman. 目录 LINQ 基础 扩展方法-幕后的工作 ...
- android使用模拟机测试时,若要联网IP地址该怎么写?
android使用模拟机测试时,如果服务器也是本机,那么IP地址如果写为localhost或者127.0.0.1,这样其实是不能访问到本机上部署的服务端,那么该怎么写呢?很简单,把IP地址改为10.0 ...