JDBC连接的六步实例代码(与mysql连接)


Posted in MySQL onMay 12, 2021

JDBC的六步:

1.注册驱动

2.获取数据库的连接

3.获取数据库的操作对象

4.执行sql语句

5.处理查询结果集(如果执行的语句中没有select语句这一步不用写)

6.关闭资源

第一步:注册驱动

//异常一定是需要处理的
//根据版本不同书写的代码有一些变化,老版本是
DriverManager.register(new com.mysql.jdbc.Driver());
//或者
Class.forName("com.mysql.jdbc.Driver");
 
 
//新版本是
DriverManager.register(new com.mysql.cj.jdbc.Driver());
//或者
Class.forName("com.mysql.cj.jdbc.Driver");

第二步:获取数据库的连接

//因为要进行try..catch,还要关闭这个资源,因此写在try外边且赋值为空
Connection conn = null;
...
//返回值是Connection,老版本和新版的url书写也不一样
// jdbc:mysql://localhost:3306/t_use这个前面的都一样,把t_use更改为自己的数据库名
//老版
conn = DriverManager.getConnection("jdbc:mysql://localhost:3306/t_use","用户名","密码");
 
 
//新版
conn = DriverManager.getConnection("jdbc:mysql://localhost:3306/t_use?serverTimezone=GMT%2B8","用户名","密码");

第三步:获取数据库操作对象

//这个和刚才的Connection是一样的
Statement st = null;
...
//这样就把对象创建好了
st = conn.createStatement();

第四步:执行sql语句

//引号里面写sql语句
String sql = " ";
//再用刚才创建好的对象接入这个sql语句
//这里还有需要说的,如果不是select语句就用下面这个,返回值是一个int,这个就不需要第五步了
st.executeUpdate(sql);
 
//如果sql语句是select的话,就要用下面的这个语句了,还需要定义一个ResultSet对象,去接收这个值
//然后进行第五步的处理
ResultSet rs = null; //和Connection一样的
rs = st.executeQuery(sql);

第五步:处理查询结果集

//这个只有select语句才进行处理,不仅可以getString还可以getInt等
while(rs.next()){
    String str = rs.getString("需要输出的字段的名字");
}

第六步:关闭资源

//前面五步都是在try里面进行的,第六步是在finally进行的
//关闭连接
            if (rs != null) {
                try {
                    rs.close();
                } catch (SQLException throwables) {
                    throwables.printStackTrace();
                }
            }
 
            if (st != null) {
                try {
                    st.close();
                } catch (SQLException throwables) {
                    throwables.printStackTrace();
                }
            }
 
            if (conn != null) {
                try {
                    conn.close();
                } catch (SQLException throwables) {
                    throwables.printStackTrace();
                }
            }

关闭连接也是有顺序的,先关ResultSet,再关Statement对象,最后关Connection对象.

完整代码

package jdbc.com;
import com.mysql.cj.protocol.Resultset;
 
import java.sql.*;
public class Test02 {
    public static void main(String[] args) {
 
        Connection conn = null;
        Statement st = null;
        ResultSet rt = null;
        try {
            //注册连接(可以写到一行里面)
            //com.mysql.cj.jdbc.Driver Driver = new com.mysql.cj.jdbc.Driver();
            DriverManager.registerDriver(new com.mysql.cj.jdbc.Driver());
            //获取数据库连接
            conn=DriverManager.getConnection("jdbc:mysql://localhost:3306/liu2?serverTimezone=GMT%2B8","用户名","密码");
            //获取数据库操作对象
            st = conn.createStatement();
            //执行sql语句
            String sql = "select ename,sal from emp order by sal desc";
            rt = st.executeQuery(sql);
            //处理查询语句
           while(rt.next()){
               String ename = rt.getString("ename");
               String sal = rt.getString("sal");
               System.out.println(ename + "," + sal);
           }
        } catch (SQLException throwables) {
            throwables.printStackTrace();
        }finally {
            //关闭连接
            if (rt != null) {
                try {
                    rt.close();
                } catch (SQLException throwables) {
                    throwables.printStackTrace();
                }
            }
 
            if (st != null) {
                try {
                    st.close();
                } catch (SQLException throwables) {
                    throwables.printStackTrace();
                }
            }
 
            if (conn != null) {
                try {
                    conn.close();
                } catch (SQLException throwables) {
                    throwables.printStackTrace();
                }
            }
 
 
        }
    }
}

最后,这个如果要传入值的话,可能会造成sql的注入,解决办法就是把Statement变成PreparedStatement,就可以避免sql的注入问题了,只不过第三步和第四步代码有点变化,就不再多说了。。

总结

到此这篇关于JDBC连接(与mysql连接)的文章就介绍到这了,更多相关JDBC与mysql连接内容请搜索三水点靠木以前的文章或继续浏览下面的相关文章希望大家以后多多支持三水点靠木!

MySQL 相关文章推荐
MySQL大小写敏感的注意事项
May 24 MySQL
解决Mysql的left join无效及使用的注意事项说明
Jul 01 MySQL
SQL IDENTITY_INSERT作用案例详解
Aug 23 MySQL
MySQL修改默认引擎和字符集详情
Sep 25 MySQL
Mysql数据库手动及定时备份步骤
Nov 07 MySQL
MySQL中一条update语句是如何执行的
Mar 16 MySQL
详细聊一聊mysql的树形结构存储以及查询
Apr 05 MySQL
MYSQL事务的隔离级别与MVCC
May 25 MySQL
MYSQL中文乱码问题的解决方案
Jun 14 MySQL
MySQL数据库实验之 触发器和存储过程
Jun 21 MySQL
浅谈MySql update会锁定哪些范围的数据
Jun 25 MySQL
mysqldump进行数据备份详解
Jul 15 MySQL
MySQL索引知识的一些小妙招总结
MySQL COUNT函数的使用与优化
May 10 #MySQL
解读MySQL的客户端和服务端协议
MySQL 重写查询语句的三种策略
May 10 #MySQL
详解MySQL 联合查询优化机制
mysql对于模糊查询like的一些汇总
May 09 #MySQL
MySQL Threads_running飙升与慢查询的相关问题解决
You might like
php 防止单引号,双引号在接受页面转义
2008/07/10 PHP
thinkphp3.2.0 setInc方法 源码全面解析
2018/01/29 PHP
php+js实现的拖动滑块验证码验证表单操作示例【附源码下载】
2020/05/27 PHP
PHP大文件及断点续传下载实现代码
2020/08/18 PHP
来自国外的14个图片放大编辑的jQuery插件整理
2010/10/20 Javascript
jquery+css+ul模拟列表菜单具体实现思路
2013/04/15 Javascript
javascript实现日期格式转换
2014/12/16 Javascript
jQuery异步上传文件插件ajaxFileUpload详细介绍
2015/05/19 Javascript
jQuery+CSS实现的网页二级下滑菜单效果
2015/08/25 Javascript
学做Bootstrap的第一个页面
2016/05/15 HTML / CSS
js实现加载更多功能实例
2016/10/27 Javascript
基于JavaScript实现新增内容滚动播放效果附完整代码
2017/08/24 Javascript
原生js实现仿window10系统日历效果的实例
2017/10/31 Javascript
jQuery实现form表单序列化转换为json对象功能示例
2018/05/23 jQuery
iphone刘海屏页面适配方法
2019/05/07 Javascript
JavaScript中var的重要性实例分析
2019/07/09 Javascript
微信小程序复选框实现多选一功能过程解析
2020/02/14 Javascript
[01:09:10]NB vs Liquid Supermajor小组赛 A组胜者组决赛 BO3 第一场 6.2
2018/06/04 DOTA
Python中Django 后台自定义表单控件
2017/03/28 Python
python DataFrame获取行数、列数、索引及第几行第几列的值方法
2018/04/08 Python
pycharm 快速解决python代码冲突的问题
2021/01/15 Python
JavaScript+Canvas实现自定义画板的示例代码
2019/05/13 HTML / CSS
Edwaybuy西班牙:小米在线商店
2019/12/04 全球购物
什么是表空间(tablespace)和系统表空间(System tablespace)
2013/02/25 面试题
商务日语毕业生自荐信范文
2013/11/14 职场文书
生日邀请函范文
2014/01/13 职场文书
巾帼标兵事迹材料
2014/12/26 职场文书
拾金不昧感谢信范文
2015/01/21 职场文书
爱牙日宣传活动总结
2015/02/05 职场文书
大学生自荐信怎么写
2015/03/26 职场文书
幼儿园亲子活动通知
2015/04/24 职场文书
七年级语文教学反思
2016/03/03 职场文书
python如何获取网络数据
2021/04/11 Python
基于PyTorch实现一个简单的CNN图像分类器
2021/05/29 Python
5个实用的JavaScript新特性
2022/06/16 Javascript
python绘制云雨图raincloud plot
2022/08/05 Python