JDBC入门讲解

什么是JDBC?
JDBC: Java DataBase Connectivity 的缩写。Java数据库连接操作。JDBC是Java的操作数据库的接口。就是Java操作数据库的一套规范:

在这里插入图片描述
在这里插入图片描述
为什么会有JDBC?
由于各个数据库的差异性,所以对数据库进行操作,需要大量的开发工作,基于这样的情况,指定数据库操作规范,这套规范,便于Java开发者进行数据库操作,且可以屏蔽数据的差异性,提高了Java程序的维护性。

如何使用JDBC?
Connection 管理连接
Statement 管理指令
PraperStatement
ResultSet 管理数据结果
ResetSetMateData 结果中的元信息

1. JDBC的使用步骤
在这里插入图片描述

  1. 根据IP端口、账户信息创建数据库连接,创建连接对象
    数据库连接,不同的数据库存在不同的差异,JDBC本身不具备创建连接能力。根据数据库类型、版本引入相关的数据库厂商提供操作数据库的具体的实现API(驱动程序)。
    根据IP、认证信息创建连接。
  2. 定义指令、根据连接创建相应的指令对象、发送指令
    在数据库规范中,规定数据库操作的统一指令,使用SQL指令。定义SQL执行。
    创建指令操作对象,发送指令
  3. 接收返回的数据信息
    代码示例:
package com.demo01;

import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.ResultSetMetaData;

/**
 * @ClassName: JdbcDemo01 
 * @Description: Jdbc数据库操作示例
 * @author: james
 * @date: 2020年7月12日 上午
 */
public class JdbcDemo01 {
	//数据库连接地址 : ip : 端口 /数据库 ?附属信息---> 数据库软件 ---> 数据库
	//服务器时区  数据的字符集 连接安全认证 附属信息
	private static String url = "jdbc:mysql://127.0.0.1:3306/ld-stmng?useUnicode=true&characterEncoding=utf8&useSSL=true";
	//数据库的用户信息
	private static String user = "root";
	//数据库密码
	private static String password = "root";
	
	
	public static void main(String[] args) throws Exception {
		//1.引入第三方的数据库相关 jar包
		//加载驱动:在JDK8 之后 Java程序中已经不需要这一步
		//JDK环境会根据url进行自动的适配
		//在Javaweb项目中需要加载驱动这个代码
		Class.forName("com.mysql.jdbc.Driver");
		//2.创建连接
			//安全认证
		Connection connection = DriverManager.getConnection(url, user, password);
		//3.创建指令对象
			//1.sql指令
		String sql = "select id,name,age,sex,classes_id as cId from student";
			//2.指令对象
		PreparedStatement statement = connection.prepareStatement(sql);
		//4.数据结果集
		ResultSet rs = statement.executeQuery();
		//在结果集中  默认的数据指针其实数据元信息哪行
		//数据元信息  注意: 数据元信息进行了封装 跟数据指针没有必然关系
		ResultSetMetaData metaData = rs.getMetaData();
		//数据部分
		//数据部分需要移动数据指针 next() 向下移动
		//返回值 向下移动是否成功  如果成功 则数据指针在下一行 
		//如果失败 说明没有下一行 当前行是最后一行
		boolean next = rs.next();
		//判断指针
		if(next) {
			//columnName  列名
			//columnLabel 列的标签名 
			//columnIndex 列的索引  列的索引从1 开始
			Object id = rs.getObject(1);//id
			String name = rs.getString(2);//根据列索引 获取指定的类型
			int age = rs.getInt("age");//根据列别名获取
			String sex = rs.getString("sex");//根据列别名获取指定类型
			//班级ID  列名:classes_id 列别名: cId
			//int classesId = rs.getInt("classes_id");//根据列名获取
			int cId = rs.getInt("cId");//根据列别名获取
			
			System.out.println(id +"  "+name +" "+age + "  "+sex +"   "+cId);
		}
		//5.释放资源
		rs.close();
		statement.close();
		connection.close();
	}
}

2.列名和列标签名

接收数据库的操作结果。
在这里插入图片描述
注意:默认的列的标签名和列名一致。

3.JDBC元信息

package com.demo01;

import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.ResultSetMetaData;
import java.sql.SQLException;

import com.bjsxt.util.JdbcUtil;

/**
 * @ClassName: JdbcDemo02 
 * @Description: 数据元信息
 * @author: james
 * @date: 2020年7月12日 上午
 */
public class JdbcDemo02 {
	
	public static void main(String[] args) {
		//获取连接
		Connection conn = JdbcUtil.getConnection();
		//创建指令对象
		//1.定义指令
		String sql = "select id,name,age,sex,classes_id as cId from student";
		//2.创建指令对象
		PreparedStatement prep = null;
		//3.接收查询结果
		ResultSet rs = null;
		try {
			prep = conn.prepareStatement(sql);
			//接收查询结果
			rs = prep.executeQuery();
			//获取数据元信息 : 列名  列别名  列类型  
			ResultSetMetaData  metaData = rs.getMetaData();
			//获取结果中列个数
			int columnCount = metaData.getColumnCount();
			System.out.println("列个数:" + columnCount); //5
			//根据列索引 获取列名称  索引值从 1 开始
			String columnName1 = metaData.getColumnName(1);
			String columnName5 = metaData.getColumnName(5);
			System.out.println("列1  名称:"+columnName1);//id
			System.out.println("列5  名称:"+columnName5);//classes_id
			String columnLabel1 = metaData.getColumnLabel(1);//id
			String columnLabel2 = metaData.getColumnLabel(5);//cId
			System.out.println("列1  别名:"+columnLabel1);
			System.out.println("列5  别名:"+columnLabel2);
			//列类型
			int columnType = metaData.getColumnType(1);
			//类型在Java中对应的类型的类名称
			String columnClassName = metaData.getColumnClassName(1);
			System.out.println(columnType +"   "+ columnClassName);
		} catch (SQLException e) {
			e.printStackTrace();
		}finally {
			JdbcUtil.close(conn, prep, rs);
		}	
	}
}

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值