JDBC
-
概念: Java数据库连接, Java语言操作数据库> 本质: 官方定义的一套所有关系型的数据库的规则,即接口,各个数据库厂商去实现这个接口,提供数据库驱动的jar包,我们可以使用这套接口(JDBC)编程,真正实现打代码是驱动中的jar包的实现类->使用JDBC驱动Jar包的实现类,完成数据库操作.
-
快速入门:
步骤: 1.导入驱动jar包 2.注册驱动 3.获取数据库连接对象 4.定义sql 5.获取执行sql语句的对象 statement 6.执行sql, 接受返回结果 7.处理结果 8.释放资源
public class jdb{
public static void main(String[] args) throws Expection{
//1.导入驱动jar包
//2.注册驱动(5以上的Jar包可以省略注册驱动代码)
Class.forName("com.mysql.jdbc.Driver");
//3.获取数据库连接对象
Connection conn = DriverManager.getConnection("jdb:mysql://localhost:3306/mydb1","root","ro12");
//4.定义sql
String sql = "update edp set gender = 22 where id = 1";
//5.获取执行sql语句的对象 statement
Statement stmt = conn. cretestatement();
//6.执行sql, 接受返回结果
int count = stmt.executeUpdate(sql);
//7.处理结果
System.out.println(count);
//8.释放资源
stmt.close();
con.close();
}
}
3.详解各个对象
1.DriverManager:驱动管理对象
功能:
1.注册驱动: 告诉程序该使用哪一个数据库驱动jar包
注册与给定的程序,DirverManager.
写代码使用: Class.fromName("com.mysql.jdbc.Driver");
通过查看源码发现com.mysql.jdbc.Driver类中存在静态代码块
2.获取数据库连接
方法: static Connection getCnnection(String url, String uer, String password)
参数:
url:指定连接的路径
语法: jdbc: mysql://ip地址(域名): 端口号/数据库名称
注意:如果连接是本机的mysql服务器,并且mysql的端口号是默认的3306,则url 简写为jdbc:mysql:///数据库名称
user: 用户名
password: 密码;
2.Connection对象:获取和数据库的连接
1.功能:
1.获取执行sql对象
Statement createStatement();
2.管理实务
开启事务: setAutoCommit(boolean a): 调用该方法设置参数为false,开启启动事务.
提交事务: commit();
回滚事务: rollback();
3. Statement: 执行sql对象
1.执行sql
1. int executeUpdate执行DML 和DDl返回影响的行数,通过这个返回值判断DMl语句是否执行成功返回值> 0 反之失效;
2. ResulSet executeQuery(String sql) : 执行DQL(select)语句;
4.ResultSet: 结果集对象,封装查询结果
next()游标向下移动一行
getxxx():获取数据
Xxx: 代表数据类型
参数:
1.int : 代表列的编号从1开始 如:getString(1)
2.String: 代表列的名称.
注意: 游标向下移动一行,判断是否有数据,获取数据
5.PreparedStatement: 执行sql对象
1.Sql注入问题:: 在拼接sql时,有一些sql的特殊关键字参与字符串的拼接。会造成安全问题
1.输入用户随便
2.解决sql注入问题,使用PreparedStatement对象解决。
3.预编译的sql: 参数使用?作为占位符
4.步骤:
1.导入驱动jar包
2.注册驱动
3.获取数据库连接对象
4.定义sql
sql的参数使用?作为占位符。
5.获取执行sql语句的对象 PreparedStatement ,statement
6.给?赋值
setXxx(参数1,参数2)
7.执行sql, 接受返回结果
8.处理结果
9.释放资源
5.注意: 防止sql注入, 效率高,后期都会使用