`
天高云淡000
  • 浏览: 56062 次
  • 性别: Icon_minigender_1
  • 来自: 郑州
社区版块
存档分类
最新评论

JDBC学习笔记

阅读更多
本节JDBC的操作学习大致分为
  • 数据库的装载和连接
  • 数据库的增删改查
  • 数据库的预编译
  • 数据库的事务管理


下面直接上代码了,还是代码比较实在(以mysql为例)
1、装载和连接
// 装载驱动
		try {
           String driverString = "com.mysql.jdbc.Driver";
			Class.forName(driverString).newInstance();
			
		} catch (InstantiationException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		} catch (IllegalAccessException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		} catch (ClassNotFoundException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}
		// mysql 连接的url 后面的有一大串解决了 timestamp不能转换的问题
		String url = "jdbc:mysql://localhost:3306/lesson;		
		// 实例化连接
		try {
			connection = DriverManager.getConnection(url, "root", "123");
					
		} catch (SQLException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}


这里注意。对不同数据库的操作的不同之处仅在于这一步的driveString和url的不同。

2、增删改查
/**
	 * 从数据库中得到所有的对象
	 */
	public void getUsers() {

		String sql = "select * from student";
		try {
			// 执行对象 执行executeQuery查询语句
			ResultSet resultSet = statement.executeQuery(sql);
			// 结果集的元数据
			ResultSetMetaData resultSetMetaData = resultSet.getMetaData();
			// 要注意这里从1开始
			for (int i = 1; i <= resultSetMetaData.getColumnCount(); i++) {
				System.out.println(i);
				System.out.println("列名和类型" + resultSetMetaData.getColumnName(i)
						+ " " + resultSetMetaData.getColumnType(i) + " "
						+ resultSetMetaData.getColumnLabel(i));
			}
			// 遍历结果集放入队列
			while (resultSet.next()) {
				int id = resultSet.getInt(1);
				String sex = resultSet.getString(2);
				String name = resultSet.getString(3);
				String addr = resultSet.getString(4);
				int teacher_id = resultSet.getInt(5);
				
				UserData userData = new UserData(id, sex, name, addr,
						teacher_id);
				UserData.userDatas.add(userData);
			}
		} catch (SQLException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}
		System.out.println("成功获得数据库中所有用户信息");
		//
		for (int i = 0; i < UserData.userDatas.size(); i++) {
			System.out.println(UserData.userDatas.get(i));
		}

	}

	/**
	 * 插入一个数据的方法
	 * 
	 * @param userData
	 * @return
	 */
	public boolean insert(UserData userData) {
		boolean b = false;
		String sex = userData.getSex();
		String name = userData.getName();
		String addr = userData.getAddr();
		int teacher_id = userData.getTeacher_id();
		String sql = "insert into student (sex,name,addr,teacher_id) "
				+ "values ('" + sex + "','" + name + "','" + addr
				+ "',teacher_id)";
		try {
			int count = statement.executeUpdate(sql);
			System.out.println("插入成功,生效行数是" + count);
			b = true;
		} catch (SQLException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}
		return b;
	}
	/**
	 * 删除一个数据的方法
	 * 
	 * @param id
	 * @return
	 */
	public boolean delete(int id) {
		boolean b = false;
		String sql = "delete from student where id = " + id;
		try {
			int count = statement.executeUpdate(sql);
			System.out.println("删除成功,生效行数是" + count);
			b = true;
		} catch (SQLException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}
		return b;
	}

3、预编译
/**
	 * 预编译
	 */
	public void prepareHandle() {
		String sql = "select * from student where id in(?,?)";
		try {
			preparedStatement = connection.prepareStatement(sql);
			preparedStatement.setInt(1, 1);
			preparedStatement.setInt(2, 2);
			ResultSet resultSet = preparedStatement.executeQuery();
			// 这是目前游标的位置
			System.out.println("查到数据数是" + resultSet.getRow());
			while (resultSet.next()) {
				int id = resultSet.getInt(1);
				String sex = resultSet.getString(2);
				String name = resultSet.getString(3);
				String addr = resultSet.getString(4);
				int teacher_id = resultSet.getInt(5);
				UserData userData = new UserData(id, sex, name, addr,
						teacher_id);
				UserData.userDatas.add(userData);
			}
		} catch (SQLException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}
		for (int i = 0; i < UserData.userDatas.size(); i++) {
			System.out.println(UserData.userDatas.get(i));
		}
	}

预编译和一般查询不同之处在于使用了PreparedStatement。可以操作占位符比较方便
4、事务处理
/**
	 * 事务处理
	 * 
	 * 注意其中的事务决定于connection
	 */
	public void transac() {

		try {
			connection.setAutoCommit(false);
			Statement transacStatement = connection.createStatement();
			String sex = "m";
			String name = "aaaaaaa";
			String addr = "addrrrrrrr";
			String sql = "insert into student (sex,name,addr,teacher_id) "
					+ "values ('" + sex + "','" + name + "','" + addr
					+ "',teacher_id)";
			statement.execute(sql);
			 connection.rollback();
//			connection.commit();

			String sql1 = "insert into student (sex,name,addr,teacher_id) "
					+ "values ('" + sex + "','" + name + "','" + addr
					+ "',teacher_id)";
			statement.execute(sql1);
			connection.commit();

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

这里sql没有执行成功,sql1执行成功了。根据事务我们可以处理一些突发错误。
分享到:
评论

相关推荐

    JDBC学习笔记--JDBC学习笔记

    JDBC学习笔记 JDBC(Java DataBase Connectivity)是一种Java程序语言访问数据库的标准接口。它使得Java程序可以连接到各种不同的数据库管理系统,例如Oracle、SQL Server、MySQL、DB2、Sybase等。 JDBC的概念 ...

    JDBC 学习笔记 JDBC 学习笔记

    **JDBC学习笔记** 在Java开发中,JDBC(Java Database Connectivity)是连接数据库的关键技术。它是Java API,允许Java程序与各种类型的数据库进行交互。本笔记将深入探讨JDBC的核心概念、工作原理以及实际应用。 ...

    jdbc学习笔记(PDF格式)

    ### JDBC学习笔记知识点详解 #### 一、JDBC原理概述 **JDBC**(Java Database Connectivity)是一种用于执行SQL语句的Java API,可以为多种关系数据库提供统一访问,它由一组用Java语言编写的类和接口组成。JDBC...

    jdbc学习笔记完美版

    JDBC的学习笔记涵盖了从基本概念到实际操作的各个方面,对于初学者来说是一份很好的参考资料。通过学习JDBC,开发者能够有效地在Java应用程序中集成数据库功能,实现数据的增删改查以及与存储过程的交互。理解和掌握...

    jdbc 学习 笔记 代码例子4

    jdbc 学习 笔记 代码例子jdbc 学习 笔记 代码例子jdbc 学习 笔记 代码例子jdbc 学习 笔记 代码例子jdbc 学习 笔记 代码例子

    JDBC学习笔记总结,可以看看

    "JDBC学习笔记总结" JDBC(Java Database Connectivity)是一种Java API,用于连接和操作关系数据库。下面是JDBC学习笔记的总结: 连接到数据库的方法 1. ODBC(Open Database Connectivity):是一个以C语言为...

    JDBC笔记_JDBC学习笔记_

    在本篇JDBC学习笔记中,我们将深入探讨JDBC的基础知识、核心概念以及实际应用。 一、JDBC基础 1. JDBC驱动程序:JDBC驱动是连接Java应用程序和数据库之间的桥梁。根据实现方式,JDBC驱动分为四种类型:类型1(JDBC...

    达内jdbc学习笔记

    总的来说,"达内jdbc学习笔记"涵盖了JDBC基础、数据库连接、SQL执行、结果集处理、事务管理和性能优化等多个关键知识点,对Java开发者来说是宝贵的参考资料。通过深入学习和实践,可以熟练地使用Java进行数据库操作...

    jdbc 学习 笔记 代码例子3

    jdbc 学习 笔记 代码例子jdbc 学习 笔记 代码例子jdbc 学习 笔记 代码例子jdbc 学习 笔记 代码例子

    jdbc 学习 笔记 代码例子2

    jdbc 学习 笔记 代码例子jdbc 学习 笔记 代码例子jdbc 学习 笔记 代码例子jdbc 学习 笔记 代码例子

    JDBC学习笔记(精华版)-1

    本篇JDBC学习笔记将深入探讨JDBC的核心概念、操作步骤以及最佳实践。 **一、JDBC基本概念** 1. **驱动程序**:JDBC驱动程序是Java应用程序与数据库之间的桥梁,分为四种类型:JDBC-ODBC桥接驱动、本地API驱动、...

    jdbc 学习 笔记 代码例子1

    jdbc学习用笔记和代码例子jdbc学习用笔记和代码例子jdbc学习用笔记和代码例子

    JDBC学习笔记(笔记+包含详细注释的代码)

    **JDBC学习笔记** Java Database Connectivity (JDBC) 是Java平台中用于与各种数据库进行交互的一组接口和类。它是Java SE的一部分,允许Java应用程序连接到数据库,执行SQL语句,处理结果集,并进行事务管理。这篇...

    JDBC 学习笔记+代码整理

    JDBC 学习笔记+代码整理

    传智播客视频Jdbc学习笔记

    ### 传智播客JDBC学习笔记精要 #### JDBC简述与连接 JDBC(Java Database Connectivity)是Java中用来规范客户端程序如何访问数据库的应用程序接口,提供了诸如查询和更新数据库中数据的方法。在传智播客的JDBC...

    JDBC学习笔记教程文档

    **JDBC学习笔记教程文档** **一、JDBC概述** 1.1 **什么是JDBC** JDBC(Java Database Connectivity)是Java语言与各种数据库交互的一种标准接口,由Sun Microsystems公司开发,它允许Java应用程序通过Java代码来...

    JDBC学习笔记.txt

    JDBC学习笔记.txt

    配套学习资料:Java开发 - 尚硅谷JDBC学习笔记

    Java开发 - 尚硅谷JDBC学习笔记是一套深入解析Java数据库连接(JDBC)技术的教程,涵盖了从基础到进阶的各种知识点。JDBC是Java编程语言中用于访问数据库的标准应用编程接口,它允许程序员使用Java来执行SQL语句,...

Global site tag (gtag.js) - Google Analytics