头歌——Java高级特性 - JDBC(上)

10 篇文章 9 订阅
9 篇文章 5 订阅

第1关:JDBC连接数据库

package jdbc;

import java.sql.*;

public class jdbcConn {
	public static void getConn() {
		try {
			// 1.注册驱动
			Class.forName("com.mysql.jdbc.Driver");

		} catch (ClassNotFoundException e) {
			e.printStackTrace();
		}
		/********** End **********/

		/********** Begin **********/
		Connection conn = null;
		Statement statement = null;
		try {
			// 2.建立连接并创建数据库和表

			conn = DriverManager.getConnection("jdbc:mysql://localhost:3306/", "root", "123123");

			String sql1 = "drop database if exists mysql_db;";
			String sql2 = "create database mysql_db;";
			statement = conn.createStatement();
			statement.execute(sql1);
			statement.execute(sql2);

			statement.execute("use mysql_db");

			String sql3 = "create table student(id int not null,name varchar(20),sex varchar(4),age int)";

			statement.execute(sql3);
		} catch (Exception e) {
			// TODO 自动生成的 catch 块
			e.printStackTrace();
		} finally {
			try {
				if (statement != null)
					statement.close();
				if (conn != null)
					conn.close();
			} catch (SQLException e) {
				e.printStackTrace();
			}
		}

	}
}

第2关:JDBC对表中数据的操作 

package jdbc;

import java.sql.*;
import java.util.ArrayList;
import java.util.List;

public class jdbcInsert {
	public static void insert() {
		/********** Begin **********/
		try {
			// 加载驱动
			Class.forName("com.mysql.jdbc.Driver");

		} catch (ClassNotFoundException e) {
			e.printStackTrace();
		}
		/********** End **********/

		Connection conn = null;
		PreparedStatement statement = null;
		/********** Begin **********/
		// 连接并插入数据
		try {
			String url = "jdbc:mysql://localhost:3306/mysql_db?useUnicode=true&characterEncoding=utf8";
			String user = "root";
			String password = "123123";
			conn = DriverManager.getConnection(url, user, password);

			String sql1 = "insert into student(id,name,sex,age) values (1,'张三','男',19),(2,'李四','女',18),(3,'王五','男',20)";

			statement = conn.prepareStatement(sql1);
			statement.executeUpdate();
			String sql2 = "select * from student";
			ResultSet rs = statement.executeQuery(sql2);

			Student student = null;
			while (rs.next()) {
				int id = rs.getInt(1);
				String name = rs.getString(2);
				String sex = rs.getString(3);
				int age = rs.getInt(4);
				student = new Student(id, name, sex, age);
				System.out.println(
						student.getId() + " " + student.getName() + " " + student.getSex() + " " + student.getAge());
			}

		} catch (SQLException e) {
			e.printStackTrace();
		}
		/********** End **********/
		finally {
			try {
				if (statement != null)
					statement.close();
				if (conn != null)
					conn.close();
			} catch (SQLException e) {
				e.printStackTrace();
			}
		}
	}
}

第3关:JDBC事务

package jdbc;

import java.sql.*;

public class jdbcTransaction {

    public static void transaction(){
        try {
            Class.forName("com.mysql.jdbc.Driver" );
        } catch (ClassNotFoundException e) {
            e.printStackTrace();
        }

        Connection conn = null;
        PreparedStatement ps = null;
        /**********  Begin   **********/
        //连接数据库并开启事务
        try {
           String url="jdbc:mysql://localhost:3306/mysql_db?useUnicode=true&characterEncoding=utf8";
           conn =DriverManager.getConnection(url,"root","123123");
           conn.setAutoCommit(false);

           String sql1="insert into student(id,name,sex,age) values(4,'赵六','女',21)";
           ps=conn.prepareStatement(sql1);
           ps.executeUpdate();
           conn.commit();

           String sql2="daj;ljd";
           ps=conn.prepareStatement(sql2);
           ps.executeUpdate();
           conn.commit();

           String sql3="select * from student";
           ResultSet rs=ps.executeQuery(sql3);

           Student student = null;
           while(rs.next())
           {
               int id=rs.getInt(1);
               String name=rs.getString(2);
               String sex =rs.getString(3);
               int age=rs.getInt(4);

               student =new Student(id,name,sex,age);
               System.out.println(student.getId() + " " + student.getName() + " " + student.getSex() + " " + student.getAge());
           }









        } catch (SQLException e) {
            try {
                //事务回滚
                conn.rollback();


            } catch (SQLException e1) {
                e1.printStackTrace();
            }
        }
        /**********  End   **********/
        finally {
            try {
                if(ps!=null)
                    ps.close();
                if (conn != null)
                    conn.close();
            } catch (SQLException e1) {
                e1.printStackTrace();
            }
        }
    }
}

  • 6
    点赞
  • 17
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: JDBCJava Database Connectivity的缩写,是Java语言中用于连接和操作数据库的接口。它提供了一组标准的API,可以用来访问各种不同类型的关系型数据库,如Oracle、MySQL、SQL Server等。JDBC驱动程序是一个Java类库,可以将JDBC API映射到特定数据库的接口上。通过使用JDBC,可以在Java程序中执行SQL语句,并对数据库进行增删改查等操作。 ### 回答2: JDBCJava Database Connectivity(Java数据库连接)的缩写,是Java语言中用于与数据库进行连接和操作的API(应用程序接口)。它可以让开发者使用Java语言轻松地访问各种不同类型的数据库JDBC高级特性包括以下几个方面: 1. 连接池:JDBC连接池是一种管理数据库连接的机制。它可以在应用程序启动时创建一定数量的数据库连接,并在需要时将这些连接分配给应用程序使用。通过使用连接池,可以减少每次请求时创建和关闭数据库连接的开销,提高应用程序的性能。 2. 事务管理:JDBC提供了事务管理的功能,可以对多个数据库操作进行批量提交或回滚。通过使用事务,可以确保多个操作的一致性和完整性,同时避免因意外错误导致数据丢失或不一致的问题。 3. 批量更新:JDBC提供了批量更新的功能,可以将多个数据操作一次性提交到数据库,从而减少与数据库的交互次数,提高性能。批量更新适用于需要同时操作多个数据记录的场景,比如大量数据的插入、更新或删除。 4. 元数据查询:JDBC可以通过元数据查询数据库的结构和属性信息,包括表、列、索引等的定义和属性。开发者可以使用元数据查询来动态获取数据库的结构,从而实现一些灵活的操作和功能,例如自动生成代码或报表等。 5. 执行计划:执行计划是指数据库在执行SQL语句时所采取的具体执行策略。JDBC可以获取和分析执行计划信息,帮助开发者优化SQL语句的性能。通过查看执行计划,开发者可以了解数据库在执行SQL语句时所使用的索引、排序、连接等操作,从而针对性地进行性能优化。 总结来说,JDBC高级特性包括连接池、事务管理、批量更新、元数据查询和执行计划等。通过使用这些特性,开发者可以更加灵活和高效地与数据库进行交互,实现更复杂的数据操作和业务需求。 ### 回答3: Java高级特性中的一个重要组成部分是JDBCJava Database Connectivity),它为Java应用程序提供了与数据库之间连接的能力。 JDBC允许开发人员使用标准的SQL语句来查询和操作各种类型的数据库,无论是关系型数据库MySQL、Oracle还是非关系型数据库如MongoDB。JDBC通过数据库驱动程序(Driver)来实现与数据库的通信,每种数据库都需要特定的驱动程序。 使用JDBC的第一步是加载数据库驱动程序。开发人员需要使用"Class.forName()"方法来加载驱动程序的类。一旦驱动程序加载成功,开发人员可以使用"DriverManager.getConnection()"方法来创建与数据库的连接。 在成功连接数据库之后,开发人员可以使用Java数据库API(Application Programming Interface)来执行SQL语句、事务管理和获取查询结果等。JDBC提供了一组接口和类来实现这些功能,例如"Statement"、"PreparedStatement"和"ResultSet"等。 JDBC还支持元数据(MetaData),可以通过元数据获取关于数据库的信息,如表结构、列名和数据类型等。元数据使得开发人员可以动态地获取和处理数据库的信息,从而实现更高级的功能。 除了基本的SQL操作,JDBC还支持批量处理、存储过程和批量更新等高级特性。批量处理可以提高性能,减少与数据库的通信次数;存储过程可以在数据库端执行一系列操作,减少与客户端的通信;批量更新可以一次性更新多个记录,提高效率。 总之,JDBCJava高级特性中与数据库交互的重要组成部分,通过它可以实现Java应用程序与各种类型的数据库的连接和操作。JDBC提供了丰富的API和功能,方便开发人员进行数据库操作,并支持高级特性如元数据、批量处理和存储过程等。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值