Java程序设计——JDBC访问数据库(JDBC编程)

目录

1.加载数据库驱动

2.建立数据库连接

3.创建Statement对象

4.执行SQL语句

5.访问结果集

6.关闭相关资源

7.演示


JDBC访问数据库的步骤:

  1. 加载数据库驱动
  2. 建立数据库连接
  3. 创建Statement对象
  4. 执行SQL语句
  5. 访问结果集

1.加载数据库驱动

Class.forName(数据库驱动名称)

以MySQL数据库为例:

5.0版本:

Class.forName("com.mysql.jdbc.Driver");

8.0版本:

Class.forName("com.mysql.cj.jdbc.Driver");

2.建立数据库连接

DriverManager.getConnection(String url, String user, String password)

url:数据库连接字符串

user:连接数据库的用户名

password:密码

//   1. 
Class.forName("com.mysql.cj.jdbc.Driver");

//   2. 
Connection con = DriverManager.getConnection(
"jdbc:mysql://localhost:3306/数据库名称", 
"root", 
"root")

3.创建Statement对象

通过Connection对象来获得Statement的三种方法:

Statement createStatement()创建一个基本的Statement对象
PreparedStatement preparedStatement(String sql)根据SQL语句创建一个预编译preparedStatement对象
CallbableStatement prepareCall(String sql)根据SQL语句创建一个CallableStatement对象,用于调用数据库的存储过程
//   1.
Class.forName("com.mysql.cj.jdbc.Driver");

//   2. 
Connection con = DriverManager.getConnection(
"jdbc:mysql://localhost:3306/数据库名称", 
"root", 
"root")

//   3. 
Statement stmt = con.createStatement()

4.执行SQL语句

执行SQL语句的三种方法:

boolean execute()可以执行任何SQL语句,返回结果为多个结果集或多个更新计数(不推荐)
ResultSet executeQuery()只能执行查询语句,产生单个结果集
int executeUpdate()

执行DML(INSERT...)和DDL(CREATE TABLE...)语句,返回结果为所影响的行数,

执行DDL语句时,返回值总为0

//   1. 
Class.forName("com.mysql.cj.jdbc.Driver");

//   2. 
Connection con = DriverManager.getConnection(
"jdbc:mysql://localhost:3306/数据库名称", 
"root", 
"root")

//   3. 
Statement stmt = con.createStatement()

//   4. 
String sql = "SELECT * FROM tb_student";    //  sql语句
ResultSet rs = stmt.executeQuery(sql);

5.访问结果集

通过使用ResultSet接口的getXXX()方法访问结果集中的数据

//   1.
Class.forName("com.mysql.cj.jdbc.Driver");

//   2.
Connection con = DriverManager.getConnection(
"jdbc:mysql://localhost:3306/数据库名称", 
"root", 
"root")

//   3. 
Statement stmt = con.createStatement()

//   4.
String sql = "SELECT * FROM tb_student";    //  sql语句
ResultSet rs = stmt.executeQuery(sql);

//   5.
while(rs.next()){
   int studentNo = rs.getInt(1); // 指定第几列 
   String studentName = rs.getString("studentName"); // 指定列名称
   System.out.println(studentNo + "---" + studentName);
}

6.关闭相关资源

数据库执行完毕之后,需要将数据库中的对象按顺序关闭

顺序如下:

  • 关闭结果集
  • 关闭Statement对象
  • 关闭连接
//   1.
Class.forName("com.mysql.cj.jdbc.Driver");

//   2.
Connection con = DriverManager.getConnection(
"jdbc:mysql://localhost:3306/数据库名称", 
"root", 
"root")

//   3. 
Statement stmt = con.createStatement()

//   4.
String sql = "SELECT * FROM tb_student";    //  sql语句
ResultSet rs = stmt.executeQuery(sql);

//  5.
while(rs.next()){
   int studentNo = rs.getInt(1); // 指定第几列 
   String studentName = rs.getString("studentName"); // 指定列名称
   System.out.println(studentNo + "---" + studentName);
}

//  6.
rs.close();
stmt.close();
con.close();

7.演示

数据表的数据:


import java.sql.*;
public class TestDemo {

public static void main(String[] args) {
	JDBCDemo jdbc = new JDBCDemo();
	}
}
		
class JDBCDemo{
    public JDBCDemo() {
    			
				try {
					//  1.
	    			Class.forName("com.mysql.cj.jdbc.Driver");

	    			//	2.
	    			Connection con = DriverManager.getConnection(
	    			"jdbc:mysql://localhost:3306/de?characterEncoding=gb2312&serverTimezone=UTC&useSSL=false", "root", "root");

	    			//	3.
	    			 Statement stmt = con.createStatement();
	    			 
	    			//	4.
	    			String sql = "SELECT * FROM tb_student";    //  sql语句
	     			ResultSet rs = stmt.executeQuery(sql); 
	    			 
	     			
	     			//	5.
	     			while(rs.next()){
	     			   int studentNo = rs.getInt(1); // 指定第几列 
	     			   String studentName = rs.getString("studentName"); // 指定列名称
	     			   System.out.println(studentNo + "---" + studentName);
	     			}
	             
	     			//  6.
	     			rs.close();
	     			stmt.close();
	     			con.close();
	     			
				} catch (SQLException | ClassNotFoundException e) {
					e.printStackTrace();
		    }
        }
 }

  • 3
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

来得晚一些也行

观众老爷,请赏~

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值