Java_jdbc_操作mysql数据

本文详细介绍JDBC的基本操作流程,包括连接数据库、执行SQL语句、处理结果集等,并提供了具体的代码示例。此外还介绍了如何通过JDBC进行事务管理。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

1.jdbc操作图

2.jdbc操步骤

public class JdbcStep {
	public static void main(String[] args) throws SQLException, ClassNotFoundException {
	//1.注册的2种方式驱动
		DriverManager.registerDriver(new Driver());	//将该驱动加进一个驱动集合
		/*
		 * 但是推荐使用下面一种方式,因为下面这种方法可以将类的字节码文件加载进JVM,其中该类的static构造代码块在加载时得到执行,
		 * 在构造代码块中有DriverManager.registerDriver(new Driver())语句,已经完成了加载!
		 * 如果使用上一种方式注册驱动,实际上驱动被注册2次,应该使用下面方法完成驱动的注册!
		 */
		Class.forName("com.mysql.jdbc.Driver");	//应该使用这种方式
		
	//2.建立连接
		Connection conn = DriverManager.getConnection("jdbc:mysql://localhost:3306/my", "root", "root");
		
	//3.得到操作语句
		Statement statement = conn.createStatement();
	
	//4.执行语句
		ResultSet rs = statement.executeQuery("select id,name,lasttime from user");
		
	//5.处理结果
		while(rs.next()){
			System.out.println(rs.getString("id") + "\t"
					+ rs.getString("name") + "\t"
					+ rs.getString("lasttime"));
		}
	//6.释放相关资源
		rs.close();
		statement.close();
		conn.close();
	}
}

3.在mysql中优化代码

/**
 * JdbcUtils
 * @author Administrator
 */
public final class JdbcUtils {
	private final static String URL = "jdbc:mysql://localhost:3306/my";
	private final static String USER = "root";
	private final static String PASSWORD = "root";
	//加载驱动
	static {
		try {
			Class.forName("com.mysql.jdbc.Driver");
		} catch (ClassNotFoundException e) {
			System.out.println("驱动加载失败,驱动不存在!");
		}
	}

	/**
	 * 获得数据库连接对象
	 * @return
	 */
	public static Connection getConnection() {
		Connection conn = null;
		try {
			conn = DriverManager.getConnection(URL, USER, PASSWORD);
		} catch (SQLException e) {
			System.out.println("驱动加载失败,驱动不存在!");
		}
		return conn;
	}

	/**
	 * 释放连接资源
	 * @param conn
	 * @param statement
	 * @param rs
	 */
	public static void close(Connection conn, Statement statement, ResultSet rs) {
		try {
			if (rs != null){
				rs.close();
				rs = null;
			}
			if (statement != null){
				statement.close();
				statement = null;
			}
			if(conn != null){
				conn.close();
			}
		} catch (SQLException e) {
			e.printStackTrace();
		}
	}
}
private static void test3() {
	Connection conn = null;
	PreparedStatement psm = null;
	ResultSet rs = null;
	String sql = "select id,name from user where depid=(select id from dep where name=?)";
	try {
		//使用工具得到Connection对象
		conn = JdbcUtils.getConnection();
		psm = conn.prepareStatement(sql);
		System.out.print("请输入需要查询系统:");
		BufferedReader bufr = new BufferedReader(new InputStreamReader(System.in));
		String info = bufr.readLine();
		psm.setString(1, info);
		if (psm.execute()) {
			rs = psm.getResultSet();
			while (rs.next()) {
				System.out.println(rs.getString("id") + "\t" + rs.getString("name"));
			}
		}
	} catch (Exception e) {
		e.printStackTrace();
	} finally {
		// 释放资源
		JdbcUtils.close(conn, psm, rs);
	}
}
private static void test2() {
	Connection conn = null;
	Statement statement = null;
	ResultSet rs = null;

	try {
		conn = JdbcUtils.getConnection();
		statement = conn.createStatement();
		/*
		 * 使用statement.execute()语句将得到一个boolean返回值, 如果为true则是select语句,可通过rs =
		 * statement.getResultSet();得到结果集
		 * 如果为false则是UPDATE,INSERT或者DELETE语句,可通过statement
		 * .getUpdateCount()得到影响记录行数
		 */
		boolean isQuery = statement
				.execute("select id,name,lasttime from user");
		if (isQuery) {
			rs = statement.getResultSet();
			while (rs.next()) {
				System.out.println(rs.getString("id") + "\t"
						+ rs.getString("name") + "QQ\t"
						+ rs.getString("lasttime"));
			}
		}
	} catch (SQLException e) {
		e.printStackTrace();
	} finally {
		// 释放资源
		JdbcUtils.close(conn, statement, rs);
	}
}

4.事务管理

/**
 * 事务提交
 */
private static void test4() {
	Connection conn = null;
	Statement statement = null;
	ResultSet rs = null;

	try {
		conn = JdbcUtils.getConnection();
	//1.不允许自动提交
		conn.setAutoCommit(false);	
		statement = conn.createStatement();
		
	//2.多个sql语句执行
		statement.execute("sql1111");
		statement.execute("sql2222");
		statement.execute("sql3333");
	
	//3. 如果没有发生异常,则提交
		conn.commit();
	} catch (Exception e) {
		try {
	//4.如果发生异常,则本次执行将都不成功
			conn.rollback();
		} catch (SQLException e1) {
			e1.printStackTrace();
		}
		e.printStackTrace();
	} finally {
	//5.释放资源
		JdbcUtils.close(conn, statement, rs);
	}
}

5.相关下载

更多去mysql官网下载下载

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值