PreparedStatement接口及其方法的使用
PreparedStatement接口是Statement接口的子接口,使用它的好处有三个
一:简化代码,便于sql语句的书写
二:有效的禁止sql语句的注入,例如:用户名和密码,使用PreparedStatement接口的方法,可防止不正确的输入登陆成功,提高
数据库系统的安全性
三:最大可能的提高了效率
代码如下:
package com.lanqiao.javatest;
import java.io.IOException;
import java.io.InputStream;
import java.sql.Connection;
import java.sql.Date;
import java.sql.Driver;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.util.Properties;
import org.junit.Test;
import com.mysql.jdbc.Statement;
/*
 * preparedStatement是Statement的子接口,好处一:可实现sql语句的便捷写法
 * */
public class Test1 {
public void testPreparedStatement() throws Exception{
		Connection connection=null;
		PreparedStatement preparedstatement=null;
		try {
			connection=getConnection();
			String sql="insert into table12 (id,name,email,birth) values(?,?,?,?)";
			preparedstatement=connection.prepareStatement(sql);
			preparedstatement.setInt(1, 8);
			preparedstatement.setString(2, "liquan");
			preparedstatement.setString(3, "fsdf");
			preparedstatement.setDate(4, new Date(new java.util.Date().getTime()));
//获取实时时间的方法Date date=new Date(new java.util.Date().getTame);
preparedstatement.executeUpdate();
		} catch (Exception e) {
			e.printStackTrace();
		}finally {
			if(preparedstatement!=null){
				preparedstatement.close();
			}
			if(connection!=null){
				connection.close();
			}
		}
	}
	public Connection getConnection() throws Exception{
		String driverClass=null;
		String jdbcUrl=null;
		String user=null;
		String password=null;
InputStream in=Test1.class.getClassLoader().getResourceAsStream("jdbc.properties");
		Properties properties=new Properties();
		properties.load(in);
driverClass=properties.getProperty("driver");
		jdbcUrl=properties.getProperty("jdbcUrl");
		user=properties.getProperty("user");
		password=properties.getProperty("password");
Driver driver=(Driver)Class.forName(driverClass).newInstance();
		Properties info=new Properties();
		info.put("user", "root");
		info.put("password", "lxn123");
		Connection connection=driver.connect(jdbcUrl, info);
		return connection;
	}
public void testConnection() throws Exception{
		System.out.println(getConnection());
	}
	@Test
	//好处二:作用:有效的禁止sql注入,输入正确的用户名和密码才能登陆;
	//就是防止错误的用户名和密码,实现数据库的安全性
	public void testSQL() throws Exception{
//		String userName="a' or password=";
//		String password="or '1'='1";
String userName="lxn";
		String password="lxn123";
String sql="SELECT * FROM table1 WHERE userName=? AND PASSWORD=?";
		System.out.println(sql);
Connection connection=null;
		PreparedStatement preparedstatement=null;
		ResultSet resultset=null;
		try {
			connection=getConnection();
			preparedstatement=connection.prepareStatement(sql);
preparedstatement.setString(1, userName);
			preparedstatement.setString(2, password);;
resultset=preparedstatement.executeQuery();
			if(resultset.next()){
				System.out.println("登陆成功!!!");
			}
			else{
				System.out.println("登陆失败!!!");
			}
		} catch (Exception e) {
}finally{
			if (resultset!=null) {
				resultset.close();
			}
			if (preparedstatement!=null) {
				preparedstatement.close();
			}
			if (connection!=null) {
				connection.close();
			}
		}
	}
//好处三:最大可能的提高效率
}
PreparedStatement接口及其方法的使用的更多相关文章
- jdbc java数据库连接 4)PreParedStatement接口 之 区别和例子
		Statement 和 PreparedStatement 的区别: 1)语句不同 PreparedStatement需要预编译以及需要参数 2)由于PreparedStatement有缓存区,所以效 ... 
- JDBC的使用(二):PreparedStatement接口;ResultSet接口(获取结果集);例题:SQL注入
		ResultSet接口:类似于一个临时表,用来暂时存放数据库查询操作所获得的结果集. getInt(), getFloat(), getDate(), getBoolean(), getString( ... 
- Java数据库——PreparedStatement接口
		PreparedStatement接口是Statement的子接口,属于预处理操作,与直接使用Statement不同的是,PreparedStatement在操作时,是先在数据表中准备好了一条SQL语 ... 
- MySQL数据库学习笔记(九)----JDBC的ResultSet接口(查询操作)、PreparedStatement接口重构增删改查(含SQL注入的解释)
		[声明] 欢迎转载,但请保留文章原始出处→_→ 生命壹号:http://www.cnblogs.com/smyhvae/ 文章来源:http://www.cnblogs.com/smyhvae/p/4 ... 
- JDBC数据库编程:PreparedStatement接口
		使用PreparedStatement进行数据库的更新及查询操作. PreparedStatement PreparedStatement是statement子接口.属于预处理. 使用statemen ... 
- 为什么类和接口不能使用private和protected?接口的方法不能使用private、protected、default
		对于java程序员来说,java的访问权限修饰词public.protected.default.private的区别和使用肯定都不是问题,这里也不再啰嗦了,反正度娘一搜就一大把.最近在整理java ... 
- java中获取接口(方法)中的参数名字(eclipse设置编译参数)(java8 javac -parameters)
		interface接口参数 jdk1.7及以前使用spring功能实现的: 注意: 1.该功能只能获取类的方法的参数名,不能获取接口的方法的参数名. public static void test() ... 
- java 28 - 7 JDK8的新特性 之 接口可以使用方法
		JDK8的新特性: http://bbs.itcast.cn/thread-24398-1-1.html 其中之一:接口可以使用方法 interface Inter { //抽象方法 public a ... 
- Spring自定义一个拦截器类SomeInterceptor,实现HandlerInterceptor接口及其方法的实例
		利用Spring的拦截器可以在处理器Controller方法执行前和后增加逻辑代码,了解拦截器中preHandle.postHandle和afterCompletion方法执行时机. 自定义一个拦截器 ... 
随机推荐
- 数据存储之plist、偏好设置
			// 偏好设置--------------------------------- // 存储基本类型数据 NSUserDefaults *defaults = [NSUserDefaults stan ... 
- UITextFiled
			- (void)viewDidLoad { [super viewDidLoad]; // Do any additional setup after loading the view, typica ... 
- 多语言本地化开发Localized
			NSString * ViewsLocalizedStringFormat(NSString *key,NSString *defValue); // Handle localized strings ... 
- Swift游戏实战-跑酷熊猫 03 熊猫跑动动画
			这节内容,我们一起来利用SKAction的来为熊猫创建动画,我们将学会通过纹理组产生动画,使用永远循环的SKAction让熊猫不停的跑动. 要点: 枚举的使用:用来记录熊猫的动作状态 enum Sta ... 
- Subversion how[Reprint]
			1. Subversion简介 Subversion(简称SVN)是一款功能强大的开源版本控制工具,支持Linux和Windows平台. SVN可以有两个访问方式,一种是独立服务器直接访问,即利用 ... 
- nyist 518 取球游戏
			http://acm.nyist.net/JudgeOnline/problem.php?pid=518 取球游戏 时间限制:1000 ms | 内存限制:65535 KB 难度:2 描述 今 ... 
- C# 类的介绍,参数传递,各种符号说法
			using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.T ... 
- [转]Java中的多线程你只要看这一篇就够了
			如果对什么是线程.什么是进程仍存有疑惑,请先Google之,因为这两个概念不在本文的范围之内. 用多线程只有一个目的,那就是更好的利用cpu的资源,因为所有的多线程代码都可以用单线程来实现.说这个话其 ... 
- 利用API 建立Dependent Value Set
			. 建立SET fnd_flex_val_api.create_valueset_independent(v_set_name ,v_description ,v_security ,v_enable ... 
- Bishop的大作《模式识别与机器学习》Ready to read!
			久仰Bishop的大作“Pattern Recognition and Machine Learning”已久,在我的硬盘里已经驻扎一年有余,怎奈惧其页数浩瀚,始终未敢入手.近日看文献,屡屡引用之.不 ... 
