分别使用Statement和PreparedStatement对数据库进行操作

// 插入操作
    public void insert(Vector<Person> vt) {
        PreparedStatement ps = null;
        try {
            dbHelper = new DBHelper();
            conn = dbHelper.getConn();
            conn.setAutoCommit(false);// 首先把Auto commit设置为false,不让它自动提交
            String sql = "insert into " + Constant.TABLE_NAME
                    + " values (?,?,?,?,?,?)";
            ps = conn.prepareStatement(sql);
            for (Person person : vt) {
                ps.setInt(1, person.getId());
                ps.setString(2, person.getName());
                ps.setString(3, person.getAge());
                ps.setString(4, person.getSex());
                ps.setString(5, person.getTelNum());
                ps.setString(6, person.getAddress());
                ps.addBatch();
            }
            ps.executeBatch();
            conn.commit();// 进行手动提交(commit)
            conn.setAutoCommit(true);// 提交完成后回复现场将Auto commit,还原为true
            System.out.println("添加成功");
        } catch (SQLException e) {
            e.printStackTrace();
            try {// 若出现异常,对数据库中所有已完成的操作全部撤销,则回滚到事务开始状态
                if (!conn.isClosed()) {
                    // 当异常发生执行catch中SQLException时,记得要rollback(回滚);
                    conn.rollback();
                    System.out.println("插入失败,回滚!");
                    conn.setAutoCommit(true);
                }
            } catch (SQLException e1) {
                e1.printStackTrace();
            }
        } finally {
            try {
                ps.close();
                conn.close();
            } catch (SQLException e) {
                e.printStackTrace();
            }

        }
    }

    // 查询操作
    public Vector<Person> selectAll() {
        Vector<Person> vt = new Vector<Person>();
        try {
            dbHelper = new DBHelper();
            conn = dbHelper.getConn();
            String sql = "select * from " + Constant.TABLE_NAME;
            Statement stmt = conn.createStatement();
            ResultSet rs = stmt.executeQuery(sql);
            while (rs.next()) {
                Person person = new Person();
                person.setId(rs.getInt(1));
                person.setName(rs.getString(2));
                person.setAge(rs.getString(3));
                person.setSex(rs.getString(4));
                person.setTelNum(rs.getString(5));
                person.setAddress(rs.getString(6));
                vt.add(person);
            }
            stmt.close();
            rs.close();
            conn.close();
        } catch (SQLException e) {
            e.printStackTrace();
        }
        return vt;

    }

    // 删除所有
    public void deleteAll() {
        try {
            dbHelper = new DBHelper();
            conn = dbHelper.getConn();
            String sql = "truncate table " + Constant.TABLE_NAME;
            PreparedStatement ps = conn.prepareStatement(sql);
            ps.executeUpdate();
            ps.close();
            conn.close();
        } catch (SQLException e) {
            e.printStackTrace();
        }
    }
时间: 2024-07-30 12:17:46

分别使用Statement和PreparedStatement对数据库进行操作的相关文章

【Java编程】JDBC注入攻击-Statement 与 PreparedStatement

在上一篇[Java编程]建立一个简单的JDBC连接-Drivers, Connection, Statement and PreparedStatement我们介绍了如何使用JDBC驱动建立一个简单的连接,并实现使用Statement和PreparedStatement进行数据库查询,本篇blog将接着上篇blog通过SQL注入攻击比较Statement和PreparedStatement.当然这两者还有很多其他方面的不同,在之后的blog中会继续更新. [Statement查询] 1.在DBH

使用JDBC分别利用Statement和PreparedStatement来对MySQL数据库进行简单的增删改查以及SQL注入的原理

一.MySQL数据库的下载及安装 https://www.mysql.com/ 点击DOWNLOADS,拉到页面底部,找到MySQL Community(GPL)Downloads,点击 选择下图中的MySQL Community Server 选择想要的版本进行下载 之后的步骤,因为本人已经安装过MySQL数据库,而卸载重装会比较麻烦,卸载不干净会导致新的装不上,所以可以参考下面的博客,因为官网的改动,前面的部分已经与该博客不符,按照本人在上面的介绍寻找即可 https://blog.csdn

Statement和PreparedStatement的区别; 什么是SQL注入,怎么防止SQL注入? (转)

问题一:Statement和PreparedStatement的区别 先来说说,什么是java中的Statement:Statement是java执行数据库操作的一个重要方法,用于在已经建立数据库连接的基础上,向数据库发送要执行的SQL语句.具体步骤: 1.首先导入java.sql.*:这个包. 2.然后加载驱动,创建连接,得到Connection接口的的实现对象,比如对象名叫做conn. 3.然后再用conn对象去创建Statement的实例,方法是:Statement stmt = conn

详解连接SQL Server数据库的方法,并使用Statement接口实现对数据库的增删改操作

总结一下,连接SQL Server数据库需要以下几个步骤: 1. 导入驱动Jar包:sqljdbc.jar 2. 加载并注册驱动程序 3. 设置连接路径 4. 加载并注册驱动 5. 连接数据库 6. 操作数据库 7. 关闭连接 代码如下: ******************连接数据库******************* 1 package zj6_Test; 2 import java.sql.*; 3 public class Zj6_3 { 4 /** 5 * 使用Statement接口

MySQL的简单操作方法:Statement、PreparedStatement

(1)连接mysql的工具类:DBUtil.java package com.xuliugen.util; import java.sql.Connection; import java.sql.DriverManager; import java.sql.PreparedStatement; import java.sql.ResultSet; import java.sql.SQLException; import java.sql.Statement; public class DBUti

JDBC中的Statement和PreparedStatement的区别

以Oracle为例吧 Statement为一条Sql语句生成执行计划, 如果要执行两条sql语句 select colume from table where colume=1; select colume from table where colume=2; 会生成两个执行计划 一千个查询就生成一千个执行计划! PreparedStatement用于使用绑定变量重用执行计划 select colume from table where colume=:x; 通过set不同数据只需要生成一次执行

Statement和PreparedStatement的区别; 什么是SQL注入,怎么防止SQL注入?

问题一:Statement和PreparedStatement的区别 先来说说,什么是java中的Statement:Statement是java执行数据库操作的一个重要方法,用于在已经建立数据库连接的基础上,向数据库发送要执行的SQL语句.具体步骤: 1.首先导入java.sql.*:这个包. 2.然后加载驱动,创建连接,得到Connection接口的的实现对象,比如对象名叫做conn. 3.然后再用conn对象去创建Statement的实例,方法是:Statement stmt = conn

Java的Statement、PreparedStatement、PreparedStatement + 批处理 的区别

首先来说一下连接了数据库之后执行的sql语句:通常连接了数据库之后,我们就会获得statement 类的对象或者是他的子类的对象(PreparedStatement类),通过这个对象我们就可以利用它提供的方法来操纵数据库了. Statement提供了三种方法来执行sql语句: 1,execute:可以执行在任何的sql语句,但是比较麻烦,通常我们不会选择这一种的但是如果在不清楚SQL语句的类型时,那只能使用execute来执行sql语句了. 2,executeUpdata:主要用于执行DML与D

[转] JDBC中的Statement和PreparedStatement的区别

以Oracle为例吧 Statement为一条Sql语句生成执行计划,如果要执行两条sql语句select colume from table where colume=1;select colume from table where colume=2;会生成两个执行计划一千个查询就生成一千个执行计划! PreparedStatement用于使用绑定变量重用执行计划select colume from table where colume=:x;通过set不同数据只需要生成一次执行计划,可以重用