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

来源:互联网 发布:单端口多用户什么意思 编辑:程序博客网 时间:2024/05/22 10:52

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 的代码@Beforepublic 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);}//获取到数据库的数据后,执行释放资源@Afterpublic void destory() throws SQLException{con.close();}@Testpublic 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);//获取预编译的statementPreparedStatement pt = con.prepareStatement(sql);//给每一个?替换成输入的参数//第一个?替换成输入的账号 name变量pt.setString(1, name);//第二个?替换成输入的密码 pwd 变量pt.setString(2, pwd);//执行sql语句pt.executeUpdate();}}


阅读全文
0 0
原创粉丝点击