导入jar包(丰富的工具类)
获取和数据库的连接(用户名、密码)
通过程序执行SQL
通过程序处理结果
1、首先加载驱动文件
2、创建连接对象
Connection 对象名 = DriverManager.getConnection( "jdbc:mysql://连接地址:接口/库名?charcaterEncoding=编码", "账户","密码");
Class.forName("com.mysql.jdbc.Driver");//加载驱动文件 Connection conn = DriverManager.getConnection(//创建连接对象 "jdbc:mysql://localhost:3306/jt_db?charcaterEncoding=utf-8", "root","root");
3、创建传输器对象
Statement 对象名 = conn.createStatement();
Statement stat = conn.createStatement();
4、编写sql语句
String sql= "select * from stu2";
5、创建结果集对象并通过传输器发送sql语句
执行查询时使用executeQuery,,执行修改的时候使用executeUpdate
ResultSet rs = stat.executeQuery(sql);
6、遍历结果(查询时)
使用get获取对应列的数据
while (rs.next()){ //next:判断是否有下一条记录,内部包含一个指针,默认指向第一条, //取出每一条记录 int id = rs.getInt("id"); String name = rs.getString("name"); String gender = rs.getString("gender"); System.out.println(id+"--"+name+"--"+gender); }
create table account(
id int primary key auto_increment,
name varchar(50),
money double
);
insert into account values(null, 'tom', 1000);
insert into account values(null, 'andy', 1000);
insert into account values(null, 'tony', 1000);
package com.tedu.jdbc;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.ResultSet;
import java.sql.Statement;
/**
* @author
* @data 2021/12/2 20:45
*/
public class TestJDBC {
//书写main方法 psvm
public static void main(String[] args) throws Exception {
//1.注册驱动
/**
* Class.forName 创建指定的全路径文件的字节码文件对象
* 此处并不是因为要是用反射来完成某些功能,
* 只是为了加载这个文件而已,为了执行这句代码
* DriverManager.registerDriver(new Driver());
* 自动注册驱动
* alt+enter 自动提示
*/
Class.forName("com.mysql.jdbc.Driver");
//2.获取和数据库的连接
/**
* CMD登录数据库:
* mysql -uroot -proot
* use cgb2109
* JDBC连接数据库:
* String url=
* "jdbc:mysql://访问数据库的ip:端口号/要访问的数据库名?characterEncoding=utf-8"
* 如果访问的数据库的ip和端口号是localhost:3306的话,可以省略
*/
String url=
"jdbc:mysql:///cgb2109?characterEncoding=utf-8";//指定连接哪个数据库
String user="root";//用户名
String pwd="root";//密码 要和自己的密码一致
//快速生成变量名 crtl+alt+v
Connection conn = DriverManager.getConnection(url, user, pwd);
//3.获取传输器,执行SQL
/**
* java程序-------------MYSQL
* 负责程序和数据库信息连接的
* 1.程序传递给数据库的内容,比如要插入一条记录
* 2.数据库返回给程序的内容,比如查询的记录信息
* 传输器对象必须要依赖于连接对象创建
*/
Statement stat = conn.createStatement();
//4.执行SQL
/**
* 执行查询的SQL,需要调用executeQuery方法
* 如果执行修改的SQL,需要调用executeUpdate
*/
String sql="select * from stu";
//ResultSet 包含了执行SQL后,返回的所有的信息
ResultSet rs = stat.executeQuery(sql);
//5.输出结果,但是需要手动处理结果集对象
//System.out.println(rs);com.mysql.jdbc.JDBC4ResultSet@6433a2
/**
* next 判断是否有下一条记录
* next内部包含一个指针,默认指向第一条记录之前
* 每次循环都判断是否有下一条记录,如果有就返回true,执行循环
* 然后指针下移到下一条,然后就可以取出指针指向的这条记录,
* 直到指针移到最后一条记录,在判断,返回false,循环结束
*/
while (rs.next()){
//取出每一条记录
//1表示这张结果集中的第一列
int id = rs.getInt("id");//id这一列
String name = rs.getString(2);//第二列
String gender = rs.getString(3);
System.out.println("id:"+id+"|name:"+name+"|gender:"+gender);
}
//6.释放资源
/**
* 需要释放三个资源,conn,stat,rs
* 越晚创建的对象越先释放
* 每个对象都是依赖于上一个对象创建的,所以如果直接提前关闭conn,
* 很可能会导致创建stat时没有对象,就会报空指针异常
*/
rs.close();
stat.close();
conn.close();
//输出一句话到控制台 sout
//System.out.println("连接成功");
}
}