JDBC 访问数据库的步骤

  1. 注册和加载驱动(可以省略)
  2. 获取连接
  3. Connection 获取 Statement 对象
  4. 使用 Statement 对象执行 SQL 语句
  5. 返回结果集
  6. 释放资源

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

  1. ResultSet接口(结果集对象)的

    • 作用:封装了DQL查询语句的结果,对结果集进行遍历,取出每一条记录
    • ResultSet 接口中的方法
方法名 说明
boolean next() 1. 游标向下移动 1行 /// 2. 返回 boolean 类型,如果还有下一条记录,返回 true,否则返回 false
数据类型 getXxx() 1. 通过字段名,参数是 String 类型。返回不同的类型 ///2. 通过列号,参数是整数,从 1 开始。返会不同的类型

  1. 常用数据类型转换表

  2. 确保数据库中有 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集合中

    1. 定义实体类Account

    2. 查询数据,封装到Account对象中

    3. 将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接口相关推荐

  1. Java中JDBC连接数据库详解

    今天动力节点java学院小编分享的是JDBC连接数据库的相关知识,希望通过看过此文,各位小伙伴对DBC连接数据库有所了解,下面就跟随小编一起来看看JDBC连接数据库的知识吧. 一.JDBC连接数据库概 ...

  2. java nio详解,Java NIO API详解

    Java NIO API详解 在JDK 1.4以前,Java的IO操作集中在java.io这个包中,是基于流的阻塞(blocking)API.对于大多数应用来说,这样的API使用很方 便,然而,一些对 ...

  3. 【java8新特性】——Stream API详解(二)

    一.简介 java8新添加了一个特性:流Stream.Stream让开发者能够以一种声明的方式处理数据源(集合.数组等),它专注于对数据源进行各种高效的聚合操作(aggregate operation ...

  4. Kong API Gateway 管理API详解

    Kong API Gateway 管理API详解 2018-09-25 /  Linuxops 版权说明:本文为博主原创,如果转载请注明来源.作为学习笔记,不能保证所有知识点是完全正确以及表达无误,用 ...

  5. Java 11中的新功能和API详解系列1

    Java 11中的新功能和API详解系列1 2018.9.27 版权声明:本文为博主chszs的原创文章,未经博主允许不得转载. JDK 11在语言语法方面有一个小改动,增加了相当数量的新API,以及 ...

  6. ext核心API详解

    http://hi.baidu.com/j2me/profile 1 EXT核心API详解(一)-Ext 1 EXT核心API详解(二)-Array/Date/Function/Number/Stri ...

  7. 【虚幻引擎UE】UE5 三种模式调用API详解(案例基于免费Varest插件)

    [虚幻引擎UE]UE5 三种模式调用API详解(案例基于免费Varest插件) 想通过UE5 调用API实现GET和POST, 可以通过自己编写C++方法, 或基于相关HTTP请求插件, 如Vares ...

  8. H5的新特性及API详解(很惊人)

    H5的新特性及API详解(很惊人) 2017-01-20 17:00 4057人阅读 评论(0) 收藏 举报  分类: h5(11)  js函数(64)  js技巧(15)  版权声明:本文为博主原创 ...

  9. 详解EBS接口开发之WIP模块接口

    详解EBS接口开发之WIP模块接口 2014-07-23 22:53:49 caixingyun 阅读数 11780  收藏 更多 分类专栏: 详解EBS接口开发系列 版权声明:本文为博主原创文章,遵 ...

最新文章

  1. hdu 1286( 欧拉函数 )
  2. KVM 网络虚拟化基础 - 每天5分钟玩转 OpenStack(9)
  3. linux使用外部smtp发送邮件,Centos 配置mailx使用外部smtp发送邮件
  4. 避坑指南:通过expdp/impdp迁移数据的7个坑
  5. .NET的委托和匿名函数应用一例
  6. C++ 从入门到入土(English Version)Section5: Real numbers + bitwise operations
  7. dosbox 实现程序编译
  8. 从Labview硬件平台看ZYNQ 的应用
  9. [算法导论] 邮递员问题
  10. Meyer Burger获中国客户1800万瑞士法郎光伏设备订单
  11. 关于pandownload源码的一般性研究与挖掘
  12. LAMP架构(基础篇)
  13. bh1750c语言程序,BH1750FVI数字光线强度传感器 51单片机源程序
  14. MySQL:网络连接框架简析
  15. C++中typeid的使用
  16. nyoj 题目283 对称排序
  17. React学习分享(五)
  18. html中设置父div的透明度不影响子div透明度
  19. 安防视频监控无处不在 密织安全防控网必不可少
  20. 网易杭研的中台往事。网易杭研,中台的长期实践者!

热门文章

  1. jupyter notebook 前面书写后面内容消失
  2. 什么情况下会出现笛卡尔积
  3. IE8开发人员工具使用详解下(模式,JS调试,探查器)
  4. 树和二叉树(TreeBinary Tree)
  5. WPS自定义样式功能太弱了
  6. spark中repartition, coalesce, partitionBy, repartitionAndSortWithinPartitions 四种重分区算子
  7. 分布式-Java应用
  8. cocoscreator getSpriteFrame is not a function 问题
  9. 自动生成PDF文件(Java通过PDF模板自动生成PDF)
  10. pulsesensor传感器以及STM32相关学习笔记