JDBC基础知识
常见连接数据库工具:
- 图形化工具:点击、拖拽就可以操作数据库,对用户友好,简单对数据操作,复杂数据库操作爱莫能助
- JDBC(驱动程序):调用jar包接口
- 窗口(命令行):输入完整SQL语句对复杂数据库查询
JDBC:在java中就是jar包,应用通过JDBC提供的统一接口就可以实现对不同数据库(ORACLE、Mysql)的使用,让我们不需要了解他们之间的差异与具体操作。

Connection对象:代表java应用程序对后端数据库的一条物理链接,基于链接执行sql语句
Statement stmt=conn.createStatement();
Statement对象:是sql的容器,通过executeQuery承载sql语句,进行增删改查,返回ResultSet对象/int。
ResultSet rs=stmt.executeQuery("select name from student");
ResultSet对象:代表查询的结果
获取行:
.next():向后移动一行
.previous():向前移动一行
.absolute():直接移动到某一行
获取列:
.getString(ColumnName/Index)
.getInt(ColumnName/Index)
.getObject(ColumnName/Index)
package com.tao.test; import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement; public class jdbctest { static final String JDBC_DRIVER = "com.mysql.jdbc.Driver";
static final String DB_URL = "jdbc:mysql://localhost:3306/schoolweb?useUnicode=true&characterEncoding=UTF-8";
static final String USER = "root";
static final String PASSWORD = "admin"; public static void main(String[] args) throws ClassNotFoundException {
Connection conn = null;
Statement stmt = null;
ResultSet rs = null; // 装载驱动程序
Class.forName(JDBC_DRIVER);
// 建立数据库连接
try {
conn = DriverManager.getConnection(DB_URL, USER, PASSWORD);
// 执行sql语句
stmt = conn.createStatement();
rs = stmt.executeQuery("select name from student");
// 获取执行结果
while (rs.next()) {
System.out.println(rs.getString("name"));
}
} catch (SQLException e) {
// 异常处理
e.printStackTrace();
} finally {
//释放宝贵资源
try {
if (conn != null) {
conn.close();
}
if (stmt != null) {
stmt.close();
}
if (rs != null) {
rs.close();
}
} catch (SQLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}
}
JDBC进阶:java程序运行在JVM中,JVM也有内存。
1.查询结果条目过多,防止内存溢出,一次载入较少记录。
游标:提供一种客户端读取部分结果集的机制,分批读取。
1.在DB_URL中设置useCursorFetch=true开启游标

2.使用setFetchSize()设置每次读多少
package com.tao.test; import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement; public class jdbctest { static final String JDBC_DRIVER = "com.mysql.jdbc.Driver";
static final String DB_URL = "jdbc:mysql://localhost:3306/schoolweb?useCursorFetch=true&useUnicode=true&characterEncoding=UTF-8";
static final String USER = "root";
static final String PASSWORD = "admin"; public static void main(String[] args) throws ClassNotFoundException {
Connection conn = null;
PreparedStatement ptmt=null;
ResultSet rs = null; // 装载驱动程序
Class.forName(JDBC_DRIVER);
// 建立数据库连接
try {
conn = DriverManager.getConnection(DB_URL, USER, PASSWORD);
// 执行sql语句
ptmt = conn.prepareStatement("select name from student");
ptmt.setFetchSize(1);//每次读取一条记录
rs=ptmt.executeQuery();
// 获取执行结果
while (rs.next()) {
System.out.println(rs.getString("name"));
}
} catch (SQLException e) {
// 异常处理
e.printStackTrace();
} finally {
//释放宝贵资源
try {
if (conn != null) {
conn.close();
}
if (ptmt != null) {
ptmt.close();
}
if (rs != null) {
rs.close();
}
} catch (SQLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}
}
2.一行存储大字段内容,比如存储博文,怎么读取?
1.流方式读取,按区间读取
package com.tao.test; import java.io.File;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.InputStream;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException; public class jdbctest { static final String JDBC_DRIVER = "com.mysql.jdbc.Driver";
static final String DB_URL = "jdbc:mysql://localhost:3306/schoolweb?useCursorFetch=true&useUnicode=true&characterEncoding=UTF-8";
static final String USER = "root";
static final String PASSWORD = "admin";
static final String FILE_URL = "./text.txt"; public static void main(String[] args) throws ClassNotFoundException,
IOException {
Connection conn = null;
PreparedStatement ptmt = null;
ResultSet rs = null; // 装载驱动程序
Class.forName(JDBC_DRIVER);
// 建立数据库连接
try {
conn = DriverManager.getConnection(DB_URL, USER, PASSWORD);
// 执行sql语句
ptmt = conn.prepareStatement("select name from student");
ptmt.setFetchSize(1);// 每次读取一条记录
rs = ptmt.executeQuery();
// 获取执行结果
while (rs.next()) {
InputStream in = rs.getBinaryStream("name");
File f = new File(FILE_URL);
FileOutputStream out = new FileOutputStream(f);
int temp = 0;
while ((temp = in.read()) != -1)
out.write(temp);
out.close();
in.close();
}
} catch (SQLException e) {
// 异常处理
e.printStackTrace();
} finally {
// 释放宝贵资源
try {
if (conn != null) {
conn.close();
}
if (ptmt != null) {
ptmt.close();
}
if (rs != null) {
rs.close();
}
} catch (SQLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}
}
3.一次插入多条数据
1.批处理Statement
addBatch() //将sql打包为Batch
executeBatch() //执行sql
clearBatch() //清空Batch
package com.tao.test; import java.io.IOException;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement; public class jdbctest { static final String JDBC_DRIVER = "com.mysql.jdbc.Driver";
static final String DB_URL = "jdbc:mysql://localhost:3306/schoolweb?useCursorFetch=true&useUnicode=true&characterEncoding=UTF-8";
static final String USER = "root";
static final String PASSWORD = "admin";
static final String FILE_URL = "./text.txt";
static final String[] users = {"张三","李四"}; public static void main(String[] args) throws ClassNotFoundException,
IOException {
Connection conn = null;
Statement stmt = null;
ResultSet rs = null; // 装载驱动程序
Class.forName(JDBC_DRIVER);
// 建立数据库连接
try {
conn = DriverManager.getConnection(DB_URL, USER, PASSWORD);
// 执行sql语句
stmt=conn.createStatement();
for(String user:users)
{
stmt.addBatch("insert into student(name) values('"+user+"')");
}
stmt.executeBatch();
stmt.clearBatch();
} catch (SQLException e) {
// 异常处理
e.printStackTrace();
} finally {
// 释放宝贵资源
try {
if (conn != null) {
conn.close();
}
if (stmt != null) {
stmt.close();
}
if (rs != null) {
rs.close();
}
} catch (SQLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}
}
4.中文问题
数据库: 实例、dabase、表、字段 级别内置编码(优先级从小到大)
JDBC编码:DB_URL+characterEncoding=utf-8
JDBC基础知识的更多相关文章
- Java数据库连接——JDBC基础知识(操作数据库:增删改查)
一.JDBC简介 JDBC是连接java应用程序和数据库之间的桥梁. 什么是JDBC? Java语言访问数据库的一种规范,是一套API. JDBC (Java Database Connectivit ...
- JDBC 基础知识总结
1. 何谓JDBC --- Java Database Connectivity. 由Sun 公司提供的访问数据库的一组java类和接口,用来对数据库进行链接.发送SQL语句.处理返回结果,为开发 ...
- Java数据库连接--JDBC基础知识(操作数据库:增删改查)
一.JDBC简介 JDBC是连接java应用程序和数据库之间的桥梁. 什么是JDBC? Java语言访问数据库的一种规范,是一套API. JDBC (Java Database Connectivit ...
- Java JDBC 基础知识
一.JDBC常用接口.类介绍 JDBC提供对独立于数据库统一的API,用以执行SQL命令.API常用的类.接口如下: DriverManager 管理JDBC驱动的服务类,主要通过它获取Connect ...
- Java JDBC的基础知识(五)
本文主要记录JDBC基础知识之后的部分内容.另外,我看到<Java核心基础2>中第四章是主要介绍数据库编程的.里面有一些说明和应用特别灵活,有些部分也太容易理解,建议大家看一下.这篇是依然 ...
- JDBC基础教程
本文实例讲述了JDBC基础知识与技巧.分享给大家供大家参考.具体分析如下: 1.什么是JDBC? 通俗来讲JDBC技术就是通过java程序来发送SQL语句到数据库,数据库收到SQL语句后执行,把结果返 ...
- Java JDBC的基础知识(三)
在前面的Java JDBC的基础知识(二)和(三)中,主要介绍JDBC的原理和简单的应用过程.尤其在(二)中,可以发现代码进行多次try/catch,还有在前面创建连接等过程中好多参数我都给写定了. ...
- Java JDBC的基础知识(二)
在我的上一篇Java JDBC的基础知识(一)中,最后演示的代码在关闭资源的时候,仅仅用了try/catch语句,这里是有很大的隐患的.在程序创建连接之后,如果不进行关闭,会消耗更多的资源.创建连接之 ...
- Spring基础知识
Spring基础知识 利用spring完成松耦合 接口 public interface IOutputGenerator { public void generateOutput(); } 实现类 ...
- maven基础知识
1.maven基础知识 1.1maven坐标 maven坐标通常用冒号作为分割符来书写,像这样的格式:groupId:artifactId:packaging:version.项目包含了junit3. ...
随机推荐
- 音视频基础知识|ANS 噪声抑制原理解析
在上一期课程<音视频开发进阶课程|第二讲:回声消除>中,我们接触了音频前处理的概念,还认识了音频前处理的三剑客之一 AEC 回声消除.今天,我们继续来认识三剑客中的第二位:噪声抑制 A ...
- Go runtime 调度器精讲(三):main goroutine 创建
原创文章,欢迎转载,转载请注明出处,谢谢. 0. 前言 回顾下 上一讲 的内容.主线程 m0 蓄势待发,准备干活.g0 为 m0 提供了执行环境,P 和 m0 绑定,为 m0 提供活,也就是 goro ...
- TypeScript 5.1 & 5.2
getter 和 setter 可以完全不同类型了 以前我们提过,getter 的类型至少要是其中一个 setter 的类型.这个限制被突破了.现在可以完全使用不同类型了. v5.1 后,没有再报错了 ...
- 队列之ring_buffer优雅实现--附个人代码理解
1. 下面张贴实现该队列仅需的两个头文件:ring_buffer_iterator.h 和 fifo_iterator.h ring_buffer_iterator.h 1 /* 2 * 3 * Th ...
- dfs与贪心算法——洛谷5194
问题描述: 有n个砝码,将砝码从大到小排列,从第三个砝码开始,所有砝码均大于其前两个砝码之和,问怎样的砝码组合才可以组合出不大于c的最大重量,输出该重量 输入: 第一行输入两个个整数N,c,代表有N个 ...
- 76.最小覆盖子串 Golang实现
题目描述: 给你一个字符串 s .一个字符串 t .返回 s 中涵盖 t 所有字符的最小子串.如果 s 中不存在涵盖 t 所有字符的子串,则返回空字符串 "" . 注意: 对于 t ...
- Vue3——集成 sass
安装 sass npm install sass sass-loader -D 使用 scss 语法!!!需要加上 lang="scss" <style scoped lan ...
- nexus 部署与设置
安装nexus df -h 先查看目录磁盘空间,我安装的版本占用了四个G 空间,目录文件空间不够导致启动失败 上传 nexus 压缩包,并解压 查询 8081 端口号是否被占用 sudo netsta ...
- Shell分析服务器日志命令
1.查看有多少个IP访问: awk '{print $1}' log_file|sort|uniq|wc -l 2.查看某一个页面被访问的次数: grep "/index.php" ...
- Android Qcom USB Driver学习(一)
该系列文章总目录链接与各部分简介: Android Qcom USB Driver学习(零) USB接口类型 Android终端上常用的USB接口:TypeC(现在的主流),MicroB(以前的设备) ...