MySQL数据库05---JDBC及SQL注入

本文详细介绍了JDBC的基本操作步骤,包括加载驱动、连接数据库、执行SQL语句(如增删改查)及处理结果集。同时,针对SQL注入这一安全隐患,强调了其对数据安全的影响,并提醒开发者注意防止SQL拼接漏洞。
摘要由CSDN通过智能技术生成

一、JDBC

1、数据库驱动
驱动 : 声卡,显卡、数据库
我们的程序会通过数据库驱动,和数据库打交道!
2、JDBC
在这里插入图片描述
3、创建JDBC程序
步骤总结:
1、加载驱动
2、连接数据库DriverManager
3、获得执行sql的对象Statement
4、获得返回的结果集
5、释放连接

  • DriverManager
// DriverManager.registerDriver(new com.mysq1.jdbc.Driver();
Class.forName("com.mysq1.jdbc.Driver");   //固定写法,加载驱动
Connection connection = briverManager.getconnection(ur1,username,password);

//connection代表数据库
//数据库设置自动提交
//事务提交
//事务回滚
connection.rollback();
connection.commit();
connection.setAutocommit();
  • URL
String ur1 = "jdbc :mysql://localhost:3306/jdbcstudy?useUnicode=true&characterEncoding=utf8&usessL=true";

// mysq1 -- 3306
// 协议∶//主机地址:端口号/数据库名?参数1&参数2&参数3

// oralce -- 1521
// jdbc:oracle:thin : @1oca1host:1521:sid
  • Statement 执行SQL 的对象 PrepareStatement 执行SQL 的对象
statement.executequery();  //查询操作返回 Resu7tset
statement.execute();  //执行任何sQL
statement.executeupdate();  //更新、插入、删除。都是用这个,返回一个受影响的行数
  • ResultSet查询的结果集 : 封装了所有的查询结果
    获得指定的数据类型
resultSet.getobject(); //在不知道列类型的情况下使用
//如果知道列的类型就使用指定的类型
resultSet.getstring();
resultSet.getInt();
resultSet.getF1oat();
resultSet.getDate();
resultSet.getobject();
....
  • 遍历,指针
resultSet.beforeFirst();  //移动到最前面
resultSet.afterLast();  //移动到最后面
resultSet.next();  //移动到下一个数据
resultSet.previous();  //移动到前一行
resultSet.absolute(row);  //移动到指定行
  • 释放资源
//6、释放连接
resultSet.c1ose(); 
statement.close();
connection.close();   //耗资源,用完关掉!

4、statement对象
jdbc中的statement对象用于向数据库发送SQL语句,想完成对数据库的增删改查,只需要通过这个对象向数据库发送增删改查语句即可。

  • Statement对象的executeUpdate方法,用于向数据库发送增、删、改的sql语句,executeUpdate执行完后,将会返回一个整数(即增删改语句导致了数据库几行数据发生了变化)。
  • Statement.executeQuery方法用于向数据库发送查询语句,executeQuery方法返回代表查询结果的ResultSet对象。

CRUD操作-create
使用executeUpdate(String sql)方法完成数据添加操作,示例操作:

Statement st = conn.createstatement();
String sql = "insert into user (....) values(.....) ";
int num = st.executeupdate(sql);
if(num>0){
    System.out.println("插入成功!!! ");
}

CRUD操作-delete
使用executeUpdate(String sql)方法完成数据删除操作,示例操作:

Statement st = conn.createstatement();
String sql = "delete from user where id=1";
int num = st.executeupdate(sql);
if(num>0){
    System.out.println("删除成功! ! ! ");
}

CRUD操作-update
使用executeUpdate(String sql)方法完成数据修改操作,示例操作:

Statement st = conn. createstatement();
String sql = "update user set name='' where name=' ' ";
int num = st.executeupdate(sql);
if(num>0){
    System.out.println("修改成功! ! ! ");
}

CRUD操作-read
使用executeQuery(String sql)方法完成数据查询操作,示例操作:

Statement st = conn.createstatement();
String sql = "se1ect * from user where id=1";
Resu1tset rs = st.executeupdate(sql);
while(rs.next(){
     //根据获取列的数据类型,分别调用rs的相应方法映射到java对象中
 }

二、SQL注入

sql存在漏洞,会被攻击导致数据泄露。也就是SQL会被拼接 or

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值