JDBC技术

本文详细介绍了如何通过Java的JDBC API连接到MySQL数据库,包括JDBC的概念、工作原理、主要功能,以及使用JDBC进行数据库连接、执行SQL语句和处理结果的步骤。内容涵盖从加载JDBC驱动、建立数据库连接、创建Statement对象、执行查询、处理ResultSet到释放资源的全过程。

JBBD操作数据库(一)

JDBC的概念:

为什么需要JDBC?
JDBC是Java连接数据库的简称,具有连接多种数据库的能力

JDBC驱动由数据库厂商提供

·在个人开发与测试中,可以使用JDBC-ODBC桥连接方式
·在生产型开发中,推荐使用纯Java驱动方式

在这里插入图片描述
在本节中,我们只讲纯Java驱动方式:

·由JDBC驱动直接访问数据库
·优点:完全Java代码,快速、跨平台
·缺点:访问不同的数据库需要下载专用的JDBC驱动

JDBC的工作原理:
JDBC工作原理图

  • JDBC API

     ·提供者:SUN公司
     ·内容:供使用者调用的接口和类,集成在java.sql和javax.sql包中
     ·DriverManager类
     ·Connection接口
     ·Statement接口
     ·ResultSet接口
    
  • JDBC API主要功能:

     与数据库建立连接,执行SQL语句、处理结果
    

工作原理

  • DriverManager:依据数据库的不同,管理JDBC驱动
  • Connection:负责连接数据库并且担任传送数据的任务
  • Statement:由Connection产生,负责执行SQL语句
  • ResultSet:负责保存Statement执行后产生的查询结果

运行模式如下:
运行模式
使用jdbc连接数据库的步骤:

  • (1) 点击项目名,右键new —> floder---->lib
  • (2) 将Mysql的驱动jar包复制到lib文件夹中
  • (3) 点击lib文件夹中的mysql jar包,右键build path—>add to build path,表示将jar包添加到项目中
  • (4) 创建测试类以及main方法
  • (5) 然后以上都是准备工作
  • (6) 从这一步开始使用jdbc技术连接数据库
  1. 加载驱动
try {
	Class.forName("com.mysql.jdbc.Driver");
} catch (ClassNotFoundException e) {
	// TODO Auto-generated catch block
	e.printStackTrace();
}
//这里需要手动向下抛出异常
//创建集合,用于存储从表中查询到的所有的学生对象信息
List<Student>listAll=new ArrayList<Student>();
  1. 获取数据库连接
String url = "jdbc:mysql://localhost:3306/myschool";	//连接字符串
String user = "root";		//用户名
String pwd = "root";		//密码
try {
	//获得数据库连接对象
	Connection conn = DriverManager.getConnection(url, user, pwd);
	if (conn != null) {
		System.out.println("连接成功");
	}
} catch (SQLException e) {
	// TODO Auto-generated catch block
	e.printStackTrace();
}
  1. 写SQL语句,使用Statement接口执行sql语句
String sql="SELECT id,name,sex,brith,department,address FROM student;";
Statement stmt=conn.createStatement();
  1. 接收返回的结果集
ResultSet rs=stmt.executeQuery(sql);
  1. 处理返回的结果集
while (rs.next()) {
//以int形式获取结果集中列名为id的值
int id=rs.getInt("id");
String name=rs.getString("name");
String sex=rs.getString("sex");
String brith=rs.getString("brith");
String department=rs.getString("department");
String address=rs.getString("address");				

Student stu=new Student(id, name, sex, brith, department, address);
//将每一个学生对象添加到集合中
listAll.add(stu);
			}
  1. 释放资源
rs.close();
stmt.close();
conn.close();

最后在try…cath语句外面执行循环遍历集合对象即可

完整代码如下:

public static void main(String[] args) {
	// TODO Auto-generated method stub
	//1.加载驱动
	try {
		Class.forName("com.mysql.jdbc.Driver");
	} catch (ClassNotFoundException e) {
		// TODO Auto-generated catch block
		e.printStackTrace();
	}
	//2.建立数据库的连接
	try {
		Connection conn=DriverManager.getConnection("jdbc:mysql://localhost:3306/school", "root", "admin");
		if(conn!=null){
			System.out.println("连接成功");
		}
		//3.写sql语句,创建statement对象,执行sql语句
		String sql="SELECT id,name,sex,brith,department,address FROM student;";
		Statement stmt=conn.createStatement();
		//4.接收返回的(查询)结果集
		ResultSet rs=stmt.executeQuery(sql);
		//5.处理返回的(查询)结果集
		while (rs.next()) {
			//以int形式获取结果集中列名为id的值
			int id=rs.getInt("id");
			String name=rs.getString("name");
			String sex=rs.getString("sex");
			String brith=rs.getString("brith");
			String department=rs.getString("department");
			String address=rs.getString("address");				
			
			Student stu=new Student(id, name, sex, brith, department, address);
			//将每一个学生对象添加到集合中
			listAll.add(stu);
		}
		//6.释放资源
		rs.close();
		stmt.close();
		conn.close();
	} catch (SQLException e) {
		// TODO Auto-generated catch block
		e.printStackTrace();
	}
	//循环遍历集合信息
	for (Student student : listAll) {
		System.out.println(student.toString());
	}
}
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值