JDBC学习总结

这篇博客总结了JDBC的基本使用,包括JDBC概述、连接Mysql、执行DDL和DML/DQL操作,以及DAO设计规范。文章还介绍了预编译语句的重要性和使用方法,强调了代码重构以提高效率,提出了DAO设计规范,如接口定义和实现,以及如何通过JDBCUtil工具类优化资源管理。
摘要由CSDN通过智能技术生成

注:这篇博客是一个不断抽取代码,完善一个小体系的过程。随着文章的进行,代码会逐渐规范,并不断引入一些概念。最终形成一个设计模式。

来源:笔记主要摘自网易云课堂撩课学院

模块一:JDBC基本使用

一、JDBC概述

官方的说,

JDBC就是一种用于执行sql语句的Java API,

它由一组用于Java语言编写的类和接口组成,

JDBC提供了一组操作数据的标准

JDBC的目标是使Java程序员使用JDBC可以连接任何提供了JDBC驱动程序的数据库系统(Oracle、Mysql、SQL server等)。

(总体学习完会对这个概念有进一步的理解)。

二、连接Mysql

准备工作:在mysql的图形化界面Navicat Premium里面创建一个数据库叫jdbc_db,在里面创建两张表一个叫student

一个叫user

连接Mysql分为这么几部:

a、添加驱动    b、创建连接  c、操作Mysql创建表   d、异常处理

a、添加驱动:

http://central.maven.org/maven2/mysql/mysql-connector-java/ 

这个网址里可以下载各个版本的connector jar包

下好了之后,在工程目录下创建一个文件夹叫libs,把jar包复制到这个libs文件夹里面,然后,选择File-ProjectStructure,跳出了一个框之后选择Modules,再选择右边的加号,点击第一个jar,又弹出了一个框,选择当前工程的libs文件夹找到刚才复制进去的connector jar包,点击apply,ok。

可能我说的并不清楚,可以参照这个博客:https://blog.csdn.net/u012075383/article/details/78254482

像这样,驱动添加完成。

b、创建连接

分为两部:加载驱动和获取连接对象

加载驱动:把com.mysql.jdbc.Driver这份字节码加载到JVM

Class.forName("com.mysql.jdbc.Driver");

获取连接对象:

需要三个东西:数据库地址、用户名、密码

String url = "jdbc:mysql://localhost:3306/jdbc_db?serverTimezone=GMT%2B8";

String user = "root";

String password="123456";

Connection conn = DriverManager.getConnection(url,user,password);

三、执行DDL和DML操作(使用executeUpdate)

c、操作Mysql创建表

做完前面两部之后就该创建要执行的sql语句了。使用Statement接口来执行静态SQL语句对象。学习了数据库应该知道sql功能分类有:DDL(数据定义语言)、DML(数据操作语言)、DQL(数据查询语言)、DCL(数据控制语言)。接下来就是要把sql语句发送到数据库去执行,并返回执行的结果,对于DQL返回查询的结果集,对于DML返回受影响的行数,对于DDL返回0。

executeUpdate(String)执行DML和DDL语句,executeQuery()执行DQL语句。执行sql语句。

最后,释放资源,撤管道。

以DDL为例(DML把sql语句改一下就行了)

//创建要执行的sql语句

String sql = "create table newstu(id int,name varchar(50),age int)";

Statement st = conn.createStatement();

//执行sql语句

int row = st.executeUpdate(sql);

//释放资源

st.close();

conn.close();

d、异常处理

综合a,b,c三步加上异常处理得出以下的代码

public class test {
    private static String url = "jdbc:mysql://localhost:3306/jdbc_db?serverTimezone=GMT%2B8";
    private static String user = "root";
    private static String password="123456";
    private static Connection conn = null;
    private static Statement st = null;
    public static void main(String[] args){
        try{
            //1、加载驱动
            Class.forName("com.mysql.jdbc.Driver");
            //2、连接数据库
            conn = DriverManager.getConnection(url,user,password);
            //3、创建要执行的sql语句
            String sql = "create table newstu(id int,name varchar(50),age int)";
            st = conn.createStatement();
            //4、执行sql语句
            int row = st.executeUpdate(sql);
        }catch (Exception e){
            //5、释放数据资源
            try{
                if(st!=null){
                    st.close();
                }
            }catch(SQLException e1){
                e1.printStackTrace();
            }
            try{
                if(conn!=null){
                    conn.close();
                }
            }catch (SQLException e1){
                e1.printStackTrace();
            }
        }
        
    }
}

四、执行DQL操作(使用executeQuery)

因为执行DQL语句返回的是一个结果集,所以我们引入结果集的概念。

ResultSet表示数据库查询的结果的集合,在执行查询语句时就会得到一个这样的结果

常用方法:

boolean  next():判断是否有下一行数据,若有,则向下移动一行指针.

getXxx(int columnIndex):获取当前行中,第几列.(从1开始):不推荐

getXxx(String columnName):获取当前行中的,指定列名的列的值.columnName是列名/列的别名

若列的类型是VARCHAR/CHAR/TEXT,都使用getString来获取列的值.

若列的类型是int/integer/-->getInt来获取列的值.

例1:

String sql = "select count(*) from student";
Statement st = conn.createStatement();
ResultSet res = st.

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值