JDBC连接步骤

注册驱动

注册驱动的两种方法(mysql为例)

1、

//通过实例化对象,注册驱动
Driver  driver = new com.mysql.cj.jdbc.Driver();
DriverManager.resgisterDriver(dirver);

2、

//通过反射机制,注册驱动
Class.forName("com.mysql.cj.jdbc,Driver");

获取连接

//获取连接
//useSSL:如果服务器提供安全验证则需要修改为true
//mysql 8 的版本需要添加时区控制:serverTimezone=UTC
String url = "jdbc:mysql://IP地址:端口号/数据库名称?serverTimezone=UTC&useUnicode=true&characterEncoding=UTF-8&useSSL=false";
String username = "数据库登录用户名";
String password = "密码";
//conn是一个Connection类型的变量
Connection conn = DriverManager.getConnection(url,username,password);

获取操作sql的对象

数据库操作对象有Statement和PreparedStatement,前者执行的是完整的sql,后者可预编译含有占位符的sql,然后再进行传值


//获取操作sql的Statement对象
Statement stmt = conn.createStatement();
//获取操作sql的PreparedStatement对象
//这里的sql是含有占位符的sql
String sql = "delete from 表名称  where 列名=?";
PreparedStatement pstmt = conn.prepareStatement(sql);
//对占位符传值
//1、2、3.. 代表占位符索引,即第一个占位符,值  即需要传入的值
pstmt.setString(1,"值");

执行sql

这里已删除为例,通过Statement和PreparedStatement两的对象来执行sql

//通过Statement对象执行sql
String sql = "delete from 表名 where 列=值";
//获取返回值:被影响的行数
int count = stmt.executeUpdate(sql);
// 通过PreparedStatement对象执行sql
//获取返回值:被影响的行数
int count = pstmt.executeUpdate();

以Statement对象为例,处理查询sql

//这里sql以查询列名为例
String sql = "select 列1,列2 from 表 where 列=值";
//通过ResultSet集合,来接收查询返回结果集
ResultSet rst = stmt.executeQuery(sql);

处理结果集

处理上述返回的ResultSet结果集


//通过while循环打印
while(rst.next()){
String s1 = rst.getString("列1");//这个方法不管数据库存入是什么类型,都以String类型返回
String s2 = rst.getString("列2");
System.out.println("s1:"+s1+"  s2:"+s2);
}

关闭资源

//关闭资源遵循从小到大关闭
rst.close();
stmt.colse();
conn.colse();

一种例子的完整代码

public class JDBCTest{
public static void main(String[] args) throws Exception{

		Connection conn = null;
		Statement stmt = null;
		try {
			// 1、注册驱动
            //通过反射机制注册驱动
			Class.forName("com.mysql.cj.jdbc.Driver");// 不需要接收返回值,只需要这个动作发生
			
			// 2、获得连接
			String url = "jdbc:mysql://localhost:3306/jdbctest?serverTimezone=UTC&useUnicode=true&characterEncoding=UTF-8&useSSL=false";
			String username = "root";
			String password = "123456";
			conn = DriverManager.getConnection(url, username, password);
			System.out.println("获取链接成功:" + conn);
			
			// 3、获得操作sql的对象
			stmt = conn.createStatement();
			
			// 4、执行sql
			String sql = "select tnum,tname,tage,text from test_jdbc";

			// 5、处理结果集
			//获取结果集对象
			ResultSet rst = stmt.executeQuery(sql);
			//通过对象的next()方法判断,并循环打印输出
			while (rst.next()) {
			    //getString()方法也可以吧数据库中的数字类型一String类型输出
				int tnum = rst.getInt("tnum");//根据查询时的列名,来获取对应的值
				String tname = rst.getString("tname");
				int tage = rst.getInt("tage");
				String text = rst.getString("text");
				//通过拼接字符串,打印获取的数据
				System.out.println("tnum:" + tnum + "   tname:" + tname + "   tage:" + tage + "   text:" + text);
			}

		} catch (SQLException e) {
			e.printStackTrace();
		} finally {

			// 6、关闭资源
			try {
				if (rst != null) {
					rst.close();
					System.out.println("关闭rst!");
				}
			} catch (SQLException e) {
				e.printStackTrace();
			}
			try {
				if (stmt != null) {
					stmt.close();
					System.out.println("关闭stmt!");
				}
			} catch (SQLException e) {
				e.printStackTrace();
			}

			try {
				if (conn != null) {
					conn.close();
					System.out.println("关闭conn!");
				}
			} catch (SQLException e) {
				e.printStackTrace();
			}

		}
	
}
}
  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值