在学习Java的过程中我们必然会接触到JDBC的使用,我也和大家一样,刚开始学习JDBC,JDBC虽然很少使用,但是将来学习的大多操作也是对JDBC代码的封装而已。
此篇文章用于记录初学JDBC的一些坑和知识。
使用工具——IDEA2019、MySQL8.0.19
第一步,你需要按照惯例,创建一个Java程序。
第二步,我们在这个类里新建一个方法,暂时命名它为getCon();
public static void getCon(){}
第三步,在getCon方法里完成四个步骤:注册驱动——建立连接——创建语句——执行语句——处理结果。
我们先来看看如何注册驱动:
关于MySQL的jar包导入请看:查看CSDN博客
注册驱动有很多种方法,我们这里选择Class类的这种方法
Class.forName("com.mysql.cj.jdbc.Driver");
如果你使用的是MySQL5.0系列的版本,forName();中内容改为
com.mysql.jdbc.Driver
下面是创建连接
//设置数据库的地址 支持汉字 设置编码
String url = "jdbc:mysql://localhost:3306/1.3test?useUnicode=true&characterEncoding=utf8&serverTimezone=GMT%2B8&useSSL=false";
//url格式:JDBC:子协议:子名称(mysql无子名称)//主机名:端口号/数据库名?属性名=属性值&……
//jdbc:mysql:///mysql111意为本机的数据库名为mysql111
String user="root";//用户名
String password = "root123";//用户密码
//一般JDBC和数据库不在一台电脑上,所以这里的localhost:3306就是根据TCP/IP协议来连接数据库的地址,只不过这里的localhost是本机地址而已。
//最后把这三个参数传入函数getConnection();
Connection conn = DriverManager.getConnection(url, user, password);
下面是创建语句
//创建语句
Statement st = conn.createStatement();
下面是执行一个SQL语句(这里建议先写查询测试)
//执行语句
ResultSet rs = st.executeQuery("SELECT * from `s`");
最后,处理查询出来的结果
while(rs.next()){//也可以用列名如getObject("SNAME");//getObject(n);n为列数(n从1开始而非0开始),getObject(n);中Object应该和数据库表对应列相关
System.out.println("S#="+rs.getObject("S#"));
System.out.println("SNAME="+rs.getObject("SNAME"));
System.out.println("SEX="+rs.getObject("SEX"));
System.out.println("AGE="+rs.getObject("AGE"));
System.out.println("D#="+rs.getObject("D#"));
System.out.println("-------");
}
//释放资源//注意顺序从后到前
rs.close();//必关
st.close();//必关
conn.close();//必关
注意最后注释“必关”的三句代码,是释放刚刚申请的资源的,也是必须有的。
然后就可以调用了。
public class Demo01 {
public static void main(String[] args) {
getCon();
}
}
下面是完整代码(try/catch部分因为整体才能体现,所以未在上面指出)
package com.wz.www;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.ResultSet;
import java.sql.Statement;
/**
* 我的第一个JDBC程序
*/
public class Demo01 {
public static void main(String[] args) {
getCon();
}
public static void getCon(){
try {
//注册驱动
Class.forName("com.mysql.cj.jdbc.Driver");
//建立连接
//1.3test是数据库名,而mysql111是连接名
String url = "jdbc:mysql://localhost:3306/1.3test?useUnicode=true&characterEncoding=utf8&serverTimezone=GMT%2B8&useSSL=false";//设置数据库的地址 支持汉字 设置编码
//url格式:JDBC:子协议:子名称(mysql无子名称)//主机名:端口号/数据库名?属性名=属性值&……
//jdbc:mysql:///mysql111。意为本机的数据库mysql111
String user="root";//用户名
String password = "root123";//用户密码
//一般JDBC和数据库不在一台电脑上,所以这里的localhost:3306就是根据TCP/IP协议来连接数据库的地址,只不过这里的localhost是本机地址而已。
Connection conn = DriverManager.getConnection(url, user, password);//使用mysql驱动当中的连接数据库的API//尽量晚的去做这一步,用于减轻数据库负担
//创建语句
Statement st = conn.createStatement();
//执行语句
ResultSet rs = st.executeQuery("SELECT * from `s`");
//处理结果
while(rs.next()){
//也可以用列名如getObject("SNAME");//getObject(n);n为列数(n从1开始而非0开始),getObject(n);中Object应该和数据库表对应列相关
System.out.println("S#="+rs.getObject("S#"));
System.out.println("SNAME="+rs.getObject("SNAME"));
System.out.println("SEX="+rs.getObject("SEX"));
System.out.println("AGE="+rs.getObject("AGE"));
System.out.println("D#="+rs.getObject("D#"));
System.out.println("-------");
}
//释放资源//注意顺序从后到前
rs.close();//必关
st.close();//必关
conn.close();//必关
}
catch(Exception e) {
e.printStackTrace();//异常处理
}
}
}