JDBC
含义:实际上就是使用java语言操作关系型数据库的一套API。
全称:(Java DataBase Connectivity)java数据库连接。
JDBC本质:
官方定义的的一套操作所有关系型数据库的规则,即接口。
各个数据库厂商去实现这套接口,提供数据库驱动jar包。
我们可以使用这套接口编程,真正执行的代码时驱动jar包中的实现类。
JDBC的好处:
各数厂商使用相同的接口,java代码不需要针对不同的数据库分别开发。
可随时替换底层数据库,访问数据库java的代码基本不变。
创建jdbc快速入门
步骤1:
创建工程,导入驱动jar包
2:注册驱动:
Class.forName("com.mysql.jdbc.Driver"); 这个是固定不变的,直接照着写就行。
3: 获取连接:
Connection con = DriverManager.getConnection(url,username,password);
url访问数据库的url路径。
username为用户名;
password为密码;
4:定义sql语句:
String sql = "update....";
5: 获取执行sql对象:
Statement stm = con.createStatement();
6: 执行sql
stm.executeUpdate(sql);
7 : 处理返回结果
8:释放资源:
stm.close();
con.close();
DriverManager(驱动管理类)作用:
1:注册驱动
2: 获取数据库连接
Class.forName("com.mysql.jdbc.Driver);
Driver中有静态代码块,可以自动执行DriverManger.registerDriver(new Driver()) 来注册驱动
自动加载jar包中的META-INF/services/java.sql.Driver文件中的驱动类。
(不用写也行)MYSQL 5之后的驱动包,可以省略注册驱动的步骤
在获取连接中url详细信息
Connection详解:
一 :获取执行SQL的对象。
1 获取执行sql对象
普通执行sql对象:
Statement createStatement()
预编译SQL的执行SQL对象: 防止SQL注入
PreparedStatement prepareStatement(sql)
执行储存过程的对象:
CallableStatement prepareCall(sql)
二 管理事务。
Statement作用
执行sql语句
int executeUpdate(sql); 执行DML DDL语句
返回值 DML 语句影响的行数 DDL 语句执行后,执行成功也可能返回0
ResultSet executeQuery(sql) 执行DQL 语句
返回值: ResultSet结果集对象。
Statement stmt = con.createStatement();
int count = stmt.executeUpdate(sql) 执行完DDL DML 语句受影响的行数。
ResultSet
ResultSet (结果对象集)作用:
封装了DQL查询语句的结果:
ResultSet stmt.executeQuery(sql) 执行DQL语句,返回ResultSet对象。
获取查询结果:
boolean next():(1) 将光标从当前位置向前移动一行,(2) 判断当前行是否为有效行。
返回值:
true : 有效行,当前行有数据。
false : 无效行 , 当前行没有数据
xxx getXxx(参数) 获取数据,比如: int getInt(参数),String getString(参数)。
一般获取数据时要用while来循环。
PreparedStatement作用
预编译SQL 语句并执行,预防SQL注入问题。
SQL注入
SQL注入是通过操作输入来修改事先定义好的SQL语句,用以达到执行代码对服务器进行攻击的方法。
在sql语句中的连接符号可以用?来代替防止被SQL注入。
在获取对象的过程中来传入SQL语句,不用再执行的时候传入
同时在执行代码中要选取不用注入sql的语句(executeUpdate() )。