JAVA通过JDBC链接数据库获取数据(三)PreparedStatement预编译SQL
【摘要】
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)