java-MySQL之JDBC连接及常见JDBC出现的错误

11 篇文章 0 订阅

jDBC:一套Java提供的接口,共各大数据库厂商实现
JDBC步骤:
0。准备,导包
1.加载驱动,获取连接对象
2. 执行sql语句
3. 操作执行结果/解析结果集
4.关闭资源,先开后关的原则

package com.hadwinling.day01;

import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement;



/*
 * 演示jDBC的基本操作
 */

public class JDBCDemo01 {
	public static void main(String[] args) {
		Connection connection = null;
		Statement statement = null;
		ResultSet resultSet = null;
		try {
			//1.加载驱动,这个驱动在com.mysql.jdbc下Driver
			Class.forName("com.mysql.cj.jdbc.Driver");
			//2.获取连接对象
			//getConnection(url, user, password):url是数据库的地址,数据库的账户,数据库的密码
			//UTC:世界标准时间,0时区
//			**java.sql.SQLException: The server time zone value这个报错是要我们指定一个时区
//			解决办法:
//			serverTimezone:在设定时区的时候,如果设定 serverTimezone=UTC,
//			会比中国时间早 8 个小时,如果在中国,可以选择 Asia/Shanghai 
//			或 者 Asia/Hongkong,例如: serverTimezone=Shanghai
			//如果出现中文乱码,可以url在后面添加?characterEncoding=utf8
			//如果出现useSSL的错误,也是在url后面添加?useSSL = false;**
			//在url后面多个参数之间用&连接
			 connection =  DriverManager.getConnection("jdbc:mysql://localhost:3306/homeworkonline?serverTimezone = UTC ", "root", "root");
			//3. 执行sql语句
			String sql = "select empno ,ename ,sal,deptno from emp";
			//获取Statement对象,
			statement = connection.createStatement();
			//statement去执行sql语句
			//查询executeQuery();返回的是结果集对象(ResultSet),
			//execute();返回结果是boolean 即true/false
			resultSet = statement.executeQuery(sql);
			//4.解析查询结果集,
			//使用resultset的方法:next():是用来判断是否有结果集,如果查询到数据,返回true
			while(resultSet.next()) {
				//获取当前行记录的列
//				resultSet.getInt(columnIndex);//通过列索引来获取列值,从1开始,在结果集中的索引
//				resultSet.getInt(columnLabel);//通过列名称获取对应的列值
				/**
				 * 这里是通过列索引
				 */
//				int empno = resultSet.getInt(1);
//				String ename = resultSet.getString(2);
//				Double sal = resultSet.getDouble(3);
//				int deptno = resultSet.getInt(4);
//				System.out.println(empno+"\t"+ename +"\t"+sal+"\t"+deptno);
				/*
				 * 这里是通过对应的列名称
				 */
				int empno = resultSet.getInt("empno");
				String ename = resultSet.getString("ename");
				Double sal = resultSet.getDouble("sal");
				int deptno = resultSet.getInt("deptno");
				System.out.println(empno+"\t"+ename +"\t"+sal+"\t"+deptno);
			}
		} catch (ClassNotFoundException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		} catch (SQLException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}finally {
			//5.关闭资源 先开后关
			if(resultSet!=null) {
				try {
					resultSet.close();
				} catch (SQLException e) {
					// TODO Auto-generated catch block
					e.printStackTrace();
				}
			}
			if(statement!=null) {
				try {
					statement.close();
				} catch (SQLException e) {
					// TODO Auto-generated catch block
					e.printStackTrace();
				}
			}
			if(connection!=null) {
				try {
					connection.close();
				} catch (SQLException e) {
					// TODO Auto-generated catch block
					e.printStackTrace();
				}
			}
			
		}
	}
}

  1. java.sql.SQLException: The server time zone value这个报错是要我们指定一个时区
    解决办法:
    serverTimezone:在设定时区的时候,如果设定 serverTimezone=UTC,
    比中国时间早 8 个小时,如果在中国,可以选择Asia/Shanghai 或 者 Asia/Hongkong,例如: serverTimezone=Shanghai
  2. 如果出现中文乱码,可以url在后面添加?characterEncoding=utf8
  3. 如果出现useSSL的错误,也是在url后面添加?useSSL = false;
  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值