Statement与 PreparedStatement(增删改查)区别及代码

1.Statement与 PreparedStatement的区别

(1)数据库在执行 sql 语句的时候如果使用 PreparedStatement 语句会有一点优势:因为数据
库会对 preparedStatement 语句进行预编译,下次执行相同的 sql 语句时,数据库端不
会再进行预编译了,而直接用数据库的缓冲区,提高数据访问的效率

(2)使用 Statement 对象。在对数据库只执行一次性存取的时侯,用 Statement 对象进行处
理。PreparedStatement 对象的开销比 Statement 大,对于一次性操作并不会带来额外
的好处。

(3)statement 每次执行 sql 语句,相关数据库都要执行 sql 语句的编译,preparedstatement
是预编译得, preparedstatement 支持批处理

(4)无论是 Statement 还是 PreparedStatement,增删改执行的 executeUpdate(),属于更
新操作,而查询执行的是 executeQuery(),属于查询操作,不可混用。

2. Statement执行增删改查的代码

import java.sql.*;
    public class CreateTitle {
             public static void main(String[] args) {
             Connection conn = null;
             Statement stmt = null;
             ResultSet rs = null;
             try {
                     Class.forName("com.mysql.jdbc.Driver");//注册驱动,必须导包到项目
                   } catch (ClassNotFoundException cnfe) {
                     System.out.println("没有找到驱动类");
                   }             
             try {

String sql = "insert intofirstleveltitle(titlename,creator,createtime) values(‘访问数据库‘,‘gxs‘,now())";//获取连接
                    conn = DriverManager.getConnection  ("jdbc:mysql://localhost:3306/newsuseUnicode=true&characterEncoding=UTF-8","root", "123456");
                    stmt = conn.createStatement();//创建Statement对象
                    int line = stmt.executeUpdate(sql);//返回更新记录的行数
                    System.out.println(line);
                    rs = stmt.getGeneratedKeys();//获取结果集中存放更新记录主键
                    rs.next();
                    System.out.println(rs.getInt(1));
                  } catch (SQLException sqlE) {
                    sqlE.printStackTrace();
                  } finally {//释放资源
            try {
                    if (rs != null)
                    rs.close();
                    if (stmt != null)
                    stmt.close();
                    if (conn != null)
                    conn.close();
                  } catch (SQLException e) {
                     e.printStackTrace();
                                                             }}}}

3.  PreparedStatement执行增删改查的代码

import java.sql.*;
     import java.text.SimpleDateFormat;
     import java.util.Date;
     public class CreateFisrstPrepared {
              public static void main(String[] args) {
              Connection conn = null;
              PreparedStatement pstmt = null;
              ResultSet rs = null;
       try {                                  // 1.注册驱动,前提必须加载驱动包
               Class.forName("com.mysql.jdbc.Driver");
             } catch (ClassNotFoundException e) {
               System.out.println("未发现驱动");
             }
       try {
              conn = DriverManager.getConnection("jdbc:mysql://localhost:3306/news", "root","123456");
              String sql = "insert intofirstleveltitle(titlename,creator,createtime) values(?,?,?)";
              pstmt = conn.prepareStatement(sql);//预编译SQL语句
              //设定SQL语句中的参数
              pstmt.setString(1, "PreparedStatement练习");
              pstmt.setString(2, "gxs");
              SimpleDateFormat formate = new SimpleDateFormat("yyyy-MM-dd hh:mm:ss");
              pstmt.setString(3, formate.format(new Date()));

int lineNum = pstmt.executeUpdate();
              System.out.println(lineNum);
              rs = pstmt.getGeneratedKeys();
              rs.next();
              System.out.println(rs.getInt(1));
            } catch (SQLException e) {
              e.printStackTrace();
            } finally {
      try {
              if (rs != null)
              rs.close();
              if (pstmt != null)
              pstmt.close();
              if (conn != null)
              conn.close();
            } catch (SQLException e) {
              e.printStackTrace();

} } } }

(注:代码中用到是mysql数据库,见一个intofirstleveltitle的表,表中有titlename,creator,createtime三个属性

处理建立数据库,还要在程序中添加mysql的jar包实现连接数据库的功能)

时间: 2024-11-03 22:04:03

Statement与 PreparedStatement(增删改查)区别及代码的相关文章

JDBC的statement对象(实现增删改查)

JDBC的statement对象 上图中,很多对象都是固定写死的,唯一要变的是statement对象.JDBC的核心是用statement对象执行增删改查. JDBC中的statement对象用于向数据库发送SQL语句,想完成对数据库的增删改查,只需要通过statement对象向数据库发送增删改查语句即可. statement对象主要有两个方法:1.executeUpdate方法 2.executeQuery方法 1.executeUpdate方法用于向数据库发送增.删.改的sql语句.exec

用PHP向数据库中实现简单的增删改查(纯代码,待完善)

<?php $con = mysql_connect("localhost:3306","root",""); if (!$con) { die('Could not connect: ' . mysql_error()); } mysql_select_db("test", $con); $result = mysql_query("SELECT * FROM user"); echo "

datalist 的用法。也是增删改查,但是比较智能。用数据绑定的方式,可以有不同的显示方法,下面是对一个表的增删改查的参考代码

aspx里的代码,仔细看一下触发js事件 <%@ Page Language="C#" AutoEventWireup="true" CodeFile="Default.aspx.cs" Inherits="_Default" %> <!DOCTYPE html> <html xmlns="http://www.w3.org/1999/xhtml"> <head r

.net xml 增删改查基础复习及干货分享

今天做做项目时,有一个需求需要用到一些固定的文本数据,觉得将这些需要存储的信息直接写在代码里很不友好,放在数据库中存储又觉得不够方便,自然就想到了使用xml来进行操作,我平常在项目中其实用到xml的机会并不多,今天既然碰到了,就再温故知新一下吧.... xml简述 xml被设计用来传输和存储数据.(html被设计用来显示数据) xml指可扩展标记语言(Extensible Markup Language) xml是一种标记语言,很类似html xml的设计宗旨是传输数据,而非显示数据 xml标签

用CI框架向数据库中实现简单的增删改查

以下代码基于CodeIgniter_2.1.3版 用PHP向数据库中实现简单的增删改查(纯代码)请戳 http://www.cnblogs.com/corvoh/p/4641476.html CodeIgniter_2.1.3与PHP5.6的兼容问题请戳 http://www.cnblogs.com/corvoh/p/4649357.html 增: //insert//语法:$bool=$this->db->insert('表名',关联数组); $data=array( 'username'=

基于MVC和Bootstrap的权限框架解决方案 二.添加增删改查按钮

上一期我们已经搭建了框架并且加入了列表的显示, 本期我们来加入增删改查按钮 整体效果如下 HTML部分,在HTML中找到中意的按钮按查看元素,复制HTML代码放入工程中 <a class="btn btn-small element" data-original-title="新增" href="/Customer/Add" data-toggle="tooltip" data-placement="top&q

MVC操作SQL数据库增删改查

控制器代码: using System; using System.Collections.Generic; using System.Linq; using System.Web; using System.Web.Mvc; using MvcApplication1.Models; namespace MvcApplication1.Controllers { public class HomeController : Controller { // // GET: /Home/ publi

xml 增删改查基础复习及干货分享(日后留用)

xml被设计用来传输和存储数据.(html被设计用来显示数据) xml指可扩展标记语言(Extensible Markup Language) xml是一种标记语言,很类似html xml的设计宗旨是传输数据,而非显示数据 xml标签没有被预定义.您需要自行定义标签 xml被设计为具有自我描述性 xml是w3c的推荐标准 C#操作XML的基本操作:增删改查 demo示例代码: <?xml version="1.0" encoding="utf-8"> &

夺命雷公狗---Thinkphp----6之管理员的增删改查

首先我们创建多一个控制器UserController.class.php,主要用于管理员的增删改查操作: 代码如下所示: <?php namespace Admin\Controller; use Think\Controller; class UserController extends Controller { public function lists(){ $this -> display(); } } 这里主要是是为了到时候方便我们页面的显示,然后我们再到视图文件夹下创建User目录