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 InnoDB ReplicaSet(副本集)简单介绍
Apr 24 MySQL
mysql中between的边界,范围说明
Jun 08 MySQL
MySQL 数据恢复的多种方法汇总
Jun 21 MySQL
MySQL中IF()、IFNULL()、NULLIF()、ISNULL()函数的使用详解
Jun 26 MySQL
MySQL 8.0 驱动与阿里druid版本兼容问题解决
Jul 01 MySQL
MySQL系列之十二 备份与恢复
Jul 02 MySQL
MySQL命令无法输入中文问题的解决方式
Aug 30 MySQL
深入理解mysql事务隔离级别和存储引擎
Apr 12 MySQL
MySQL分区路径子分区再分区
Apr 13 MySQL
MySQL脏读,幻读和不可重复读
May 11 MySQL
MySQL GTID复制的具体使用
May 20 MySQL
mysql拆分字符串作为查询条件的示例代码
Jul 07 MySQL
MySQL索引知识的一些小妙招总结
MySQL COUNT函数的使用与优化
May 10 #MySQL
解读MySQL的客户端和服务端协议
MySQL 重写查询语句的三种策略
May 10 #MySQL
详解MySQL 联合查询优化机制
mysql对于模糊查询like的一些汇总
May 09 #MySQL
MySQL Threads_running飙升与慢查询的相关问题解决
You might like
如何给phpadmin一个保护
2006/10/09 PHP
杏林同学录(一)
2006/10/09 PHP
两个开源的Php输出Excel文件类
2010/02/08 PHP
php函数间的参数传递(值传递/引用传递)
2013/09/23 PHP
浅谈php(codeigniter)安全性注意事项
2017/04/06 PHP
PHP实现字符串大小写转函数的功能实例
2019/02/06 PHP
PHP 对象接口简单实现方法示例
2020/04/13 PHP
PHP类的自动加载与命名空间用法实例分析
2020/06/05 PHP
利用google提供的API(JavaScript接口)获取网站访问者IP地理位置的代码详解
2010/07/24 Javascript
js隐藏与显示回到顶部按钮及window.onscroll事件应用
2013/01/25 Javascript
js获取location.href的参数实例代码
2013/08/02 Javascript
JavaScript常用脚本汇总(一)
2015/03/04 Javascript
JQuery勾选指定name的复选框集合并显示的方法
2015/05/18 Javascript
Javascript中的getUTCDay()方法使用详解
2015/06/10 Javascript
jQuery焦点图轮播特效代码分享(3款)
2015/09/05 Javascript
Js自动截取字符串长度,添加省略号(……)的实现方法
2017/03/06 Javascript
ES6入门教程之let和const命令详解
2017/05/17 Javascript
vue中component组件的props使用详解
2017/09/04 Javascript
利用node实现一个批量重命名文件的函数
2017/12/21 Javascript
vue实现底部菜单功能
2018/07/24 Javascript
富文本编辑器vue2-editor实现全屏功能
2019/05/26 Javascript
vuex存储token示例
2019/11/11 Javascript
原生js实现自定义消息提示框
2020/11/19 Javascript
pytyon 带有重复的全排列
2013/08/13 Python
Python变量作用范围实例分析
2015/07/07 Python
Python读取一个目录下所有目录和文件的方法
2016/07/15 Python
Django返回json数据用法示例
2016/09/18 Python
利用python操作SQLite数据库及文件操作详解
2017/09/22 Python
python ddt实现数据驱动
2018/03/14 Python
Python paramiko模块的使用示例
2018/04/11 Python
python3 http提交json参数并获取返回值的方法
2018/12/19 Python
python自动发送测试报告邮件功能的实现
2019/01/22 Python
Python模拟FTP文件服务器的操作方法
2020/02/18 Python
应届行政管理专业个人自我评价
2013/12/28 职场文书
Python list列表删除元素的4种方法
2021/11/01 Python
HTTP中的Content-type详解
2022/01/18 HTML / CSS