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 相关文章推荐
一文读懂navicat for mysql基础知识
May 31 MySQL
zabbix监控mysql的实例方法
Jun 02 MySQL
MySQL GRANT用户授权的实现
Jun 18 MySQL
MySQL 发生同步延迟时Seconds_Behind_Master还为0的原因
Jun 21 MySQL
MySQL 5.7常见数据类型
Jul 15 MySQL
一篇文章带你深入了解Mysql触发器
Aug 02 MySQL
mysql配置SSL证书登录的实现
Sep 04 MySQL
MySQL数据库如何给表设置约束详解
Mar 13 MySQL
MySQL导致索引失效的几种情况
Jun 25 MySQL
mysql全面解析json/数组
Jul 07 MySQL
MySQL中正则表达式(REGEXP)使用详解
Jul 07 MySQL
MySQL 原理与优化之Limit 查询优化
Aug 14 MySQL
MySQL索引知识的一些小妙招总结
MySQL COUNT函数的使用与优化
May 10 #MySQL
解读MySQL的客户端和服务端协议
MySQL 重写查询语句的三种策略
May 10 #MySQL
详解MySQL 联合查询优化机制
mysql对于模糊查询like的一些汇总
May 09 #MySQL
MySQL Threads_running飙升与慢查询的相关问题解决
You might like
《五等分的花嫁》漫画完结!2020年10月第2期TV动画制作组换血!
2020/03/06 日漫
php中文乱码问题的终极解决方案汇总
2017/08/01 PHP
Firefox window.close()的使用注意事项
2009/04/11 Javascript
自己动手制作jquery插件之自动添加删除行的实现
2011/10/13 Javascript
Node.js中AES加密和其它语言不一致问题解决办法
2014/03/10 Javascript
JavaScript数据类型学习笔记
2016/01/25 Javascript
实例讲解JavaScript中instanceof运算符的用法
2016/06/08 Javascript
Vue.js实现无限加载与分页功能开发
2016/11/03 Javascript
AngularJS1.X学习笔记2-数据绑定详解
2017/04/01 Javascript
JS实现点击循环切换显示内容的方法
2017/10/19 Javascript
js实现上传并压缩图片效果
2018/01/10 Javascript
详解如何构建Promise队列实现异步函数顺序执行
2018/10/23 Javascript
详解JavaScript函数callee、call、apply的区别
2019/03/08 Javascript
浅谈vue 锚点指令v-anchor的使用
2019/11/13 Javascript
JavaScript对象字面量和构造函数原理与用法详解
2020/04/18 Javascript
JS实现鼠标按下拖拽效果
2020/07/23 Javascript
Vue3.0的优化总结
2020/10/16 Javascript
vuex的使用步骤
2021/01/06 Vue.js
[05:08]DOTA2-DPC中国联赛3月6日Recap集锦
2021/03/11 DOTA
python 读取鼠标点击坐标的实例
2018/12/29 Python
Win10下python 2.7与python 3.7双环境安装教程图解
2019/10/12 Python
python爬虫模拟浏览器访问-User-Agent过程解析
2019/12/28 Python
解决python运行启动报错问题
2020/06/01 Python
python推导式的使用方法实例
2021/02/28 Python
CSS3中的clip-path使用攻略
2015/08/03 HTML / CSS
Overload和Override的区别
2012/09/02 面试题
JPA的优势都有哪些
2013/07/04 面试题
医护人员英文求职信范文
2013/11/26 职场文书
2014财务年度工作总结
2014/11/11 职场文书
个人典型事迹材料
2014/12/30 职场文书
奖学金个人总结
2015/03/04 职场文书
基石观后感
2015/06/12 职场文书
2016大学迎新晚会开场白
2015/11/24 职场文书
MySQL学习总结-基础架构概述
2021/04/05 MySQL
Java基于字符界面的简易收银台
2021/06/26 Java/Android
python 学习GCN图卷积神经网络
2022/05/11 Python