注:这篇博客是一个不断抽取代码,完善一个小体系的过程。随着文章的进行,代码会逐渐规范,并不断引入一些概念。最终形成一个设计模式。
来源:笔记主要摘自网易云课堂撩课学院
模块一:JDBC基本使用
一、JDBC概述
官方的说,
JDBC就是一种用于执行sql语句的Java API,
它由一组用于Java语言编写的类和接口组成,
JDBC提供了一组操作数据的标准
JDBC的目标是使Java程序员使用JDBC可以连接任何提供了JDBC驱动程序的数据库系统(Oracle、Mysql、SQL server等)。
(总体学习完会对这个概念有进一步的理解)。
二、连接Mysql
准备工作:在mysql的图形化界面Navicat Premium里面创建一个数据库叫jdbc_db,在里面创建两张表一个叫student
一个叫user
连接Mysql分为这么几部:
a、添加驱动 b、创建连接 c、操作Mysql创建表 d、异常处理
a、添加驱动:
http://central.maven.org/maven2/mysql/mysql-connector-java/
这个网址里可以下载各个版本的connector jar包
下好了之后,在工程目录下创建一个文件夹叫libs,把jar包复制到这个libs文件夹里面,然后,选择File-ProjectStructure,跳出了一个框之后选择Modules,再选择右边的加号,点击第一个jar,又弹出了一个框,选择当前工程的libs文件夹找到刚才复制进去的connector jar包,点击apply,ok。
可能我说的并不清楚,可以参照这个博客:https://blog.csdn.net/u012075383/article/details/78254482
像这样,驱动添加完成。
b、创建连接
分为两部:加载驱动和获取连接对象
加载驱动:把com.mysql.jdbc.Driver这份字节码加载到JVM
Class.forName("com.mysql.jdbc.Driver");
获取连接对象:
需要三个东西:数据库地址、用户名、密码
String url = "jdbc:mysql://localhost:3306/jdbc_db?serverTimezone=GMT%2B8";
String user = "root";
String password="123456";
Connection conn = DriverManager.getConnection(url,user,password);
三、执行DDL和DML操作(使用executeUpdate)
c、操作Mysql创建表
做完前面两部之后就该创建要执行的sql语句了。使用Statement接口来执行静态SQL语句对象。学习了数据库应该知道sql功能分类有:DDL(数据定义语言)、DML(数据操作语言)、DQL(数据查询语言)、DCL(数据控制语言)。接下来就是要把sql语句发送到数据库去执行,并返回执行的结果,对于DQL返回查询的结果集,对于DML返回受影响的行数,对于DDL返回0。
executeUpdate(String)执行DML和DDL语句,executeQuery()执行DQL语句。执行sql语句。
最后,释放资源,撤管道。
以DDL为例(DML把sql语句改一下就行了)
//创建要执行的sql语句
String sql = "create table newstu(id int,name varchar(50),age int)";
Statement st = conn.createStatement();
//执行sql语句
int row = st.executeUpdate(sql);
//释放资源
st.close();
conn.close();
d、异常处理
综合a,b,c三步加上异常处理得出以下的代码
public class test {
private static String url = "jdbc:mysql://localhost:3306/jdbc_db?serverTimezone=GMT%2B8";
private static String user = "root";
private static String password="123456";
private static Connection conn = null;
private static Statement st = null;
public static void main(String[] args){
try{
//1、加载驱动
Class.forName("com.mysql.jdbc.Driver");
//2、连接数据库
conn = DriverManager.getConnection(url,user,password);
//3、创建要执行的sql语句
String sql = "create table newstu(id int,name varchar(50),age int)";
st = conn.createStatement();
//4、执行sql语句
int row = st.executeUpdate(sql);
}catch (Exception e){
//5、释放数据资源
try{
if(st!=null){
st.close();
}
}catch(SQLException e1){
e1.printStackTrace();
}
try{
if(conn!=null){
conn.close();
}
}catch (SQLException e1){
e1.printStackTrace();
}
}
}
}
四、执行DQL操作(使用executeQuery)
因为执行DQL语句返回的是一个结果集,所以我们引入结果集的概念。
ResultSet表示数据库查询的结果的集合,在执行查询语句时就会得到一个这样的结果
常用方法:
boolean next():判断是否有下一行数据,若有,则向下移动一行指针.
getXxx(int columnIndex):获取当前行中,第几列.(从1开始):不推荐
getXxx(String columnName):获取当前行中的,指定列名的列的值.columnName是列名/列的别名
若列的类型是VARCHAR/CHAR/TEXT,都使用getString来获取列的值.
若列的类型是int/integer/-->getInt来获取列的值.
例1:
String sql = "select count(*) from student";
Statement st = conn.createStatement();
ResultSet res = st.