JAVA通过JDBC链接数据库获取数据(三)PreparedStatement预编译SQL

举报
brucexiaogui 发表于 2021/12/30 01:26:48 2021/12/30
4.2k+ 0 0
【摘要】 JAVA通过JDBC链接数据库获取数据(三)PreparedStatement预编译SQL 一、PreparedStatement 作用 1、可以防止SQL注入:对JDBC而言,SQL注入攻击只对Statement有效,对PreparedStatement是无效的,这是因为PreparedStatement不允许在插入时改变查...

JAVA通过JDBC链接数据库获取数据(三)PreparedStatement预编译SQL


一、PreparedStatement 作用

1、可以防止SQL注入:对JDBC而言,SQL注入攻击只对Statement有效,对PreparedStatement是无效的,这是因为PreparedStatement不允许在插入时改变查询的逻辑结构.

2、可以存储和读取大文本文件。

二、PreparedStatement 操作数据库使用实例



      package com.sql;
      import java.sql.Connection;
      import java.sql.DriverManager;
      import java.sql.PreparedStatement;
      import java.sql.SQLException;
      import java.util.Scanner;
      import org.junit.After;
      import org.junit.Before;
      import org.junit.Test;
      public class PreparedStatementDemo {
     	Connection con = null;
     	// 在执行SQL语句前先执行 @Before 的代码
     	@Before
     	public void init() throws Exception{
     		//注册驱动
      		Class.forName("com.mysql.jdbc.Driver");
     		//获取链接
     		String url = ("jdbc:mysql://127.0.0.1:3306/long1?characterEncoding=UTF8");
      		con = DriverManager.getConnection(url,"root","123456");
      		System.out.println(con);
      	}
     	//获取到数据库的数据后,执行释放资源
     	@After
     	public void destory() throws SQLException{
      		con.close();
      	}
     	@Test
     	public void Preparedst() throws SQLException{
      		System.out.println("请输入账号和密码");
     		Scanner sc = new Scanner(System.in);
     		String name = sc.nextLine(); //输入账号
     		String pwd = sc.next(); //输入密码
     		//获取sql 输入的参数都用? 作为占位符
     		String sql = "insert into uses(u_name,pwd) values(?,?)";
     		//输出SQL语句,?号不会显示为具体的参数都是在PreparedStatement内部处理。不会给其他人看到。
      		System.out.println("sql 语句是:"+sql);
     		//获取预编译的statement
     		PreparedStatement pt = con.prepareStatement(sql);
     		//给每一个?替换成输入的参数
     		//第一个?替换成输入的账号 name变量
      		pt.setString(1, name);
     		//第二个?替换成输入的密码 pwd 变量
      		pt.setString(2, pwd);
     		//执行sql语句
      		pt.executeUpdate();
      	}
      }
  
 


文章来源: brucelong.blog.csdn.net,作者:Bruce小鬼,版权归原作者所有,如需转载,请联系作者。

原文链接:brucelong.blog.csdn.net/article/details/77915864

【版权声明】本文为华为云社区用户转载文章,如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

作者其他文章

评论(0

抱歉,系统识别当前为高风险访问,暂不支持该操作

    全部回复

    上滑加载中

    设置昵称

    在此一键设置昵称,即可参与社区互动!

    *长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

    *长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。