MySQL之JDBC——day29 JDBC介绍,防止SQL注入

第一次接触JDBC,不知道JDBC是什么

JDBC介绍

  • JDBC :JAVA Data Base Connection Java链接数据库
  • JDBC:实现java和数据库进行连接
    java为此提供了一套规范,并自行维护
    各数据库厂商想要和java进行连接就定义实现类俗称驱动,并且自行维护

JDBC快速入门

  1. 导入数据库的驱动的JAR包,并进行依赖
  2. 加载驱动的JAR包
  3. 获取链接对象
  4. 获取操作对象
  5. 开始操作
  6. 释放资源
//导入数据库的驱动并进行依赖
// 加载驱动的jar包
class.forName("com.mysql.jdbc.Driver");
//获取链接对象,先和哪个数据库进行连接
String url="jdbc:mysql://location:3306/myssql";
 String username="root";
String password="123456";
Connection conn=DriverManager.getConnection(url,username,password);
//获取操作对象
 Statement statement = conn.createStatement();
 //执行sqll语句   先写出sql的增删改,在进行执行
String sql="insert into users values('wangwu','123456')";
 int i = statement.executeUpdate(sql); 

 if(i>0){
            System.out.println("插入成功");
        }else{
            System.out.println("插入失败");
        }
//释放资源

conn.close();
statement.close();

几个类的介绍

Class.forName(“com.mysql.jdbc.Driver”); 加载驱动,也可以省略不写
注册驱动是Driver里面的静态代码块在做
static {
try {
DriverManager.registerDriver(new Driver());
} catch (SQLException var1) {
throw new RuntimeException(“Can’t register driver!”);
}
}

  • 类 DriverManager Java提供的 管理一组 JDBC 驱动程序的基本服务。
  • 接口Connection 试图建立到给定的数据库的URL的连接.
  • 接口 Statement 用于执行静态代码块SQL语句并返回它所生成结果的对象
  • boolean b = statement.execute(sql);//用来执行所有的SQL语句 返回:
  • 如果第一个结果为 ResultSet 对象,则返回 true;如果其为更新计数或者不存在任何结果,则返回 false
  • int i = statement.executeUpdate(sql);//用来执行DML语句 用来对表中数据进行增删改 返回值是影响的行数
  • statement.executeQuery(sql);//用来执行DQl语句

结果集对象ResultSet

结果集对象:是我们执行了查询语句之后返回的一个查询结果对象
ResultSet 对象具有指向当前数据行的光标,最初,光标被放在第一行之前,nex将光标移到下一行;因为该方法在ResultSet对象没有下一行的时候返回的是false,所以可以在while循环语句中用它来迭代结果集

while (resultSet.next()){
            //参数就是数据库中的字段序号 从1开始
            //String username = resultSet.getString(1);
            //int age = resultSet.getInt(2);
            //通过字段名来获取字段的值
            String username = resultSet.getString("username");
            int age = resultSet.getInt("age");
            //System.out.println(username+"==="+age);
            //我们从数据库中取出了数据,就是为了要使用这些数据,那我们就要对这些数据进行封装
            Student student = new Student(username, age);
            list.add(student);
        }

预编译操作对象 PrepareStatement

  • 这个操作对象:可以在安全方面防止sql注入
  • 使用步骤
  1. conn.prepareStatement(sql);
  2. sql语句中的字段的值可以用?进行占位
  3. 给sql语句中的?进行赋值
    //SQL语句中的值 全部用 ? 问号占位
    String sql=“SELECT * FROM users WHERE username=? AND PASSWORD=?”;
    //获取一个预编译对象 PreparedStatement
    PreparedStatement preparedStatement = conn.prepareStatement(sql);
    //把SQL语句给这个预编译对象
    //下来给问号赋值 参1.问号的顺序,从1开始数 参数2 问号的值
    preparedStatement.setString(1,uname);
    preparedStatement.setString(2,pwd);
    ResultSet resultSet = preparedStatement.executeQuery(); //这里就不要再传入SQL语句
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值