2019-4-22 jdbc学习笔记
jdbc
一.定义:java database connector
二.常用的接口
java.sql.Driver 驱动
java.sql.Connection 链接
java.sql.Statement 静态处理块
java.sql.PreparedStatement 预处理模块
java.sql.ResultSet 结果集
java.sql.ResultSetMeteData 数据库信息数据集
三.使用方法:
注意:oracle和mysql的jdbc 的jar包是不一样的
1.导入jar包
2.编译jar包
url=jdbc:oracle:thin:@localhost:1521:ORCL
username=SCOTT
password=root
public class DBUtils {
private static String url = "";
private static String username = "";
private static String password = "";
static{
try {
//加载驱动
Class.forName("oracle.jdbc.driver.OracleDriver");
//通过当前的线程获取类加载器,再获取资源获取器(不然不能读取到相对路径)
InputStream stream = Thread.currentThread()
.getContextClassLoader()
.getResourceAsStream("dao/db.properties");
//通过properties读取流中的配置信息
Properties properties = new Properties();
properties.load(stream);
url = properties.getProperty("url");
username = properties.getProperty("username");
password = properties.getProperty("password");
} catch (ClassNotFoundException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}
}
/**
* 获取链接的方法
* @return
*/
public static Connection getConnection(){
Connection connect = null;
//创建驱动对象
Driver driver = new OracleDriver();
try {
//将驱动对象加入到驱动对象管理器中
DriverManager.deregisterDriver(driver);
//通过驱动对象管理器获取链接
connect
= DriverManager
.getConnection(url,username,password);
} catch (SQLException e) {
e.printStackTrace();
}
return connect;
}
/**
* 获取sql语句传达器
* @return
*/
public Statement getStatement(){
Statement st = null;
try {
st = new DBUtils().getConnection().createStatement();
} catch (SQLException e) {
e.printStackTrace();
}
return st;
}
/**
* 获取编译好的PrepareStatement
* @param psql 带问号的sql语句
* @param args 与问好相对应的参数
* @return
*/
public PreparedStatement getPrepareStatement(String psql,Object... args){
PreparedStatement pst = null;
//获取链接
Connection conn = new DBUtils().getConnection();
try {
//产生预编译执行器
pst = conn.prepareStatement(psql);
for (int i = 0; i < args.length; i++) {
//给预编译注入参数
pst.setObject(i+1,args[i]);
}
ResultSet resultSet = pst.executeQuery();
} catch (SQLException e) {
e.printStackTrace();
}
return pst;
}
/**
* 释放Connection PrepareStation ResultSet的资源
* @param conn
*/
public void release(AutoCloseable... conn){
for (int i = 0; i < conn.length; i++) {
try {
if(conn[i]!=null){
conn[i].close();
}
} catch (Exception e) {
e.printStackTrace();
}
}
}
@Test
/***
* 测试链接是否成功的方法
*/
public void test(){
System.out.println(new DBUtils().getConnection());
}
}
/**
* 获取表信息数据集
* @return
*/
public DatabaseMetaData getDatabaseMetaData(){
try {
return DBUtils.getConnection().getMetaData();
} catch (SQLException e) {
e.printStackTrace();
}
return null;
} public void getAllTableNames(){
//获取链接
Connection connection =
DBUtils.getConnection();
try {
//获取表数据集
DatabaseMetaData metaData = this.getDatabaseMetaData();
ResultSet tables = metaData.getTables(null, null, null, new String[]{"TABLE"});
while(tables.next()){
//获取表名
String tableName = tables.getString("TABLE_NAME");
System.out.println(tableName);
}
} catch (SQLException e) {
e.printStackTrace();
}
} //输出列名、类型、注释
public void printColumnInfo(DatabaseMetaData databaseMetaData)throws Exception{
ResultSet rs = databaseMetaData.getColumns(null, "%", "EMP", "%");
while(rs.next()){
//列名
String columnName = rs.getString("COLUMN_NAME");
//类型
String typeName = rs.getString("TYPE_NAME");
//注释
String remarks = rs.getString("REMARKS");
System.out.println(columnName + "--" + typeName + "--" + remarks);
}
}
//测试基础查询语句
public void testStatement(){
Connection conn =
new DBUtils().getConnection();
try(Statement statement = conn.createStatement()){
ResultSet resultSet = statement.executeQuery("SELECT * FROM EMP");
while(resultSet.next()){
System.out.print(resultSet.getString("ENAME")+" ");
System.out.println(resultSet.getInt("SAL"));
}
} catch (SQLException e) {
e.printStackTrace();
}
} /**
* 当要大量插入数据的时候使用batch更快
*/
public void testBatch(){
Connection conn = DBUtils.getConnection();
try {
PreparedStatement ps = conn.prepareStatement("INSERT INTO EMPTEMP(NAME,AGE) VALUES(?,?)");
for (int i = 1; i < 1000; i++) {
ps.setString(1,"小王"+i);
ps.setInt(2,i);
//将当前的指令存储到batch中
ps.addBatch();
}
ps.executeBatch();
ps.close();
conn.close();
} catch (SQLException e) {
e.printStackTrace();
}
}
2019-4-22 jdbc学习笔记的更多相关文章
- JDBC 学习笔记(十一)—— JDBC 的事务支持
1. 事务 在关系型数据库中,有一个很重要的概念,叫做事务(Transaction).它具有 ACID 四个特性: A(Atomicity):原子性,一个事务是一个不可分割的工作单位,事务中包括的诸操 ...
- JDBC 学习笔记(十)—— 使用 JDBC 搭建一个简易的 ORM 框架
1. 数据映射 当我们获取到 ResultSet 之后,显然这个不是我们想要的数据结构. 数据库中的每一个表,在 Java 代码中,一定会有一个类与之对应,例如: package com.gerrar ...
- JDBC 学习笔记(六)—— PreparedStatement
1. 引入 PreparedStatement PreparedStatement 通过 Connection.createPreparedStatement(String sql) 方法创建,主要用 ...
- JDBC学习笔记二
JDBC学习笔记二 4.execute()方法执行SQL语句 execute几乎可以执行任何SQL语句,当execute执行过SQL语句之后会返回一个布尔类型的值,代表是否返回了ResultSet对象 ...
- JDBC学习笔记一
JDBC学习笔记一 JDBC全称 Java Database Connectivity,即数据库连接,它是一种可以执行SQL语句的Java API. ODBC全称 Open Database Conn ...
- 【转】JDBC学习笔记(2)——Statement和ResultSet
转自:http://www.cnblogs.com/ysw-go/ Statement执行更新操作 Statement:Statement 是 Java 执行数据库操作的一个重要方法,用于在已经建立数 ...
- JDBC学习笔记(2)——Statement和ResultSet
Statement执行更新操作 Statement:Statement 是 Java 执行数据库操作的一个重要方法,用于在已经建立数据库连接的基础上,向数据库发送要执行的SQL语句.Statement ...
- JDBC学习笔记(1)——JDBC概述
JDBC JDBC API是一个Java API,可以访问任何类型表列数据,特别是存储在关系数据库中的数据.JDBC代表Java数据库连接. JDBC库中所包含的API任务通常与数据库使用: 连接到数 ...
- 【转】JDBC学习笔记(1)——JDBC概述
转自:http://www.cnblogs.com/ysw-go/ JDBC JDBC API是一个Java API,可以访问任何类型表列数据,特别是存储在关系数据库中的数据.JDBC代表Java数据 ...
- JDBC学习笔记(9)——DBUtils的使用
使用DBUtils提供的功能需要使用commons-dbutils-1.6.jar这个JAR包,在Apache官网可以下载到 使用DBUtils进行更新操 测试QueryRunner类的update方 ...
随机推荐
- ubuntu彻底卸载软件
找到此软件名称,然后sudo apt-get purge ......(点点为为程序名称),purge参数为彻底删除文件,然后sudo apt-get autoremove,sudo apt-get ...
- Hibernate 再接触 一级缓存 二级缓存 查询缓存
缓存 就是把本来应该放在硬盘里的东西放在内存里 将来存内存里读 一级缓存: session缓存 二级缓存: sessionFactory级别的 (适合经常访问,数据量有限,改动不大) 很多的se ...
- html 提取 公用部分
在写HTML时,总会遇到一些公用部分,如果每个页面都写那就很麻烦,并且代码量大大增加. 网上查询了几种方法: 1.es6 的 embed 标签. <embed src="header. ...
- 整数中1出现的次数(从1到n整数中1出现的次数)(python)
题目描述 求出1~13的整数中1出现的次数,并算出100~1300的整数中1出现的次数?为此他特别数了一下1~13中包含1的数字有1.10.11.12.13因此共出现6次,但是对于后面问题他就没辙了. ...
- CentOS 性能监测命令
1.实时监测命令(watch) -d 高亮显示变化 -n 间隔多久(s) 执行后面的command #每隔1秒显示空间使用情况并列出当前目录下的列表信息 EX:watch -d -n 1 'df -h ...
- linux 查找java程序、杀死、重启
查看java进程 ps -ef|grep java杀死进程 kill -9 4834 (进程号)启动 java -jar xxx.jar & (后台会一直运行)
- 10.13 新版本go on~
上午1.5 终审 and 排期 合同管理那边又是切换选项时各种联动,我第一想法是 好麻烦,不想做这个...第二想法才是给我做吧 锻炼锻炼我 然后 分任务的时候 分给我了,,哈哈 开心 虽然我没想躲 但 ...
- 【转载】我为什么弃用OpenStack转向VMware vsphere
我为什么弃用OpenStack转向VMware Vsphere,一切皆为简单.高效.因为我们在工作过程中涉及到大量的测试工作,每天都有成百个虚拟机的创建和销毁工作. 工作任务非常繁重,我们的持续集成平 ...
- angularJs, ui-grid 设置默认group, 及排序
- 在WIN10上安装ESXI-Comstomer (转自技术社区)
I recently required the use of ESXi Customizer to integrate some NIC drivers into my ESXi 5.5 ISO. H ...