JDBC-API详解-Statement接口
JDBC 访问数据库的步骤
- 注册和加载驱动(可以省略)
- 获取连接
- Connection 获取 Statement 对象
- 使用 Statement 对象执行 SQL 语句
- 返回结果集
- 释放资源
API下的Statement
Statement类
- JDBC 访问数据库的步骤
- API下的Statement
- 一. Statement 作用
- 二. Statement 的方法
- 三. 使用步骤
- 1.DML
- 2.DDL
- 3.DQL
- 四. 案例(重点)
一. Statement 作用
代表一条语句对象,用于发送 SQL 语句给服务器,用于执行静态 SQL 语句并返回它所生成结果的对象。
二. Statement 的方法
方法名 | 描述 |
---|---|
int excuteUpdate(sql) |
执行DML ,DDL语句 返回值DML语句影响行数,但是DQL语句执行后也可能返回0
|
ResultSet executeQuery(String sql)
|
执行DQL语句 返回值:ResultSet结果集对象 |
三. 使用步骤
1.DML
代码如下(示例):
package Web.JDBCDemo;import org.junit.Test;import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.Statement;public class JDBCDemo3 {@Testpublic void testDML() throws Exception {//1. 注册驱动//Class.forName("com.mysql.jdbc.Driver");//2. 获取连接:如果连接的是本机mysql并且端口是默认的3306 可以简化书写String url = "jdbc:mysql:///db1?useSSL=false";String username = "root";String password = "1234";Connection conn =DriverManager.getConnection(url, username, password);//3. 定义sqlString sql = "update account set money = 3000where id = 1";//4. 获取执行sql的对象 StatementStatement stmt = conn.createStatement();//5. 执行sqlint count = stmt.executeUpdate(sql);//执行完DML语句,受影响的行数//6. 处理结果//System.out.println(count);if (count > 0) {System.out.println("修改成功~");} else {System.out.println("修改失败~");}//7. 释放资源stmt.close();conn.close();}
}
2.DDL
代码如下(示例):
```java
package Web.JDBCDemo;import org.junit.Test;import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.Statement;public class JDBCDemo3 {@Testpublic void testDML() throws Exception {//1. 注册驱动//Class.forName("com.mysql.jdbc.Driver");//2. 获取连接:如果连接的是本机mysql并且端口是默认的3306 可以简化书写String url = "jdbc:mysql:///db1?useSSL=false";String username = "root";String password = "1234";Connection conn =DriverManager.getConnection(url, username, password);//3. 定义sqlString sql = "create table db2";//4. 获取执行sql的对象 StatementStatement stmt = conn.createStatement();//5. 执行sqlint count = stmt.executeUpdate(sql);//执行完DDML语句,受影响的行数//6. 处理结果是0,也是很有可能创建成功//System.out.println(count);//7. 释放资源stmt.close();conn.close();}
}
注意:以后开发很少使用java代码操作DDL语句
3.DQL
- ResultSet接口(结果集对象)的
- 作用:封装了DQL查询语句的结果,对结果集进行遍历,取出每一条记录
- ResultSet 接口中的方法
- 作用:封装了DQL查询语句的结果,对结果集进行遍历,取出每一条记录
方法名 | 说明 |
---|---|
boolean next() | 1. 游标向下移动 1行 /// 2. 返回 boolean 类型,如果还有下一条记录,返回 true,否则返回 false |
数据类型 getXxx() | 1. 通过字段名,参数是 String 类型。返回不同的类型 ///2. 通过列号,参数是整数,从 1 开始。返会不同的类型 |
常用数据类型转换表
确保数据库中有 3 条记录,查询所有的账户表里面的信息
例题:将account表中数据通过java代码实现打印出来
@Testpublic void testDQL() throws Exception {Class.forName("com.mysql.jdbc.Driver");//2. 获取连接:如果连接的是本机mysql并且端口是默认的3306 可以简化书写String url = "jdbc:mysql:///db1?useSSL=false";String username = "root";String password = "o676448";Connection conn = DriverManager.getConnection(url, username, password);//4. 获取执行sql的对象 StatementStatement stmt = conn.createStatement();//5. 执行sqlResultSet count = stmt.executeQuery("select *from account");//执行完DML语句,受影响的行数//6. 处理结果/** Statement类:ResultSet executeQuery(String sql) 执行DQL语句 返回值:ResultSet结果集对象ResultSet接口:boolean next() 1. 游标向下移动 1行 /// 2. 返回 boolean 类型,如果还有下一条记录,返回 true,否则返回 false数据类型 getXxx() 1. 通过字段名,参数是 String 类型。返回不同的类型 ///2. 通过列号,参数是整数,从 1 开始。返会不同的类型 */while (count.next()){//通过列名获取int id = count.getInt("id");String name = count.getString("name");double money = count.getDouble("money");/*通过索引获取 注意:从1开始count.getInt("1");count.getString("2");count.getDouble("3");*/System.out.println(id);System.out.println(name);System.out.println(money);System.out.println("----------------");}//7. 释放资源count.close();stmt.close();conn.close();}
例题分析:
四. 案例(重点)
需求:查询account账户表数据,封装为Account对象中,并且存储到ArrayList集合中
问题分析:
查询account账户表数据,封装为Account对象中,并且存储到ArrayList集合中定义实体类Account
查询数据,封装到Account对象中
将Account对象存入ArrayList集合中
代码实现:
account类
package Web.pojo;public class account {private int id;private String name;private double money;public account() {}public account(int id, String name, double money) {this.id = id;this.name = name;this.money = money;}public int getId() {return id;}public void setId(int id) {this.id = id;}public String getName() {return name;}public void setName(String name) {this.name = name;}public double getMoney() {return money;}public void setMoney(double money) {this.money = money;}@Overridepublic String toString() {return "account{" +"id=" + id +", name='" + name + '\'' +", money=" + money +'}';}
}
ResultDemo类
@Testpublic void testDQL() throws Exception {Class.forName("com.mysql.jdbc.Driver");//2. 获取连接:如果连接的是本机mysql并且端口是默认的3306 可以简化书写String url = "jdbc:mysql:///db1?useSSL=false";String username = "root";String password = "o676448";Connection conn = DriverManager.getConnection(url, username, password);//4. 获取执行sql的对象 StatementStatement stmt = conn.createStatement();//5. 执行sqlResultSet count = stmt.executeQuery("select *from account");//执行完DML语句,受影响的行数//6. 处理结果/** Statement类:ResultSet executeQuery(String sql) 执行DQL语句 返回值:ResultSet结果集对象ResultSet接口:boolean next() 1. 游标向下移动 1行 /// 2. 返回 boolean 类型,如果还有下一条记录,返回 true,否则返回 false数据类型 getXxx() 1. 通过字段名,参数是 String 类型。返回不同的类型 ///2. 通过列号,参数是整数,从 1 开始。返会不同的类型 *//*** 建立ArrayList集合*/ArrayList<account> arr = new ArrayList<account>();while (count.next()){/*** 新建account类存储信息*/account at = new account();//通过列名获取int id = count.getInt("id");String name = count.getString("name");double money = count.getDouble("money");/* 通过索引获取 注意:从1开始int anInt = count.getInt("1");String string = count.getString("2");double aDouble = count.getDouble("3");
*/at.setId(id);at.setName(name);at.setMoney(money);/*** 把account类装入集合中*/arr.add(at);}System.out.println(arr);//7. 释放资源count.close();stmt.close();conn.close();}
JDBC-API详解-Statement接口相关推荐
- Java中JDBC连接数据库详解
今天动力节点java学院小编分享的是JDBC连接数据库的相关知识,希望通过看过此文,各位小伙伴对DBC连接数据库有所了解,下面就跟随小编一起来看看JDBC连接数据库的知识吧. 一.JDBC连接数据库概 ...
- java nio详解,Java NIO API详解
Java NIO API详解 在JDK 1.4以前,Java的IO操作集中在java.io这个包中,是基于流的阻塞(blocking)API.对于大多数应用来说,这样的API使用很方 便,然而,一些对 ...
- 【java8新特性】——Stream API详解(二)
一.简介 java8新添加了一个特性:流Stream.Stream让开发者能够以一种声明的方式处理数据源(集合.数组等),它专注于对数据源进行各种高效的聚合操作(aggregate operation ...
- Kong API Gateway 管理API详解
Kong API Gateway 管理API详解 2018-09-25 / Linuxops 版权说明:本文为博主原创,如果转载请注明来源.作为学习笔记,不能保证所有知识点是完全正确以及表达无误,用 ...
- Java 11中的新功能和API详解系列1
Java 11中的新功能和API详解系列1 2018.9.27 版权声明:本文为博主chszs的原创文章,未经博主允许不得转载. JDK 11在语言语法方面有一个小改动,增加了相当数量的新API,以及 ...
- ext核心API详解
http://hi.baidu.com/j2me/profile 1 EXT核心API详解(一)-Ext 1 EXT核心API详解(二)-Array/Date/Function/Number/Stri ...
- 【虚幻引擎UE】UE5 三种模式调用API详解(案例基于免费Varest插件)
[虚幻引擎UE]UE5 三种模式调用API详解(案例基于免费Varest插件) 想通过UE5 调用API实现GET和POST, 可以通过自己编写C++方法, 或基于相关HTTP请求插件, 如Vares ...
- H5的新特性及API详解(很惊人)
H5的新特性及API详解(很惊人) 2017-01-20 17:00 4057人阅读 评论(0) 收藏 举报 分类: h5(11) js函数(64) js技巧(15) 版权声明:本文为博主原创 ...
- 详解EBS接口开发之WIP模块接口
详解EBS接口开发之WIP模块接口 2014-07-23 22:53:49 caixingyun 阅读数 11780 收藏 更多 分类专栏: 详解EBS接口开发系列 版权声明:本文为博主原创文章,遵 ...
最新文章
- hdu 1286( 欧拉函数 )
- KVM 网络虚拟化基础 - 每天5分钟玩转 OpenStack(9)
- linux使用外部smtp发送邮件,Centos 配置mailx使用外部smtp发送邮件
- 避坑指南:通过expdp/impdp迁移数据的7个坑
- .NET的委托和匿名函数应用一例
- C++ 从入门到入土(English Version)Section5: Real numbers + bitwise operations
- dosbox 实现程序编译
- 从Labview硬件平台看ZYNQ 的应用
- [算法导论] 邮递员问题
- Meyer Burger获中国客户1800万瑞士法郎光伏设备订单
- 关于pandownload源码的一般性研究与挖掘
- LAMP架构(基础篇)
- bh1750c语言程序,BH1750FVI数字光线强度传感器 51单片机源程序
- MySQL:网络连接框架简析
- C++中typeid的使用
- nyoj 题目283 对称排序
- React学习分享(五)
- html中设置父div的透明度不影响子div透明度
- 安防视频监控无处不在 密织安全防控网必不可少
- 网易杭研的中台往事。网易杭研,中台的长期实践者!
热门文章
- jupyter notebook 前面书写后面内容消失
- 什么情况下会出现笛卡尔积
- IE8开发人员工具使用详解下(模式,JS调试,探查器)
- 树和二叉树(TreeBinary Tree)
- WPS自定义样式功能太弱了
- spark中repartition, coalesce, partitionBy, repartitionAndSortWithinPartitions 四种重分区算子
- 分布式-Java应用
- cocoscreator getSpriteFrame is not a function 问题
- 自动生成PDF文件(Java通过PDF模板自动生成PDF)
- pulsesensor传感器以及STM32相关学习笔记