`
chen88358323
  • 浏览: 1874 次
  • 性别: Icon_minigender_1
  • 来自: 天津
社区版块
存档分类
最新评论

PreparedStatement 使用 demo

阅读更多
package cc.java.sql.db;

import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Timestamp;
import java.util.ArrayList;
import java.util.Calendar;
import java.util.Iterator;
import java.util.List;
/**
 * 代码来自:http://topic.csdn.net/u/20080519/16/b3aca5ab-e29c-4c8a-a066-27d7607ee072.html
 * 作为使用PreparedStatement的DEMO,简单的登陆与创建。
 * 数据库脚本见TEST_PreparedStatement.sql
 **/
public class Login {
	private static Connection conn ;
	private static ResultSet res ;
	private static java.sql.PreparedStatement prepar ; 
	private static List<UserBean> userList;
	public Login(){
		try	{
			Class.forName("com.mysql.jdbc.Driver");
			conn = DriverManager
			.getConnection(
					"jdbc:mysql://localhost:3306/test","root","111111");
			System.out.println("连接成功");
		}catch (SQLException ex){
			System.out.println(ex.getMessage() + "SQL错误");
		}catch (ClassNotFoundException ex){
			System.out.println(ex.getMessage() + "错误");
		} 
	}
	public static Connection getConn(){
		try	{
			Class.forName("com.mysql.jdbc.Driver");
			conn = DriverManager
			.getConnection(
					"jdbc:mysql://localhost:3306/test","root","111111");
			System.out.println("连接成功");
		}catch (SQLException ex){
			System.out.println(ex.getMessage() + "SQL错误");
		}catch (ClassNotFoundException ex){
			System.out.println(ex.getMessage() + "错误");
		} 
		return conn;
	}
	public void close(){ 
		try	{
			if (res != null){
				res.close();
			}
			if (prepar != null){
				prepar.close();
			}
			if (conn != null){
				conn.close();
			}
		}catch (SQLException ex){
			ex.printStackTrace();
		}
		System.out.println("关闭成功");
	}
	public boolean checkUserLogin(String name,String password)
	{
		boolean result = false;
		try	{
			String sql =
				"select count(*) from test_preparedstatement where username=? and password=?";
			prepar = conn.prepareStatement(sql);
			prepar.setString(1, name);
			prepar.setString(2, password);
			res = prepar.executeQuery();
			if (res.next())	{
				if (res.getInt(1) > 0){
					result = true;
				}
			}
		}catch (Exception e)	{
			e.printStackTrace();
		}finally{
			close();
		}
		return result;
	}
	public void addUser(UserBean person){
		try	{
			String sql="insert into test_preparedstatement (username,password,mail,registtime) values(?,?,?,?)";
			prepar=conn.prepareStatement(sql);
			prepar.setString(1,person.getUsername());
			prepar.setString(2,person.getPassword());
			prepar.setString(3,person.getMail());
			prepar.setTimestamp(4,person.getRegistTime());
			prepar.executeUpdate();
		}catch(Exception e){
			e.printStackTrace();
		}finally{
			close();
		}
	}
	/**用于批量添加用戶**/
	public void addUser(List<UserBean> user){
		try	{
		String sql="insert into test_preparedstatement (username,password,mail,registtime) values(?,?,?,?)";
		prepar=conn.prepareStatement(sql);
		for (Iterator iterator = user.iterator(); iterator.hasNext();) {
			UserBean userBean = (UserBean) iterator.next();
			prepar.setString(1,userBean.getUsername());
			prepar.setString(2,userBean.getPassword());
			prepar.setString(3,userBean.getMail());
			prepar.setTimestamp(4,userBean.getRegistTime());
			prepar.addBatch();
		}
		prepar.executeBatch();
		}catch(Exception e){
			e.printStackTrace();
		}finally{
			close();
		}
	}
	/**用于批量修改**/
	public void updatebatch(List<UserBean> user){
		try	{
			String sql="update test_preparedstatement set password=? where user=?";
			prepar=conn.prepareStatement(sql);
			for (Iterator iterator = user.iterator(); iterator.hasNext();) {
				UserBean userBean = (UserBean) iterator.next();
				prepar.setString(1,userBean.getUsername());
				prepar.setString(2,userBean.getPassword());
				prepar.addBatch();
			}
			prepar.executeBatch();
		}catch(Exception e){
			e.printStackTrace();
		}finally{
			close();
		}
	}
	public static void main(String[] args) {
		// TODO Auto-generated method stub
		Login login=new Login();
		userList=login.initdb();
		login.addUser(userList);
		
	
	}
	/**建立表后使用此方法填充数据**/
	public  List<UserBean> initdb(){
		List<UserBean> userLists=new ArrayList<UserBean>();
		for (int i = 0; i < 10; i++) {
			String name_pass="test"+i;
			userLists.add(new UserBean(name_pass,name_pass,"name_pass",getTime()));
		}
		return userLists;
	}
	/**得到当前时间**/
	public static Timestamp getTime(){
		Calendar c = Calendar.getInstance();
//		c.set(2009, 2, 12, 0, 9, 22);// test
		return  new Timestamp(c.getTimeInMillis());
	}	
}
class UserBean{

	private String username;
	private String password;
	private String mail;
	private Timestamp registTime;
	
	public UserBean(String username, String password, String mail,
			Timestamp registTime) {
		super();
		this.username = username;
		this.password = password;
		this.mail = mail;
		this.registTime = registTime;
	}
	public String getUsername() {
		return username;
	}
	public void setUsername(String username) {
		this.username = username;
	}
	public String getPassword() {
		return password;
	}
	public void setPassword(String password) {
		this.password = password;
	}
	public String getMail() {
		return mail;
	}
	public void setMail(String mail) {
		this.mail = mail;
	}
	public Timestamp getRegistTime() {
		return registTime;
	}
	public void setRegistTime(Timestamp registTime) {
		this.registTime = registTime;
	} 
}
/**

SET FOREIGN_KEY_CHECKS=0;
-- ----------------------------
-- Table structure for test_preparedstatement
-- ----------------------------
CREATE TABLE `test_preparedstatement` (
  `id` int(10) NOT NULL auto_increment,
  `username` varchar(50) NOT NULL,
  `password` varchar(50) NOT NULL,
  `mail` varchar(20) NOT NULL,
  `registtime` timestamp NOT NULL default '0000-00-00 00:00:00' on update CURRENT_TIMESTAMP,
  PRIMARY KEY  (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8;

-- ----------------------------
-- Records 
-- ----------------------------
INSERT INTO `test_preparedstatement` VALUES ('1', 'test0', 'test0', 'name_pass', '2009-03-30 10:59:15');
INSERT INTO `test_preparedstatement` VALUES ('2', 'test1', 'test1', 'name_pass', '2009-03-30 10:59:15');
INSERT INTO `test_preparedstatement` VALUES ('3', 'test2', 'test2', 'name_pass', '2009-03-30 10:59:15');
INSERT INTO `test_preparedstatement` VALUES ('4', 'test3', 'test3', 'name_pass', '2009-03-30 10:59:15');
INSERT INTO `test_preparedstatement` VALUES ('5', 'test4', 'test4', 'name_pass', '2009-03-30 10:59:15');
INSERT INTO `test_preparedstatement` VALUES ('6', 'test5', 'test5', 'name_pass', '2009-03-30 10:59:15');
INSERT INTO `test_preparedstatement` VALUES ('7', 'test6', 'test6', 'name_pass', '2009-03-30 10:59:15');
INSERT INTO `test_preparedstatement` VALUES ('8', 'test7', 'test7', 'name_pass', '2009-03-30 10:59:15');
INSERT INTO `test_preparedstatement` VALUES ('9', 'test8', 'test8', 'name_pass', '2009-03-30 10:59:15');
INSERT INTO `test_preparedstatement` VALUES ('10', 'test9', 'test9', 'name_pass', '2009-03-30 10:59:15');

 **/
分享到:
评论

相关推荐

    Java数据库连接PreparedStatement的使用详解

    Java 数据库连接 PreparedStatement 的使用详解 Java 数据库连接 PreparedStatement 是 Java 语言中连接数据库的重要组件之一。通过使用 PreparedStatement,可以实现对数据库的 CRUD(Create, Read, Update, ...

    JDBC基础demo

    **JDBC基础DEMO详解** Java Database Connectivity (JDBC) 是Java编程语言中用于与数据库交互的一组接口和类。这个“JDBC基础demo”旨在为初学者提供一个直观的起点,了解如何在Java应用程序中连接到数据库、执行...

    javaweb增删改查demo

    在本示例中,"javaweb、jdbc增删改查demo、实例"是一个实际操作的项目,旨在教授如何使用JavaWeb和JDBC(Java Database Connectivity)来实现数据库中的基本操作:增(Add)、删(Delete)、改(Update)和查...

    在线考试系统_Demo

    在线考试系统_Demo是一个以Java技术为核心的项目,旨在实现对数据库的基本操作,即增删改查功能。在软件开发领域,这些操作构成了数据管理的基础,是任何涉及数据存储和检索的应用程序不可或缺的部分。本系统可能...

    jdbc_demo.zip_DEMO_jdbc java demo

    本DEMO主要展示了JDBC在实际开发中的基本使用方法,非常适合初学者理解和实践。 在Java中,JDBC提供了一套API,包括DriverManager、Connection、Statement、PreparedStatement、ResultSet等核心接口和类。首先,...

    Java对数据库CRUD DEMO

    在本DEMO中,你可能会看到`java.sql.Connection`、`Statement`、`PreparedStatement`和`ResultSet`等核心接口和类的使用。 2. **连接数据库**: 使用`DriverManager.getConnection()`方法建立与数据库的连接。首先...

    Demo.rar_DEMO

    在实际项目中,为了代码的可维护性和安全性,通常会使用连接池(如HikariCP、C3P0或Apache DBCP)来管理数据库连接,并使用`PreparedStatement`来防止SQL注入。 为了更好地理解`Demo.java`的内容,你需要打开文件...

    java连接Mysql数据库Demo

    本Demo将向你展示如何使用Java通过JDBC连接到MySQL数据库,执行SQL语句并处理结果。 首先,我们需要理解JDBC的核心概念。JDBC是一个API,它提供了在Java应用程序中访问各种数据库的一致方法。它包括一组Java类和...

    Oracle 官方 JDBC Demo JAVA

    Oracle官方JDBC Demo是Oracle公司提供的Java数据库连接(JDBC)示例代码,旨在帮助开发者理解和使用JDBC驱动程序与Oracle数据库进行交互。这个压缩包包含了一些基础到高级的JDBC操作实例,对于初学者和有经验的开发...

    JDBC CRUD操作的粗略封装DEMO

    这个DEMO对于初学者来说是一个很好的实践,通过它,我们可以了解到JDBC操作的基本流程和最佳实践,如使用PreparedStatement防止SQL注入,以及正确关闭资源以避免内存泄漏。同时,封装工具类和回调函数的设计思路也有...

    demo.rar_DEMO

    8. **JDBC**:Java Database Connectivity允许Java程序连接和操作数据库,样例程序会展示如何使用Statement、PreparedStatement进行SQL操作。 9. **Swing和JavaFX**:这两者是Java的GUI库,样例程序可能会创建窗口...

    jdbc操作Mysql数据库demo

    public class JdbcDemo { public static void main(String[] args) { String url = "jdbc:mysql://localhost:3306/mydb?useSSL=false&serverTimezone=UTC"; String user = "root"; String password = "password...

    hibernate jsp 分页Demo

    10. **数据安全**: 在处理用户输入以构造查询时,必须防止SQL注入攻击,可以通过预编译语句(PreparedStatement)或者使用Hibernate的参数绑定机制来实现。 综上所述,"hibernate jsp 分页Demo"项目是一个教学实例...

    H2 DEMO 数据库 实例 JAVA

    本文将深入探讨H2数据库的使用,特别是结合Java环境下的DEMO实例,以帮助你更好地理解和应用这一强大的数据库系统。 H2数据库的特点: 1. **跨平台性**:由于H2是用Java编写的,因此可以在任何支持Java的平台上运行...

    Demo.zip_DEMO_jdbc

    标题 "Demo.zip_DEMO_jdbc" 暗示着这是一个包含有关如何在Java应用程序中使用JDBC(Java Database Connectivity)连接MySQL数据库的演示项目。在这个压缩包中,我们有一个名为 "Demo.java" 的源代码文件,它很可能是...

    JDBC技术Demo

    总的来说,"JDBC技术Demo"展示了如何在Java程序中使用JDBC API来操作数据库,包括建立连接、执行SQL语句和处理结果。通过这个Demo,开发者可以理解JDBC的工作原理,并学习到如何在实际项目中应用这些知识。

    servlet3.0+jdbc demo

    此外,还可能包含预编译SQL语句的使用(PreparedStatement),防止SQL注入攻击,并提高查询效率。 在Servlet中调用这些封装好的JDBC方法,可以处理用户请求,比如从数据库中获取数据并将其展示在网页上,或者接收...

    java 连接mysql demo和所有jar

    此外,为了防止SQL注入,应使用PreparedStatement而不是Statement。 5. **安全性**:在生产环境中,避免在代码中硬编码数据库的用户名和密码,而应该使用环境变量或配置文件。同时,定期更新JDBC驱动以获取最新的...

    JAVA内存数据库使用demo

    - 插入数据:使用`PreparedStatement`对象,可以预编译SQL语句,提高效率并防止SQL注入。 - 查询数据:同样通过`Statement`或`PreparedStatement`执行`SELECT`语句,并用`ResultSet`获取结果。 4. **事务管理**:...

    struts1的简单demo含数据库

    这些方法可能使用PreparedStatement防止SQL注入,并确保安全。 用户登录测试通常包括以下几个步骤: 1. 用户在前端界面输入用户名和密码。 2. Struts1的ActionForm对象收集表单数据,如`LoginForm`,并将其传递给...

Global site tag (gtag.js) - Google Analytics