目录
1. JDBC简介
JDBC是一种用于执行SQL语句的Java API,可以为多种关系数据库提供统一访问,它由一组用java编写的类和接口组成。JDBC提供了一种基准,据此可以构建更高级的工具和接口,使数据库开发人员能够编写数据库应用程序。
2. JDBC访问数据库过程
JDBC相关类
| 接口名 | 说明 |
| Connection | 此接口表示与数据的连接 |
| PreparedStatement | 此接口用于执行预编译的 SQL 语句 |
| ResultSet | 此接口表示了查询出来的数据库数据结果集 |
| Statement | 此接口用于执行 SQL 语句并将数据检索到 ResultSet 中 |
| DriverManager | 此类用于加载和卸载各种驱动程序并建立与数据库的连接 |
| ResultSetMetaData | 可用于获取关于ResultSet对象中列的类型和属性信息的对象 |
JDBC数据库访问过程

驱动下载:链接:https://pan.baidu.com/s/1q-g0fgdwouUrhwRkkx48vQ 提取码:ymi7 ,下载好后创建项目,为了方便展示,我直接创建的Java 动态项目,创建好以后将驱动放在如下目录中就可以使用了。

下面举一个例子
package com.chtw.test;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.Statement;
public class JDBCTest {
public static void main(String[] args) {
try {
//加载驱动程序类DriverManager
Class.forName("com.mysql.jdbc.Driver");
//获取连接
/**
* getConnection(url,username,password)
* url:jdbc:mysql://127.0.0.1:3306/javaee_day17
* username:password
* password:数据库密码
*/
Connection conn = DriverManager.getConnection("jdbc:mysql://127.0.0.1:3306/javaee_day17","root","1728aceAB7");
//sql语句
String sql = "select * from user";
/**
* Statement对象的作用
* 连接一旦建立,就可用来向它所涉及的数据库传送SQL语句,Statement对象用于发送简单的SQL语句
* Statement对象如何执行SQL语句
* execute:用于执行查询语句和更新语句
* executeUpdate:用于执行更新语句,返回int,表示影响的行数
* executeQuery:用于执行查询语句,返回ResultSet
*/
Statement stmt = conn.createStatement();
ResultSet srs = stmt.executeQuery(sql);
while(srs.next()) {
System.out.println(srs.getString(2));
}
//将id为14号的username修改为Alice001
String sqlup = "update user set username='Alice001' where id=14";
int i = stmt.executeUpdate(sqlup);
System.out.println(i);
} catch (Exception e) {
e.printStackTrace();
}
}
}
sql文件
/*
Navicat MySQL Data Transfer
Source Server : MySQL
Source Server Version : 50617
Source Host : localhost:3306
Source Database : javaee_day17
Target Server Type : MYSQL
Target Server Version : 50617
File Encoding : 65001
Date: 2019-09-26 10:47:34
*/
SET FOREIGN_KEY_CHECKS=0;
-- ----------------------------
-- Table structure for user
-- ----------------------------
DROP TABLE IF EXISTS `user`;
CREATE TABLE `user` (
`id` int(11) NOT NULL AUTO_INCREMENT,
`username` varchar(25) NOT NULL,
`password` varchar(25) NOT NULL,
`state` int(2) DEFAULT '0' COMMENT '状态为0正常,状态为1被封号',
PRIMARY KEY (`id`)
) ENGINE=InnoDB AUTO_INCREMENT=15 DEFAULT CHARSET=utf8;
-- ----------------------------
-- Records of user
-- ----------------------------
INSERT INTO `user` VALUES ('1', 'admin', '123456', '0');
INSERT INTO `user` VALUES ('2', 'chtw2329@163.com', '123456', '1');
INSERT INTO `user` VALUES ('14', 'admin1', '123456', '0');
ResultSet
执行给定的 SQL 语句,该语句返回表中记录的结果集 对象。可以对ResultSet结果集进行遍历。对象具有指向其当前数据行的指针。最初,指针被置于第一行之前。next 方法将指针移动到下一行
ResultSet记录集指针的属性(next、last、after)
通过next()方法判断ResultSet中是否有数据
使用 getXXX 方法检索数据
getInt() 用于检索整型值
getString() 用于检索字符串值
PreparedStatement接口继承自Statement,与Statement相比,PreparedStatement增加了在执行SQL调用之前,将输入参数绑定到SQL调用中的功能。
package com.chtw.test;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.Statement;
public class JDBCTest {
public static void main(String[] args) {
try {
//加载驱动程序类DriverManager
Class.forName("com.mysql.jdbc.Driver");
//获取连接
/**
* getConnection(url,username,password)
* url:jdbc:mysql://127.0.0.1:3306/javaee_day17
* username:password
* password:数据库密码
*/
Connection conn = DriverManager.getConnection("jdbc:mysql://127.0.0.1:3306/javaee_day17","root","1728aceAB7");
//PreparedStatement方式
String sql1 = "select * from user where id = ?";
PreparedStatement ps = conn.prepareStatement(sql1);
//set设置参数
ps.setInt(1, 2);
ResultSet rs = ps.executeQuery();
while(rs.next()) {
System.out.println(rs.getString(2));
}
} catch (Exception e) {
e.printStackTrace();
}
}
}
本人联系方式2329095893,欢迎各位进行学习讨论
欢迎关注熊熊出没ING公众号,不定时跟新Java、python、信息安全等相关知识哦。



670

被折叠的 条评论
为什么被折叠?



