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,可以实现对数据库的 CRUD(Create, Read, Update, ...
**JDBC基础DEMO详解** Java Database Connectivity (JDBC) 是Java编程语言中用于与数据库交互的一组接口和类。这个“JDBC基础demo”旨在为初学者提供一个直观的起点,了解如何在Java应用程序中连接到数据库、执行...
在本示例中,"javaweb、jdbc增删改查demo、实例"是一个实际操作的项目,旨在教授如何使用JavaWeb和JDBC(Java Database Connectivity)来实现数据库中的基本操作:增(Add)、删(Delete)、改(Update)和查...
在线考试系统_Demo是一个以Java技术为核心的项目,旨在实现对数据库的基本操作,即增删改查功能。在软件开发领域,这些操作构成了数据管理的基础,是任何涉及数据存储和检索的应用程序不可或缺的部分。本系统可能...
本DEMO主要展示了JDBC在实际开发中的基本使用方法,非常适合初学者理解和实践。 在Java中,JDBC提供了一套API,包括DriverManager、Connection、Statement、PreparedStatement、ResultSet等核心接口和类。首先,...
在本DEMO中,你可能会看到`java.sql.Connection`、`Statement`、`PreparedStatement`和`ResultSet`等核心接口和类的使用。 2. **连接数据库**: 使用`DriverManager.getConnection()`方法建立与数据库的连接。首先...
在实际项目中,为了代码的可维护性和安全性,通常会使用连接池(如HikariCP、C3P0或Apache DBCP)来管理数据库连接,并使用`PreparedStatement`来防止SQL注入。 为了更好地理解`Demo.java`的内容,你需要打开文件...
本Demo将向你展示如何使用Java通过JDBC连接到MySQL数据库,执行SQL语句并处理结果。 首先,我们需要理解JDBC的核心概念。JDBC是一个API,它提供了在Java应用程序中访问各种数据库的一致方法。它包括一组Java类和...
Oracle官方JDBC Demo是Oracle公司提供的Java数据库连接(JDBC)示例代码,旨在帮助开发者理解和使用JDBC驱动程序与Oracle数据库进行交互。这个压缩包包含了一些基础到高级的JDBC操作实例,对于初学者和有经验的开发...
这个DEMO对于初学者来说是一个很好的实践,通过它,我们可以了解到JDBC操作的基本流程和最佳实践,如使用PreparedStatement防止SQL注入,以及正确关闭资源以避免内存泄漏。同时,封装工具类和回调函数的设计思路也有...
8. **JDBC**:Java Database Connectivity允许Java程序连接和操作数据库,样例程序会展示如何使用Statement、PreparedStatement进行SQL操作。 9. **Swing和JavaFX**:这两者是Java的GUI库,样例程序可能会创建窗口...
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...
10. **数据安全**: 在处理用户输入以构造查询时,必须防止SQL注入攻击,可以通过预编译语句(PreparedStatement)或者使用Hibernate的参数绑定机制来实现。 综上所述,"hibernate jsp 分页Demo"项目是一个教学实例...
本文将深入探讨H2数据库的使用,特别是结合Java环境下的DEMO实例,以帮助你更好地理解和应用这一强大的数据库系统。 H2数据库的特点: 1. **跨平台性**:由于H2是用Java编写的,因此可以在任何支持Java的平台上运行...
标题 "Demo.zip_DEMO_jdbc" 暗示着这是一个包含有关如何在Java应用程序中使用JDBC(Java Database Connectivity)连接MySQL数据库的演示项目。在这个压缩包中,我们有一个名为 "Demo.java" 的源代码文件,它很可能是...
总的来说,"JDBC技术Demo"展示了如何在Java程序中使用JDBC API来操作数据库,包括建立连接、执行SQL语句和处理结果。通过这个Demo,开发者可以理解JDBC的工作原理,并学习到如何在实际项目中应用这些知识。
此外,还可能包含预编译SQL语句的使用(PreparedStatement),防止SQL注入攻击,并提高查询效率。 在Servlet中调用这些封装好的JDBC方法,可以处理用户请求,比如从数据库中获取数据并将其展示在网页上,或者接收...
此外,为了防止SQL注入,应使用PreparedStatement而不是Statement。 5. **安全性**:在生产环境中,避免在代码中硬编码数据库的用户名和密码,而应该使用环境变量或配置文件。同时,定期更新JDBC驱动以获取最新的...
- 插入数据:使用`PreparedStatement`对象,可以预编译SQL语句,提高效率并防止SQL注入。 - 查询数据:同样通过`Statement`或`PreparedStatement`执行`SELECT`语句,并用`ResultSet`获取结果。 4. **事务管理**:...
这些方法可能使用PreparedStatement防止SQL注入,并确保安全。 用户登录测试通常包括以下几个步骤: 1. 用户在前端界面输入用户名和密码。 2. Struts1的ActionForm对象收集表单数据,如`LoginForm`,并将其传递给...