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 13 MySQL
探究Mysql模糊查询是否区分大小写
Jun 11 MySQL
解决mysql问题:由于找不到MSVCR120.dll,无法继续执行代码
Jun 26 MySQL
Prometheus 监控MySQL使用grafana展示
Aug 30 MySQL
MySQL8.0的WITH查询详情
Aug 30 MySQL
mysql中整数数据类型tinyint详解
Dec 06 MySQL
MySQL分区表管理命令汇总
Mar 21 MySQL
Mysql开启外网访问
May 15 MySQL
MySQL主从切换的超详细步骤
Jun 28 MySQL
MySQL中正则表达式(REGEXP)使用详解
Jul 07 MySQL
mysqldump进行数据备份详解
Jul 15 MySQL
面试官问我Mysql的存储引擎了解多少
Aug 05 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使用GIFEncoder类生成gif动态滚动字幕
2014/07/01 PHP
PHP中filter函数校验数据的方法详解
2015/07/31 PHP
php中关于长度计算容易混淆的问题分析
2016/05/27 PHP
tp5 实现列表数据根据状态排序
2019/10/18 PHP
一个报数游戏js版(约瑟夫环问题)
2010/08/05 Javascript
Jquery判断IE6等浏览器的代码
2011/04/05 Javascript
js实现div的切换特效上一个下一个
2014/02/11 Javascript
Js查找字符串中出现次数最多的字符及个数实例解析
2016/09/05 Javascript
jQuery插件ajaxFileUpload异步上传文件
2016/10/19 Javascript
JS控制div跳转到指定的位置的几种解决方案总结
2016/11/05 Javascript
利用VUE框架,实现列表分页功能示例代码
2017/01/12 Javascript
JS实现的自动打字效果示例
2017/03/10 Javascript
JavaScript模拟实现封装的三种方式及写法区别
2017/10/27 Javascript
如何让node运行es6模块文件及其原理详解
2018/12/11 Javascript
JS localStorage存储对象,sessionStorage存储数组对象操作示例
2020/02/15 Javascript
package.json各个属性说明详解
2020/03/11 Javascript
nodejs中的异步编程知识点详解
2021/01/17 NodeJs
JavaScript实现切换多张图片
2021/01/27 Javascript
Python fileinput模块使用实例
2015/05/28 Python
Python的time模块中的常用方法整理
2015/06/18 Python
以视频爬取实例讲解Python爬虫神器Beautiful Soup用法
2016/01/20 Python
Python常见排序操作示例【字典、列表、指定元素等】
2018/08/15 Python
Python3爬虫学习之MySQL数据库存储爬取的信息详解
2018/12/12 Python
python字符串格式化方式解析
2019/10/19 Python
目前不被任何主流浏览器支持的CSS3属性汇总
2014/07/21 HTML / CSS
爱淘宝:淘宝网购物分享平台
2017/04/28 全球购物
爱奇艺VIP会员:大剧抢先看
2018/07/11 全球购物
阿联酋最好的手机、电子产品和家用电器网上商店:Eros Digital Home
2020/08/09 全球购物
计算机专业毕业生自荐信范文
2014/03/06 职场文书
买房协议书
2014/04/11 职场文书
安全环保标语
2014/06/09 职场文书
2014年中秋寄语
2014/08/11 职场文书
2016年“12.4”法制宣传日活动总结
2016/04/01 职场文书
一年之计:2019年下半年的计划
2019/05/07 职场文书
Laravel中获取IP的真实地理位置
2021/04/01 PHP
javascript对象3个属性特征
2021/11/17 Javascript