SQL基础操作(十四)-JDBC连接优化、SQL语句测试
2021/7/13 19:07:18
本文主要是介绍SQL基础操作(十四)-JDBC连接优化、SQL语句测试,对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!
10.6 Statement对象
JDBC中的statement对象用于向数据库发送SQL语句,想完成数据的增删改查,只需要通过这个对象向数据库发送增删改查语句即可。
-
Statement对象的executeUpdate方法用于向数据库发送增删改查的SQL语句,executeUpdate执行完成后,将会返回一个整数,即增删改语句导致了数据库几行数据发生了变化。
-
Statement对象的executeQuery方法用于向数据库发送查询语句,executeUpdate方法放回代表代表查询结果的ResultSet对象。
10.6.1 JDBC连接优化
1.在src包下新建db.properties文件存储driver、username、password等信息,用于后续资源加载
driver = com.mysql.jdbc.Driver url = jdbc:mysql://localhost:3306/jdbcstudy?useUnicode=true&characterEncoding=utf8&useSSL=true username = root password = 123456
注意:每条语句结束后不能有“;”
2.在src下新建包utils,在包里面新建类JdbcUtils,用于加载db.properties文件资源、加载驱动、获取连接、释放连接资源等。
package utils; import java.io.IOException; import java.io.InputStream; import java.sql.Connection; import java.sql.DriverManager; import java.sql.ResultSet; import java.sql.SQLException; import java.sql.Statement; import java.util.Properties; /** * 用于加载db.properties文件资源、加载驱动、获取连接、释放连接资源等 */ public class JdbcUtils { //属性信息 private static String driver = null; private static String url = null; private static String username = null; private static String password = null; static { try{ //加载资源 InputStream in = JdbcUtils.class.getClassLoader().getResourceAsStream("db.properties"); //获取资源 Properties properties = new Properties(); properties.load(in); //获取详细信息 driver = properties.getProperty("driver"); url = properties.getProperty("url"); username = properties.getProperty("username"); password = properties.getProperty("password"); //1.驱动只用加载一次 Class.forName(driver); } catch(IOException | ClassNotFoundException e){ e.printStackTrace(); } catch(Exception e){ e.printStackTrace(); } } /** * 获取连接 * @return * @throws SQLException */ public static Connection getConnection() throws SQLException { return DriverManager.getConnection(url,username,password); } /** * 释放连接资源 * @param connection * @param statement * @param resultSet */ public static void release(Connection connection, Statement statement, ResultSet resultSet){ //关系的顺序依次为resultSet、statement、connection if(resultSet!=null){ try { resultSet.close(); } catch (SQLException e) { e.printStackTrace(); } catch(Exception e){ e.printStackTrace(); } } if(statement!=null){ try { statement.close(); } catch (SQLException e) { e.printStackTrace(); } catch(Exception e){ e.printStackTrace(); } } if(connection!=null){ try { connection.close(); } catch (SQLException e) { e.printStackTrace(); } catch(Exception e){ e.printStackTrace(); } } } }
文件层级如下:
10.6.2 测试sql语句在Java中的实现
(1)插入操作:使用executeUpdate(String sql)方法完成数据添加操作
package com.study.lesson; import utils.JdbcUtils; import java.sql.Connection; import java.sql.ResultSet; import java.sql.SQLException; import java.sql.Statement; /** * 测试insert */ public class JdbcDemo02 { public static void main(String[] args) { //属性信息 Connection connection = null; Statement statement = null; ResultSet resultSet = null; try { //连接驱动,获得数据库 connection = JdbcUtils.getConnection(); //创建执行SQL语句的对象 statement = connection.createStatement(); //SQL插入语句 String sql ="INSERT INTO `users`(`id`,`name`,`password`,`email`,`birthday`)" + "VALUES(4,'zhaoliu','123456','123456789@qq.com','2019-02-03')"; //执行SQL语句,返回代码执行后受影响的行数 int i = statement.executeUpdate(sql); if(i>0){ System.out.println("插入成功!"); } } catch (SQLException e) { e.printStackTrace(); } catch (Exception e){ e.printStackTrace(); } finally { //释放连接资源 JdbcUtils.release(connection,statement,resultSet); } } }
输出结果:在SQLyog中可查看对应变化
插入成功!
(2)删除操作:使用executeUpdate(String sql)方法完成数据删除操作
package com.study.lesson; import utils.JdbcUtils; import java.sql.Connection; import java.sql.ResultSet; import java.sql.SQLException; import java.sql.Statement; /** * 测试delete */ public class JdbcDemo03 { public static void main(String[] args) { Connection connection = null; Statement statement = null; ResultSet resultSet = null; try { connection = JdbcUtils.getConnection(); statement = connection.createStatement(); String sql ="DELETE FROM `users` WHERE `id` = 4;"; int i = statement.executeUpdate(sql); if(i>0){ System.out.println("删除成功!"); } } catch (SQLException e) { e.printStackTrace(); } catch (Exception e){ e.printStackTrace(); } finally { JdbcUtils.release(connection,statement,resultSet); } } }
输出结果:在SQLyog中可查看对应变化
删除成功!
(3)更新操作:使用executeUpdate(String sql)方法完成数据更新操作
package com.study.lesson; import utils.JdbcUtils; import java.sql.Connection; import java.sql.ResultSet; import java.sql.SQLException; import java.sql.Statement; /** * 测试update */ public class JdbcDemo04 { public static void main(String[] args) { Connection connection = null; Statement statement = null; ResultSet resultSet = null; try { connection = JdbcUtils.getConnection(); statement = connection.createStatement(); String sql ="UPDATE `users` SET `password`='111111' WHERE `id`=1;"; int i = statement.executeUpdate(sql); if(i>0){ System.out.println("更新成功!"); } } catch (SQLException e) { e.printStackTrace(); } catch (Exception e){ e.printStackTrace(); } finally { JdbcUtils.release(connection,statement,resultSet); } } }
输出结果:在SQLyog中可查看对应变化
更新成功!
(4)查询操作:使用executeUpdate(String sql)方法完成数据查询操作
package com.study.lesson; import utils.JdbcUtils; import java.sql.Connection; import java.sql.ResultSet; import java.sql.SQLException; import java.sql.Statement; /** * 测试select */ public class JdbcDemo05 { public static void main(String[] args) { Connection connection = null; Statement statement = null; ResultSet resultSet = null; try { connection = JdbcUtils.getConnection(); statement = connection.createStatement(); String sql ="SELECT * FROM `users` WHERE `id`=1;"; resultSet = statement.executeQuery(sql); while (resultSet.next()){ System.out.println(resultSet.getString("name")); } } catch (SQLException e) { e.printStackTrace(); } catch (Exception e){ e.printStackTrace(); } finally { JdbcUtils.release(connection,statement,resultSet); } } }
输出结果:
zhangsan
这篇关于SQL基础操作(十四)-JDBC连接优化、SQL语句测试的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!
- 2024-12-23DevExpress 怎么实现右键菜单(Context Menu)显示中文?-icode9专业技术文章分享
- 2024-12-22怎么通过控制台去看我的页面渲染的内容在哪个文件中呢-icode9专业技术文章分享
- 2024-12-22el-tabs 组件只被引用了一次,但有时会渲染两次是什么原因?-icode9专业技术文章分享
- 2024-12-22wordpress有哪些好的安全插件?-icode9专业技术文章分享
- 2024-12-22wordpress如何查看系统有哪些cron任务?-icode9专业技术文章分享
- 2024-12-21Svg Sprite Icon教程:轻松入门与应用指南
- 2024-12-20Excel数据导出实战:新手必学的简单教程
- 2024-12-20RBAC的权限实战:新手入门教程
- 2024-12-20Svg Sprite Icon实战:从入门到上手的全面指南
- 2024-12-20LCD1602显示模块详解