JDBC的大致使用步骤

JDBC的大致使用步骤

  1. 导入jar包
  2. 注册驱动 : 告诉程序该使用哪一个数据库驱动jar
Class.forName("com.mysql.jdbc.Driver");
  1. 获取数据库连接
url : jdbc:mysql://ip地址(域名):端口号/数据库名称
Connection conn = DriverManager.getConnection("jdbc:mysql://localhost:3306/db3", "root", "root");
  1. 定义sql语句
  2. 获取执行sql的对象 (Statement, PreparedStatement )
stmt = conn.createStatement();
pstmt = conn.prepareStatement(sql);

Statement 和 PreparedStatement 的对比
PreparedStatement类中预编译的综合应用解析

  1. 执行sql语句
// Statement 常用方法
boolean execute(String sql) // 执行各种sql语句,如果为true,表示所执行的sql语句有查询结果
int executeUpdate(String sql) // 执行SQL语句中的 INSERT,UPDATE,DELETE语句,返回值是数据库中受该sql语句影响的记录的条数
ResultSet executeQuery(String sql) // 执行sql语句中的select语句,返回表示查询结果的ResultSet对象
// PreparedStatement 常用方法
int executeUpdate()
ResultSet executeQuery()
// PreparedStatement 使用示例
// 定义sql,使用?占位符
String sql = "select * from user where id = ? and password = ?";
// 获取执行sql的对象
pstmt = conn.prepareStatement(sql);
// 给?赋值, ?的位置从1开始
pstmt.setInt(1, id);
pstmt.setString(2, password);
// 执行查询,不需要传递sql
rs = pstmt.executeQuery();
/**
ResultSet 的使用
在ResultSet接口内部有一个指向表格数据行的游标,对象初始化时游标指向表格数据行的第一行之前
调用next()方法可以将游标移动到下一行,如果下一行没有数据,则返回false
*/
// 如果想获取结果集中任意位置的的数据,需要在创建Statement对象时,设置两个ResultSet定义的常量
Statement stmt = conn.createStatement(ResultSet.TYPE_SCROLL_INSENITIVE, ResultSet.CONCUR_READ_ONLY);

boolean absolute(int row) // 将游标移动到此ResultSet对象中给定的行号
boolean previous() // 将游标移动到上一行
void beforeFirst() // 将光标移动到第一行之前,如果结果集不包含行,则此方法不起作用。
String getString(int columnIndex) // 获取指定字段的String类型的值,columnIndex是字段索引(索引从1开始)
String getString(String columnName) // 获取指定字段的String类型的值,参数代表字段的名称

// 比如第二列是 username
getString("username") 或者 getString("2")
  1. 释放资源

完整使用案例

package cn.cast.jdbc;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement;

public class JdbcDemo {
	public static void main(String[] args) {
		Connection conn = null;
		Statement stmt = null;
		ResultSet rs = null;
		try {
            // 注册驱动
			Class.forName("com.mysql.jdbc.Driver");
			// 定义sql语句
			String sql = "select * from account";
			// 获取数据库连接
			conn = DriverManager.getConnection("jdbc:mysql:///db3", "root", "root");
			// 获取执行sql的对象
			stmt = conn.createStatement();
			// 执行sql
			rs = stmt.executeQuery(sql);
            // 处理结果
			// 当还有数据时
			while (rs.next() == true) {
				String name = rs.getString(1);
				int balance = rs.getInt(2);
				System.out.println(name + balance);
			}	
		} catch (ClassNotFoundException e) {
			e.printStackTrace();
		} catch (SQLException e) {
			e.printStackTrace();
		} finally {
			// 释放资源,防止空指针异常
			if (rs != null) {
				try {
					rs.close();
				} catch (SQLException e) {
					e.printStackTrace();
				}
			}
			if (stmt != null) {
				try {
					stmt.close();
				} catch (SQLException e) {
					e.printStackTrace();
				}
			}
			if (conn != null) {
				try {
					conn.close();
				} catch (SQLException e) {
					e.printStackTrace();
				}
			}
		}		
	}
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值