原生JDBC操作;Statement与PreparedStatement;动态代理
Day1
JDBC原生操作
步骤:
1)导入mysql去顶驱动jar包
2)加载驱动
3)创建数据库连接对象
4)准备好sql语句
5)通过数据库连接对象获取执行对象:Statement
6)更新/查询(执行sql语句)
7)获取结果释放资源
//2)加载驱动 :为了保证向下兼容性:DriverManager :驱动管理类 不用他
Class.forName("com.mysql.jdbc.Driver") ;
3)创建数据库的连接对象
Connection conn = DriverManager.getConnection( "jdbc:mysql:///数据库位置", "账号", "密码" );
//4)准备好sql语句
String sql = "update 表名 set balance = balance - 500 where id = 1" ;
//5)通过数据库的连接对象获取执行对象:Statement
//6)执行.
int count = stmt.executeUpdate(sql);
//释放资源
stmt.close();
conn.close();
使用Statement执行DDL语
try { //注册驱动 Class.forName("com.mysql.jdbc.Driver") ; //获取数据库的链接对象 conn = DriverManager.getConnection( "jdbc:mysql://localhost:3306/myee_2104", "root", "123456" ); //获取执行对象 stmt = conn.createStatement(); //DML语句 -- String sql = "INSERT INTO emp(id,NAME,gender,salary,join_date,dept_id) VALUES(6,'刘备','男',9000,'2021-1-15',2);" ; -- 添加一行信息 -- String sql = "DELETE FROM emp WHERE id = 6;"; -- 删除一行信息 -- String sql = "UPDATE emp SET salary = salary + 1000 WHERE id = 6;"; -- 修改信息 int count = stmt.executeUpdate(sql); //执行sql int count = stmt.executeUpdate(sql); System.out.println(count); } catch (ClassNotFoundException e) { e.printStackTrace(); } catch (SQLException e) { e.printStackTrace(); }finally { if(stmt!=null){ try { stmt.close(); } catch (SQLException e) { e.printStackTrace(); } }
if(conn!=null){ try { conn.close(); } catch (SQLException e) { e.printStackTrace(); } } } }
}
封装获取连接对象的功能
private static String url = null ;
private static String user = null ;
private static String password = null ;
private static String driver = null ;
private JdbcUtils(){} //构造私有化
static{
try { //通过读取配置文件获取url,user,password,driver //创建属性集合类对象 Properties prop = new Properties() ; //读取配置文件夹 InputStream inputStream = JdbcUtils.class.getClassLoader().getResourceAsStream("jdbc.properties"); prop.load(inputStream); System.out.println(prop);
//通过key获取value url = prop.getProperty("url"); user = prop.getProperty("user") ; password = prop.getProperty("password") ; driver = prop.getProperty("driver") ;
//加载驱动 Class.forName(driver) ; } catch (IOException e) {
原生JDBC操作;Statement与PreparedStatement;动态代理相关推荐
- 由数据库对sql的执行说JDBC的Statement和PreparedStatement
1.每一种数据库都会尽最大努力对预编译语句提供最大的性能优化.因为预编译语句有可能被重复调用.所以语句在被DB的编译器编译后的执行代码被缓存下来,那么下次调用时只要是相同的预编译语句就不需要编译,只要 ...
- 原生JDBC操作数据库流程
1.class.forName()加载数据驱动 2.DriverManager.getConnection()获取数据库连接对象. 3.根据SQL或sql会话对象,有两种方式Statement.Pre ...
- JDBC中Statement与PreparedStatement的区别
http://www.blogjava.net/redcoatjk/archive/2012/07/20/383583.html 1. statement每次执行sql语句,相关数据库都要执行sql语 ...
- spring中AOP动态代理的两种方式
AOP动态代理的两种方式 Spring AOP动态代理的方式(spring的AOP默认是JDK Proxy) 浅谈这两种动态代理 JDK的动态代理,需要有实现接口 动态代理--JDK Proxy ⚫ ...
- Java高级编程细节-动态代理-进阶高级开发必学技能
关于代理模式的话题有很多, 在开发中经常用到的应该是静态代理模式,能很好的去耦合. 动态代理是代理模式的另外一种实现. 动态代理的区别在哪里? 动态代理有什么好处? 今天我们来分析下这些问题. 回顾静 ...
- class转java_java动态代理实现与原理详细分析
关于Java中的动态代理,我们首先需要了解的是一种常用的设计模式--代理模式,而对于代理,根据创建代理类的时间点,又可以分为静态代理和动态代理. 一.代理模式 代理模式是常用的java设计模式, ...
- java动态代理实现与原理详细分析(代码层面解释了AOP的实现)
关于Java中的动态代理,我们首先需要了解的是一种常用的设计模式--代理模式,而对于代理,根据创建代理类的时间点,又可以分为静态代理和动态代理. 一.代理模式 代理模式是常用的java设计模式, ...
- java动态代理实现与原理详细分析(【转载】By--- Gonjan )
[转载]By--- Gonjan 关于Java中的动态代理,我们首先需要了解的是一种常用的设计模式--代理模式,而对于代理,根据创建代理类的时间点,又可以分为静态代理和动态代理. 一.代理模式 ...
- 静态代理,JDK动态代理,Cglib动态代理详解
目录 一.代理模式 二.静态代理 三.动态代理 3.1 JDK动态代理 3.2 Cglib动态代理 四.两种动态代理区别 一.代理模式 代理模式(Proxy Pattern)是程序设计中的一种设计模式 ...
- 【Java高级程序设计学习笔记】深入理解jdk动态代理
java的设计模式中有一项设计模式叫做代理模式,所谓代理模式,就是通过代理方来操作目标对象,而不是自己直接调用.代理又分为静态代理和动态代理,静态代理就是针对每个被代理对象写一个代理类,操作不够优雅: ...
最新文章
- “数学不好,干啥都不行!”骨灰级程序员:其实你们都是瞎努力
- 看完这些、你能体会到半导体与电路集成的伟大了吗?
- ASP.NET 自定义404错误页面
- Ansible — Overview
- 灰度图像阈值化分割常见方法总结及VC实现
- ListBox简单应用
- python3中的dict循环性能对比
- Vim 高亮显示单词并查找
- 分享Spring中Bean的4种依赖检查模式
- php面向对象引用文件,PHP面向对象之对象和引用
- python导入模块找不到什么原因_python模块以及导入出现ImportError: No module named 'xxx'问题...
- 关于STM32 __IO 的变量定义
- 质量工程师(QA)岗位初介绍
- 电商峰值系统架构设计
- TVS和ESD的区别
- 各个城市对应的code码
- 十年饮冰,难凉热血--毕业四年多的经历,致敬每一位IT男
- Mathorcup数学建模竞赛第六届-【妈妈杯】B题:小区车位分布的评价和优化模型(附特等奖获奖论文和Java代码)
- 开发、测试、测试开发
- python发送文件_Python发送邮件(最全)