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 14 MySQL
MySQL8.0无法启动3534的解决方法
Jun 03 MySQL
Mysql实现简易版搜索引擎的示例代码
Aug 30 MySQL
Mysql binlog日志文件过大的解决
Oct 05 MySQL
mysql分表之后如何平滑上线详解
Nov 01 MySQL
weblogic服务建立数据源连接测试更新mysql驱动包的问题及解决方法
Jan 22 MySQL
MySql重置root密码 --skip-grant-tables
Apr 11 MySQL
Mysql调整优化之四种分区方式以及组合分区
Apr 13 MySQL
mysql 体系结构和存储引擎介绍
May 06 MySQL
MYSQL事务的隔离级别与MVCC
May 25 MySQL
MySQL事务的ACID特性以及并发问题方案
Jul 15 MySQL
mysql数据库如何转移到oracle
Dec 24 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实现用手机关闭计算机(电脑)的方法
2015/04/22 PHP
Linux平台php命令行程序处理管道数据的方法
2016/11/10 PHP
Laravel 实现添加多语言提示信息
2019/10/25 PHP
在线编辑器的实现原理(兼容IE和FireFox)
2007/03/09 Javascript
JavaScript两种跨域技术全面介绍
2014/04/16 Javascript
Jquery数字上下滚动动态切换插件
2015/08/08 Javascript
对于jQuery性能的一些优化建议
2015/08/13 Javascript
D3.js中data(), enter() 和 exit()的问题详解
2015/08/17 Javascript
jQuery实现滚动切换的tab选项卡效果代码
2015/08/26 Javascript
全系IE支持Bootstrap的解决方法
2015/10/19 Javascript
JS与jQ读取xml文件的方法
2015/12/08 Javascript
javascript 继承学习心得总结
2016/03/17 Javascript
javascript匀速动画和缓冲动画详解
2016/10/20 Javascript
详解jQuery插件开发方式
2016/11/22 Javascript
浅谈angularjs中响应回车事件
2017/04/24 Javascript
Angular 2父子组件之间共享服务通信的实现
2017/07/04 Javascript
Angular 2.0+ 的数据绑定的实现示例
2017/08/09 Javascript
[46:48]DOTA2上海特级锦标赛A组小组赛#2 Secret VS CDEC第三局
2016/02/25 DOTA
[01:10]为家乡而战!完美世界城市挑战赛全国总决赛花絮
2019/07/25 DOTA
python求crc32值的方法
2014/10/05 Python
详解python实现读取邮件数据并下载附件的实例
2017/08/03 Python
python+Django实现防止SQL注入的办法
2019/10/31 Python
python opencv实现gif图片分解的示例代码
2019/12/13 Python
Python字典生成式、集合生成式、生成器用法实例分析
2020/01/07 Python
python如何更新包
2020/06/11 Python
属性与 @property 方法让你的python更高效
2020/09/21 Python
python-图片流传输的思路及示例(url转换二维码)
2020/12/21 Python
Omio葡萄牙:全欧洲低价大巴、火车和航班搜索和比价
2019/02/09 全球购物
L’Artisan Parfumeur官网:法国香水品牌
2020/08/11 全球购物
linux面试题参考答案(10)
2016/10/26 面试题
thinkphp5 redis缓存新增方法实例讲解
2021/03/24 PHP
幼师自荐信
2013/10/26 职场文书
教师自我评价范文
2013/12/16 职场文书
如何写求职信
2014/05/24 职场文书
家长会感言
2015/08/01 职场文书
Java 关于String字符串原理上的问题
2022/04/07 Java/Android