Mysql数据库巩固
来源:互联网 发布:ps调色插件 知乎 编辑:程序博客网 时间:2024/05/16 08:57
1.在驱动管理器中会装入两个mysql驱动.
解决方案:使用反射
Class.forName(“com.mysql.jdbc.Driver”);
分析:使用反射的方式来加载驱动有什么好处?
1.只加载一次,装入一个驱动对象.
2.降低耦合,不依赖于驱动.
2.DriverManager来获取连接对象
Connection con=DriverManager.getConnection(String url,String user,String password);
url作用:就是用于确定使用哪一个驱动.
mysql url: jdbc:mysql://localhsot:3306/数据库名.
oralce url: jdbc:oracle:thin:@localhost:1521:sid
总结:DriverManager作用:
1.注册驱动
2.获取连接Connection
关于url
url格式
主协议 子协议 主机 端口 数据库
jdbc : mysql ://localhost:3306/test
3.Connection作用:
1.可以通过Connection获取操作sql的Statement对象。
Statement createStatement() throws SQLException
示例:
Statement st=con.createStatement();
4.Statement详解
java.sql.Statement用于执行sql语句.
Statement作用:
1.执行sql
DML:insert update delete
int executeUpdate(String sql)
利用返回值判断非0来确定sql语句是否执行成功。 DQL:select ResultSet executeQuery(String sql) 可以通过execute方法来执行任何sql语句. execute(String sql):用于向数据库发送任意sql语句 2.批处理操作 addBatch(String sql); 将sql语句添加到批处理 executeBatch();批量执行 clearBatch();清空批处理.
5.ResultSet详解
java.sql.ResultSet它是用于封装select语句执行后查询的结果。
常用API 1.next()方法 public boolean next(); 用于判断是否有下一条记录。如果有返回true,并且让游标向下移动一行。 如果没有返回false. 2.可以通过ResultSet提供的getXxx()方法来获取当前游标指向的这条记录中的列数据。 常用: getInt() getString() getDate() getDouble() 参数有两种 1.getInt(int columnIndex); 2.getInt(String columnName); 如果列的类型不知道,可以通过下面的方法来操作 getObject(int columnIndex); getObject(String columnName);
6.关闭资源
Jdbc程序运行完后,切记要释放程序在运行过程中,创建的那些与数据库进行交互的对象,这些对象通常是ResultSet, Statement和Connection对象。
特别是Connection对象,它是非常稀有的资源,用完后必须马上释放,如果Connection不能及时、正确的关闭,极易导致系统宕机。Connection的使用原则是尽量晚创建,尽量早的释放。 为确保资源释放代码能运行,资源释放代码也一定要放在finally语句中。
sql注入
由于没有对用户输入进行充分检查,而SQL又是拼接而成,在用户输入参数时,在参数中添加一些SQL 关键字,
达到改变SQL运行结果的目的,也可以完成恶意攻击。
示例: 在输入用户名时 tom' or '1'='1 这时就不会验证密码了。 解决方案: PreparedStatement(重点) 它是一个预处理的Statement,它是java.sql.Statement接口的一个子接口。 总结PreparedStatement使用: 1.在sql语句中,使用"?"占位 String sql="select * from user where username=? and password=?"; 2.得到PreparedStatement对象 PreparedStatement pst=con.prepareStatement(String sql); 3.对占位符赋值 pst.setXxx(int index,Xxx obj); 例如: setInt() setString(); 参数index,代表的是"?"的序号.注意:从1开始。 4.执行sql DML: pst.executeUpdate(); DQL: pst.executeQuery(); 注意:这两方法无参数 关于PreparedStatement优点: 1.解决sql注入(具有预处理功能) 2.不需要在拼sql语句。
- Mysql数据库巩固
- mysql巩固
- MySQL数据库上:DDL语句的基础巩固
- php&mysql基础巩固
- 巩固MySql基本语法
- MySQL基础知识复习与巩固
- 巩固爬虫和数据库使用技巧
- 几个简单地连接数据库案例,巩固练习用
- jdbc实现MYSQL增删改查巩固练习
- mysql基础---基础最全面巩固练习(六)
- 巩固基础
- 巩固c++
- 基础巩固...
- 总结巩固
- 递归巩固
- 知识点巩固
- numpy巩固
- 巩固JAVA面向对象基础应用 -- 实现小巧的数据库1
- js作用域之js编译
- 剑指Offer面试题11 & Leetcode50
- 远程调用服务器方法:POST方法
- 你是「空巢程序员」吗?
- Android开发工具类常用
- Mysql数据库巩固
- 怎么把F1-F12的功能按键模式修改为传统的单键快捷按键模式。
- Android 自己封装HttpUrlConnection上传图片和字段
- 值传递和引用传递的区别
- Angular2如何整合其他插件
- PCA人脸识别--opencv代码
- App个性化安装渐成移动营销主流
- 根据系统时间查询
- 手把手教你AndroidStudio多渠道打包