admin管理员组文章数量:1122954
JDBC
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
版权声明:本文标题:JDBC 内容由网友自发贡献,该文观点仅代表作者本人, 转载请联系作者并注明出处:http://www.betaflare.com/web/1686602177a15740.html, 本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容,一经查实,本站将立刻删除。
发表评论