|- Statement接口: 用于执行静态的sql语句
|- int executeUpdate(String sql) : 执行静态的更新sql语句(DDL,DML)
|- ResultSet executeQuery(String sql) :执行的静态的查询sql语句(DQL)
|-PreparedStatement接口(Statement接口的子类):用于执行预编译sql语句
|- int executeUpdate() : 执行预编译的更新sql语句(DDL,DML)
|-ResultSet executeQuery() : 执行预编译的查询sql语句(DQL)
代码:(用DDL语句中的创建来举例,其他的DDL语句,除了发送的sql语句不一样之外,都一样)
public class Statement_one { // 数据库的信息
// URL
private static String url = "jdbc:mysql://localhost:3306/day1029";
// 用户名和密码
private static String user = "root";
private static String password = "root"; // 执行DDL语句(创建表为例)
private static void DDL() {
// 为了在关闭连接,在这里创建对象
Connection conn = null;
Statement stsm = null; try {
// 创建驱动注册对象
Class.forName("com.mysql.jdbc.Driver"); // 获取连接的数据库对象
/* Connection */conn = DriverManager.getConnection(url, user,
password); // 创建Statement对象
/* Statement */stsm = conn.createStatement(); // 创建要执行的sql语句
String sql = "CREATE TABLE person(id INT PRIMARY KEY AUTO_INCREMENT,NAME VARCHAR(10),sex VARCHAR(5),age INT,psot VARCHAR(10),email VARCHAR(20),phone INT)"; // 使用Statement发送该DDL语句,返回的时该sql语句所影响的行数,int类
int result = stsm.executeUpdate(sql);
} catch (Exception e) {
e.printStackTrace();
}
// 最后关闭连接(后开启的先关闭)
finally {
if (stsm != null) {
try {
stsm.close();
} catch (SQLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
throw new RuntimeException(e);
}
}
if (conn != null) {
try {
conn.close();
} catch (SQLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
throw new RuntimeException(e);
}
}
}
}
代码:用DML的插入数据举例
private static void DML() { Connection conn = null;
Statement stsm = null; try {
// 创建驱动获取对象
Class.forName("com.mysql.jdbc.Driver"); // 获取要连接的数据库对象
conn = DriverManager.getConnection(url, user, password); // 创建Statement对象
stsm = conn.createStatement(); // 准备要执行的sql语言
String sql = "INSERT INTO person (NAME,sex,age) VALUES ('小红','女',20);"; // 执行语句
stsm.executeUpdate(sql);
} catch (Exception e) {
e.printStackTrace();
} finally { if (stsm != null) {
try {
stsm.close();
} catch (SQLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
throw new RuntimeException(e);
}
}
if (conn != null) {
try {
conn.close();
} catch (SQLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
throw new RuntimeException(e);
}
} } }
代价:执行DQL
//DQL(查询数据)
private static void DQL() {
Connection conn = null;
Statement stsm = null; try{
//创建驱动获取对象
Class.forName("com.mysql.jdbc.Driver"); //创建要连接的数据库对象
conn = DriverManager.getConnection(url, user, password); //创建Statement对象
stsm = conn.createStatement(); //准备sql语言
String sql = "SELECT * FROM person;"; //执行sql语言
//返回的是ResultSet,表示数据库结果集的数据表
ResultSet rs = stsm.executeQuery(sql); //打印一行数据,例:打印第二行的数据 //一:移动光标到第二行,具体看API的ResultSet
rs.next();
rs.next();
//根据列名查询
int id = rs.getInt("id");
String name = rs.getString("name");
String sex = rs.getString("sex");
//打印
System.out.println(id+","+name+","+sex); //二:打印所有数据,利用迭代。具体查看API的ResultSet
/* while(rs.next()){
//通过列名来查询,列名的英文字母不分大小写
int id = rs.getInt("id");
String name = rs.getString("name");
String sex = rs.getString("sex");
System.out.println(id+","+name+","+sex); }*/ }