A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© sadasdsdsad1234 初级黑马   /  2019-5-9 13:41  /  677 人查看  /  0 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

JDBC:
概念:
数据库连接,java语言操作数据库 ——操作所有关系型数据库的规则—— 一组接口
入门:
1.导入驱动JAR包
(1)复制文件到模块的libs目录下
(2)右键 -->
2.注册驱动
3.获取数据库的连接对象Connection
4.定义sql语句
5.获取执行sql语句的对象statement
6.执行sql,接收返回的结果
7.处理结果
8.释放资源

详解各个对象:
1.DriverManager ——驱动管理对象
1.注册驱动 registerDriver       
存在静态代码块
Mysql5后的驱动jar包可以省略注册驱动的步骤
2.获取数据库连接
方法:static Connection getConnection(String url, String user, String password)
参数:
Url:指定连接的路径
Jdbc:mysql//ip地址:端口/数据库名
例:jdbc:mysql://localhost:3306/day3
细节:如果连接的是本机的mysql服务器,并且mysql服务默认端口是3306,则url可以简写为
Jdbc:mysql://
User:用户名
Password:密码
2.Connection ——数据库连接对象
(1)功能:
                获取语句对象:
                Statement createStatement()
                PreparedStatement prepareStatement(String sql)
                管理事务:
                开启事务:void setAutoCommit(boolean autoCommit)调用此方法参数为false,开启事务
                提交事务:commit()
                回滚事务:rollback()
注:管理事务时必须使用同一个对象调用管理事务的方法
3.Statement ——执行sql对象
(1)执行sql
a.Boolean excute(String sql)可以执行任意语句
b.Int excuteUpdate(String sql):执行DML、DDL语句返回影响的行数
c.ResuleSet excuteQuery(String sql) 执行DQL语句
(2)练习:
        Next():判断是否是最后一行末尾(是否有数据),如果是则返回false如果不是则返回true
        getXxx(参数):
                Xxx:代表数据类型
                参数:
                        Int:代表列的编号
                        String:列名
        注意:
                使用步骤
1.游标向下移动一行
2.判断是否有数据
3.获取数据

4.ResuleSet ——结果集对象
5.PreparedStatement ——执行sql的对象(更强大)
1.sql注入问题:在拼接sql时有一些sql的特殊关键字参与字符串的拼接,会造成安全性问题
(1)输入用户随意,输入密码a’or’a’=’a
2.解决sql注入问题:使用preparedStatement对象来解决问题 ——执行预编译sql语句的对象

预编译的sql:使用?作为占位符
注:后期都会使用PreparedStatement来完成增删改查操作
效率更快,可以防止sql注入

抽取JDBC工具类
目的:简化书写
分析:
1.抽取一个方法:注册驱动
2.抽取一个方法:获取连接对象
(1)需求:不想传递参数,还要保证工具类的通用性
解决方案:配置文件
3.抽取一个方法:释放资源

练习
登陆

JDBC控制事务

0 个回复

您需要登录后才可以回帖 登录 | 加入黑马