2、JDBC详解以及优化

一、详解每一个类和接口

1、DriverManager(类)
		相关方法
		【1】注册驱动
			Class.forName("com.mysql.jdbc.Driver");
			注意事项:
			Drive中有静态代码块,在静态代码块中注册了mysql驱动----->DriverManager.registerDriver(new Driver());
		mysql5.5之后可以省略不写此段代码,默认去META-INF/services/java.sql.Driver文件中去第一行代码
	【2】获取数据库连接方法
		Connection connection = DriverManager.getConnection("jdbc:mysql://localhost:3306/db1", "root", "root");
	注意事项:
		【1】中文乱码问题:在后面加上参数:characterEncodeing=UTF-8
		【2】url的简写
				jdbc:mysql:///db1
				这里省略的是:127.0.0.1 端口号默认3306

2、Connection(接口)
相关方法
【1】获取数据库语句的执行对象
	Statement createStatement()
	创建一个Statement对象来将Sql语句发送数据库中
【2】在JDBC中,事务是由Connection接口管理的(面试题)
		事务的三大操作:
		开启事务:
		mysql:start transaction
		Connection: void setAutoCommit(boolean autoCommit)  
		提交操作:
		相同
		回滚操作:
		相同
3、Statement接口
	相关方法
	【1】int executeUpdate(String sql)  
	执行给定 SQL 语句,该语句可能为 INSERT、UPDATE 或 DELETE 语句,或者不返回任何内容的 SQL 语句(如 SQL DDL 语句)。 
	 【2】ResultSet executeQuery(String sql)
	执行给定的 SQL 语句,该语句返回单个 ResultSet 对象。
4、ResultSet
功能:表示数据库结果集的数据表,通常通过执行查询数据表的语句生成
		相关方法:
		【1】获取行的方法
		boolean next() 将光标从当前位置向前移一行
		【2】确定列的方法
		getXxx(列号或列名)
		【3】释放resultset资源

二、使用try/catch的方式处理异常

/*
* 使用异常处理JDBC代码
*
* */
public class Demo3 {
    public static void main(String[] args) {
        Connection connection = null;
        Statement statement = null;
        try {
            //注册mysql驱动
            Class.forName("com.mysql.jdbc.Driver");
            //获取数据库连接对象
            connection = DriverManager.getConnection("jdbc:mysql://127.0.0.1:3306/db1", "root", "123456");
            //获取数据库语句的执行对象
           statement = connection.createStatement();
            //定义sql语句
            String sql = "insert into stu values(1,'zhangsan',13)";
            //执行sql语句
            int i = statement.executeUpdate(sql);
            System.out.println(i);
        } catch (ClassNotFoundException | SQLException e) {
            e.printStackTrace();
        }finally {
            try {
                if (null != statement) {
                    statement.close();
                }
            } catch (SQLException e) {
                e.printStackTrace();
            }
            try {
                if (null != connection) {
                    connection.close();
                }
            } catch (SQLException e) {
                e.printStackTrace();
            }
        }
    }
}

扩展

为什么要区分编译期异常和运行期异常(异常的设计理念)?
	主要针对不同的角色而言的
		1、运行期异常
			主要针对用户,   运行期异常是由于用户提供了不合法的数据导致的,
		2、编译器异常
			主要针对开发人员,编译期异常是有红色波浪线。
			处理编译期异常有两种方式:throws和try/catch
			使用throwss是在运行时候还是可能会报错,因为我们没检查出来或者等待用户输入而且不一定能解决异常
			所以,我们一般都是用try/catch
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值