JDBC本质:官方定义的一套操作所有关系型数据库的规则,即接口。各个数据库厂商去实现这套接口,提供数据库驱动.jar包。我们可以使用这套接口,去执行.jar包中的实现类.
1、实现步骤:
①导入jar包:在项目下创建lib包,将jar文件拷贝到该包下,然后右击该包,选择添加到库
②注册驱动:Class.forName(“com.mysql.jdbc.Driver”);高版本的数据库“com.mysql.cj.jdbc.Driver”
③获取数据库连接对象
Connection c = DriverManager.getConnection(“jdbc:mysql://localhost:3306/数据库名”,“用户名”,“密码”);
如果是连接本机,默认端口号为3306,则localhost:3306可以省略,斜线不可省略。
④定义sql:String sql = “updect 表名 set 列=值 ”
⑤获取执行sql语句的对象Statement:Statement stmt = c.createStatement();
⑥执行sal,接收返回结果:int num = stmt.executeUpdate(sql);
⑦处理结果:System.out.print(num);
⑧释放资源:stmt.close(); c.close();
JDBC连接数据库出现乱码解决方案
url ="jdbc:mysql://localhost:3306/mydb?characterEncoding=utf8&serverTimezone=Asia/Shanghai";
2、各个类详解:
Ⅰ、DriverManager类
作用:驱动管理对象 //拽我 买内姐
①注册驱动
方法一:直接调用DriverManager类中方法
static void registerDriver(Driver driver)//ruai级死特
方法二 :Class.forName(“com.mysql.jdbc.Driver”);
将Driver类加载近内存,里面有一段静态代码块
其本质上是执行DriverManager类中的方法static void registerDriver(Driver driver)进行驱动注册.
②获取数据库连接 //可奶可新
static Connection
getConnection(String url,String user, String password)
url:指定连接的路径
url语法:jdbc:mysql://ip(域名):端口号/数据库名称
如果是连接的本机的MySQL,url中黑体部分可以省略,但是两端的斜线不可省略
user和password:用户名和密码。
Ⅱ、Connection接口:数据库连接对象
功能一,创建实现sql语句的类的对象
Statement
获取传输器,用于将SQL语句发送到数据库。
PreparedStatement
prepareStatement(String sql)
创建一个 传输器,用于将参数化的SQL语句发送到数据库。
功能二,管理事务
void
setAutoCommit(boolean autoCommit)
将参数设为fales,开启事务
void
commit()
提交事务
void
rollback()
回滚
Ⅲ、Statement接口:执行sql语句的对象,传输器
boolean | execute(String sql) //A可死kei偶特 | 可以执行任意sql |
int | executeUpdate(String sql) | 执行 INSERT , UPDATE ,或 DELETE声明,返回影响的行数。或者0,如SQL DDL语句的SQL语句。 |
ResultSet | executeQuery(String sql) //快瑞 | 执行DQL查询语句,select |
Ⅳ、ResultSet接口:结果集对象,封装查询结果//瑞ra奥特
boolean next() 将光标从当前位置向下移动一行。返回值为 false表示游标所在行无数据 T getXXX(int/String num) 该方法获取该行的内容,XXX代表获取数据的类型,有多种重载 Object() getObject(int/String num) 终极方法 参数类型大概两种:
- int:代表列的编号,从1开始,列如getString(1)
- String:代表列的名称。如getString(“id”)
当使用该类遍历数据库内容时,将数据库内容封装为对象,然后装入集合中,遍历集合
Ⅴ、PreparedStatement接口:Statement的子类,更强大的
sql注入:在拼接sql时,有一些sql的特殊关键字参与字符串的拼接,会造成安全性问题。
PreparedStatement
prepareStatement(String sql)
传入的sal语句参数使用?占位符
使用PreparedStatement操作数据库的流程:
①导入jar包
②注册驱动
③获取数据库连接对象
④定义sql:sql语句种参数使用?代替
⑤使用数据库连接对象获取传输器PrepareStatement(String sql):给 ? 赋值的方法:
setXXX(参数一,参数二)//XXX代表?的的类型
参数一:? 的位置(int类型),从1开始
参数二:? 的值,字符串类型
setObject() 终极方法
⑥执行sql,接收返回结果,不需要传递参数
boolean execute() //A可死kei偶特 可以执行任意sql int executeUpdate() 执行 INSERT , UPDATE ,或 DELETE声明,返回影响的行数。或者0,如SQL DDL语句的SQL语句。 ResultSet executeQuery() 执行DQL查询语句,select ⑦处理结果
⑧释放资源