Jdbc DML 操作
Statement:静态SQL操作
每次操作都会将sql语句提交到数据库执行一次,性能比较低
// 1.加载驱动程序
Class.forName(driverName);
// 2.获取数据库连接
Connection conn = DriverManager.getConnection(url, user, password);
// 3.构建SQL语句
String sql = "insert into t_user(userid,username,password)values(seq_t_user.nextval,'abc','123456')";
// 4.执行SQL语句
Statement sts = conn.createStatement();
// 返回的结果是影响的行数
int count = sts.executeUpdate(sql);
System.out.println("影响的行数:" + count);
// 5.关闭资源
sts.close();
conn.close(); Jdbc DML 操作
PrepareStatement:动态sql操作 预编译操作
优点:性能比Statement高
Statement对象能做的操作Preparedstatement都能做
Preparedstatement能做的Statement不一定能做
通过PrepareStatement对象更新用户数据
execute:DDL操作
executeUpdate:DML操作
executeQuery:DQL操作
executeBatch:批量处理 一次性执行多条sql语句 // 1.加载驱动程序
Class.forName(driverName);
// 2.获取数据库的连接通道
Connection conn = DriverManager.getConnection(url, user, password);
// 3.构建SQL语句
String sql = "update t_user set password=? where userid=?";
// 4.执行sql语句
// 获取Statement对象
PreparedStatement ps = conn.prepareStatement(sql);
ps.setString(1, "hehe");
ps.setInt(2, 3);
int count = ps.executeUpdate();
System.out.println("影响的行数:"+count);
// 关闭资源
ps.close(); Jdbc查询:
// 1.加载驱动程序
Class.forName(driverName);
// 2.获取数据库连接通道
Connection conn = DriverManager.getConnection(url, user, password);
// 3.构建SQL语句
String sql = "select * from t_user order by userid";
// 4.执行SQL语句获取查询结果
PreparedStatement ps = conn.prepareStatement(sql);
// 执行查询 ResultSet 类似于我们讲的游标 迭代器
ResultSet rs = ps.executeQuery();// 其实并没有获取到数据,而是指向了第一条数据之前
// 判断是否有下一条记录并把该记录保存到ResultSet对象中
while(rs.next()){// 每循环一次取出一条新的记录
//int id = rs.getInt("userid");
int id = rs.getInt(1); // 通过列的下标取字段内容,从1开始
String userName = rs.getString("username");
String userPassword = rs.getString("password");
System.out.println(id+" "+userName+" "+userPassword);
}
// 5.关闭相关的资源
rs.close();
ps.close();
conn.close(); 批处理:
/**
* 通过Statement执行批处理操作
* 适用于执行多条不同的sql语句
* @throws Exception
*/
@Test
public void testStatementBatch() throws Exception {
conn = DbUtils.getConnection();
Statement sts = conn.createStatement();
sql1 = "insert into t_user(userid,username,password)values(seq_t_user.nextval,'a','b')";
sql2 = "update t_user set password='111' where userid=43";
// 添加批处理的sql语句
sts.addBatch(sql1);
sts.addBatch(sql2);
sts.executeBatch();
DbUtils.close(sts, conn); } /**
* 通过PreparedStatement对象执行批处理操作
* @throws Exception
* @throws ClassNotFoundException
*/
@Test
public void testPreparedStatement() throws Exception {
conn = DbUtils.getConnection();
sql = "insert into t_user(userid,username,password)values(seq_t_user.nextval,?,?)";
PreparedStatement ps = conn.prepareStatement(sql);
/*ps.setString(1, "a1");
ps.setString(2, "b1");
ps.addBatch();
ps.setString(1, "a2");
ps.setString(2, "b3");
ps.addBatch();*/
for(int i = 0 ; i < 10 ; i++){
ps.setString(1, "a"+i);
ps.setString(2, "b"+i);
ps.addBatch();
} ps.executeBatch();
DbUtils.close(ps, conn);
}

jdbc之Statement和Preparement的更多相关文章

  1. jdbc执行Statement接口的步骤

    jdbc执行Statement接口的步骤如下: 1)驱动注册程序: Class.forName(com.mysql.jdbc.Driver); 2)获取连接对象: Connection conn = ...

  2. JDBC的Statement对象

    以下内容引用自http://wiki.jikexueyuan.com/project/jdbc/statements.html: 一旦获得了数据库的连接,就可以和数据库进行交互.JDBC的Statem ...

  3. jdbc中Statement和PreparedStatement有什么区别?哪个性能更好?

    Statement和PreparedStatement的功能主要是对sql语句的执行 区别 (1)Statement每执行一条sql语句就需要生成一条执行计划,执行100条就需要100条执行计划Pre ...

  4. JDBC与Statement和PreparedStatement的区别

    一.先来说说,什么是java中的Statement:Statement是java执行数据库操作的一个重要方法,用于在已经建立数据库连接的基础上,向数据库发送要执行的SQL语句.具体步骤: 1.首先导入 ...

  5. JDBC PreparedStatement Statement

    参考:预编译语句(Prepared Statements)介绍,以MySQL为例 1. 背景 本文重点讲述MySQL中的预编译语句并从MySQL的Connector/J源码出发讲述其在Java语言中相 ...

  6. JDBC之Statement 接口的测试(存在sql注入风险)

    实现简单的登录功能 import java.sql.Connection; import java.sql.DriverManager; import java.sql.ResultSet; impo ...

  7. JDBC之Statement、PreparedStatement和CallableStatement

    JDBC提供了Statement.PreparedStatement和CallableStatement三种方式来执行查询语句,其中Statement用于通用查询,PreparedStatement用 ...

  8. JDBC:Statement问题

    1.Statement问题  2.解决办法:通过PreparedStatement代替  实践: package com.dgd.test; import java.io.FileInputStrea ...

  9. jdbc 08: statement应用场景

    jdbc连接mysql,statement的应用场景 package com.examples.jdbc.o8_statement应用场景; import java.sql.*; import jav ...

随机推荐

  1. spider-抓取网页内容

    使用urllib2抓取网页内容: import urllib2 from HTMLParser import HTMLParser request = urllib2.Request('http:// ...

  2. C++程序暂停

    //这里的getchar();用来暂停程序,以便查看程序输出的内容 //也可以用system("pause");等来代替

  3. MapReduce Design Patterns(chapter 2 (part 2))(三)

    Median and standard deviation 中值和标准差的计算比前面的例子复杂一点.因为这种运算是非关联的,它们不是那么容易的能从combiner中获益.中值是将数据集一分为两等份的数 ...

  4. 类库文件引用web服务报错解决方法-在 ServiceModel 客户端配置部分中,找不到引用协定的默认终结点元素

    由于需求,需要改造原有应用,因原有应用是写在console下面的,现在需要开放至web下, 想到BIZ层应用代码都是一样的,又不想在web下在添加引用,而重复写代码,故将原有的console下的服务和 ...

  5. 利用python查看电脑系统信息

    #查看python默认编码格式 >>> import sys >>> print sys.getdefaultencoding() #python 2.x 默认编码 ...

  6. Apache Spark : Introduction

    看了一点<数据算法:Hadoop/Spark大数据处理技巧>,觉得有必要了解一下 Spark . 以上. Spark was introduced by Apache Software F ...

  7. 关于$.fn.scrollPath is not a function

    关于$.fn.scrollPath is not a function 在做项目过程中,用到了一个jQuery的滚动路径插件——jQuery Scroll Path.引入相关的js文件后,但是控制台一 ...

  8. 2018-2019-2 《网络对抗技术》Exp0 Kali安装 Week1 20165322

    Exp0 Kali安装 由于VMWare已经装好,镜像也是从上届拷下来的.下载部分就省略.. 新建虚拟机 安装好VM后点击新建虚拟机 选择稍后安装操作系统,系统选择Linux-ubuntu 接下来根据 ...

  9. 如何高效的写出markdown笔记

    重置用户名和密码 安利一个小工具donet-cnblog可以同步图片到cnblog中,同时生成对应的Markdown笔记.写博客的时候我们可以本地写,用这个工具同步到cnblog上能够大大节省我们的时 ...

  10. Vue - 如何实现一个双向绑定

    JS - 如何实现一个类似 vue 的双向绑定 Github JS 实现代码 先来看一张图: 这张图我做个简要的描述: 首先创建一个实例对象,分别触发了 compile  解析指令 和 observe ...