jdbc学习(三): 使用statement, preparedStatment进行数据操作

本文介绍了如何使用Statement和PreparedStatement进行数据库操作的基本步骤,包括初始化数据库连接、执行SQL语句及关闭资源等过程,并提供了具体的示例代码。
使用statement进行数据的查询,基本步骤如下:
* 1. 初始化simpleDbSource对象
* 2. 获得getconnection
* 3. createStatement 获得查询语句
* 4. executeUpdate, 执行更新语句
* 5. 关闭使用的statement, connection, 注意次序不要弄错
*
* 注意:更新语句,执行过一次后,column需要递增,否则报错

/**
*
*/
package db;

import java.io.FileNotFoundException;
import java.io.IOException;
import java.sql.Connection;
import java.sql.ResultSet;
import java.sql.SQLException;

/**
* @author sean
*
* 1. 初始化simpleDbSource对象
* 2. 获得getconnection
* 3. createStatement 获得查询语句
* 4. executeUpdate, 执行更新语句
* 5. 关闭使用的statement, connection, 注意次序不要弄错
*
* 注意:更新语句,执行过一次后,column需要递增,否则报错
*/
public class StatementDemo {

private static String insertSql="insert into user values('7','sean','sean@mail.com','hellofromsean')";
private static String querySql ="select * from user";

/**
* @param args
*/
public static void main(String[] args) {
// TODO Auto-generated method stub
DBSource dbSource;
Connection conn = null;
java.sql.Statement stmt = null;

try {
dbSource = new SimpleDBSource();
conn = dbSource.getConnect();
stmt = conn.createStatement();

//数据库更新工作,包括create, drop, update, insert etc.
stmt.executeUpdate(insertSql);
System.out.println("执行成功"+ insertSql);

//进行数据库查询
ResultSet rs = stmt.executeQuery(querySql);

//进行遍历
while(rs.next()){
System.out.println(rs.getInt(1)+ "\t");
System.out.println(rs.getString(2)+ "\t");
System.out.println(rs.getString(3)+ "\t");
System.out.println(rs.getString(4)+ "\t");
System.out.println("**********************");
}



} catch (FileNotFoundException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (ClassNotFoundException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (SQLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}

//依次关闭statement和conn数据库连接对象,清空资源
finally{
if(stmt!= null){
try {
stmt.close();
} catch (SQLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
stmt= null;
}
if(conn!=null){
try {
conn.close();
} catch (SQLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
conn= null;
}
}
}
}


/**
*
*/
package db;

import java.io.FileNotFoundException;
import java.io.IOException;
import java.sql.Connection;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement;

/**
* @author sean
*
* 1. 初始化simpleDbSource对象
* 2. 获得getconnection
* 3. createPreparedStatement 获得查询语句
* 4. 设置具体更新内容,setInt(colIndex, value), setString(colIndex,value)
* 4. executeUpdate, 执行更新语句
* 5. 关闭使用的PreparedStatementstatement, connection, 注意次序不要弄错
*
* 注意:更新语句,执行过一次后,column需要递增,否则报错
*/
public class PreparedStatementDemo {

private static String querySql ="select * from user";
private static String pstmtSql = "insert into user values(?,?,?,?)";

Connection conn1;
static Statement stmt;
/**
* @param args
*/
public static void main(String[] args) {
// TODO Auto-generated method stub
DBSource dbSource;
Connection conn = null;
java.sql.PreparedStatement pstmt = null;

try {
dbSource = new SimpleDBSource();
conn = dbSource.getConnect();
pstmt = conn.prepareStatement(pstmtSql);

pstmt.setInt(1, 9);
pstmt.setString(2, "sean");
pstmt.setString(3, "my@hotmail.com");
pstmt.setString(4, "add some comments");

//数据库更新工作,包括create, drop, update, insert etc.
pstmt.executeUpdate();

//清空设置的参数,为后续更新准备
pstmt.clearParameters();

System.out.println("执行成功"+ pstmtSql);

//进行数据库查询
Connection conn1 = dbSource.getConnect();
Statement stmt = conn1.createStatement();
ResultSet rs = stmt.executeQuery(querySql);

//进行遍历
while(rs.next()){
System.out.println(rs.getInt(1)+ "\t");
System.out.println(rs.getString(2)+ "\t");
System.out.println(rs.getString(3)+ "\t");
System.out.println(rs.getString(4)+ "\t");
System.out.println("**********************");
}
} catch (FileNotFoundException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (ClassNotFoundException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (SQLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}

//依次关闭statement和conn数据库连接对象,清空资源
finally{
if(stmt!= null){
try {
stmt.close();
} catch (SQLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
stmt= null;
}

if(pstmt!= null){
try {
pstmt.close();
} catch (SQLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
pstmt= null;
}

if(conn!=null){
try {
conn.close();
} catch (SQLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
conn= null;
}
}
}
}




### 如何使用 JDBC 驱动程序连接 MySQL 数据库 为了通过 Java 使用 JDBC 连接到 MySQL 数据库,需要遵循一系列标准流程。以下是详细的说明: #### 加载 JDBC 驱动 加载 JDBC 驱动可以通过 `Class.forName()` 方法实现,该方法用于动态加载指定的类[^2]。对于 MySQL 数据库,通常会加载如下驱动类名: ```java Class.forName("com.mysql.cj.jdbc.Driver"); ``` 此过程确保 JVM 能够识别并初始化所需的 JDBC 驱动。 #### 下载并配置驱动程序 JAR 包 在实际开发中,必须先获取适用于目标版本的 MySQL 驱动程序 JAR 文件,并将其添加至项目的依赖路径中[^3]。例如,如果使用的是 Maven 项目,则可以在 `pom.xml` 中声明以下依赖项: ```xml <dependency> <groupId>mysql</groupId> <artifactId>mysql-connector-java</artifactId> <version>8.0.31</version> </dependency> ``` 或者手动下载对应的 `.jar` 文件并将它放置于 JDK 的扩展目录下(如 `jdk\jre\lib\ext`)[^4]。 #### 建立数据库连接 一旦成功加载了驱动器之后,就可以利用 `DriverManager.getConnection(String url, String user, String password)` 来创建与远程或本地实例之间的物理链接。URL 应当按照特定模式构建,形似下面这样: ```java String jdbcUrl = "jdbc:mysql://localhost:3306/test?useSSL=false&serverTimezone=UTC"; Connection conn = DriverManager.getConnection(jdbcUrl, "username", "password"); ``` 这里需要注意几个参数的意义以及可能存在的选项设置情况,比如是否启用 SSL 或者调整服务器时间区域等附加属性[^1]。 #### 创建 SQL 执行语句 (Statement 对象) 有了活动状态下的 Connection 实例以后,下一步便是准备执行查询命令。这一步骤涉及到了种主要类型的 Statement 子类别之一的选择——即简单的 Statement、带占位符变量支持 PreparedStatment 和可滚动更新型 CallableStatement。 ```java // Example of creating a simple statement object. Statement stmt = conn.createStatement(); ResultSet rs = stmt.executeQuery("SELECT * FROM users;"); ``` #### 处理结果集 (ResultSet 对象) 最后,在完成数据检索动作后,还需要妥善处理返回的数据集合部分。每条记录都可通过迭代的方式逐一读取出来加以分析展示。 ```java while(rs.next()) { int id = rs.getInt("id"); String name = rs.getString("name"); System.out.println(id + ": " + name); } rs.close(); // Always remember to close resources when done using them. stmt.close(); conn.close(); ``` 以上就是完整的基于 JDBC 技术栈来达成同 MySQL 数据源交互的基本步骤概述。
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值