代表一条语句对象,用于发送 SQL 语句给服务器,用于执行静态 SQL 语句并返回它所生成结果的对象。
方法名 | 描述 |
---|---|
int excuteUpdate(sql) | 执行DML ,DDL语句 返回值DML语句影响行数,但是DQL语句执行后也可能返回0 |
ResultSet executeQuery(String sql) | 执行DQL语句 返回值:ResultSet结果集对象 |
代码如下(示例):
package Web.JDBCDemo;
import org.junit.Test;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.Statement;
public class JDBCDemo3 {
@Test
public 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. 定义sql
String sql = "update account set money = 3000where id = 1";
//4. 获取执行sql的对象 Statement
Statement stmt = conn.createStatement();
//5. 执行sql
int 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();
}
}
代码如下(示例):
```java
package Web.JDBCDemo;
import org.junit.Test;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.Statement;
public class JDBCDemo3 {
@Test
public 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. 定义sql
String sql = "create table db2";
//4. 获取执行sql的对象 Statement
Statement stmt = conn.createStatement();
//5. 执行sql
int count = stmt.executeUpdate(sql);//执行完DDML语句,受影响的行数
//6. 处理结果是0,也是很有可能创建成功
//System.out.println(count);
//7. 释放资源
stmt.close();
conn.close();
}
}
注意:以后开发很少使用java代码操作DDL语句
方法名 | 说明 |
---|---|
boolean next() | 1. 游标向下移动 1行 /// 2. 返回 boolean 类型,如果还有下一条记录,返回 true,否则返回 false |
数据类型 getXxx() | 1. 通过字段名,参数是 String 类型。返回不同的类型 ///2. 通过列号,参数是整数,从 1 开始。返会不同的类型 |
常用数据类型转换表
确保数据库中有 3 条记录,查询所有的账户表里面的信息
例题:将account表中数据通过java代码实现打印出来
@Test
public 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的对象 Statement
Statement stmt = conn.createStatement();
//5. 执行sql
ResultSet 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;
}
@Override
public String toString() {
return "account{" +
"id=" + id +
", name='" + name + '\'' +
", money=" + money +
'}';
}
}
ResultDemo类
@Test
public 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的对象 Statement
Statement stmt = conn.createStatement();
//5. 执行sql
ResultSet 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();
}