JAVA&数据库连接——JDBC模式

JDBC

JDBC(全称:Java Data Base Connectivity)是java数据库连接简称 ,提供连接各种数据库的能力。

JDBC API主要的功能:

  1. 与数据库建立连接
  2. 执行SQL语句
  3. 处理结果

JDBC关键字的使用:

  1. DriverManager:依据数据库选择驱动
  2. Connection:负责连接数据库并传达数据库的任务
  3. Statement:由Connection产生、负责执行SQL语句
  4. ResultSet:负责保存Statement执行后产生的查询结果
  5. PreparedStatement接口:预编译SQL语句,提高SQL语句性能、代码安全性、可读性和可维护性

Statement常用方法:

  • ResultSet executeQuery(String sql):执行SQL查询并且获取ResultSet对象
  • Int executeUpdate(String sql):可以执行插入、删除、更新等操作,返回值是执行该操作所影响的行数
  • Boolean execute(String sql):可以执行任意SQL语句,然后获得一个布尔值,表示是否返回ResultSet
  • Void close():关闭ResultSet对象

PreparedStatement比Statement提高了代码的可读性和可维护性,提高了SQL语句执行的性能,提高了安全性

JDBC的操作步骤:

  1. 加载JDBC驱动
  2. 与数据库建立连接
  3. 创建Statement或PreparedStatement对象
  4. 执行SQL语句,返回结果
  5. 处理返回结果
  6. 释放资源
    //驱动类
	private static String driver="com.mysql.jdbc.Driver";
	//数据库连接字符串
	private static  String url="jdbc:mysql://localhost:3306/school";
	//数据库登录账户
	private static  String name="root";
	//登录密码
	private static  String pwd="mysql";
	
	//定义连接对象
	private static Connection conn=null;
	//打开数据库连接的方法
	public static Connection getconn(){
		//判断连接是否存在
		if(conn==null){
			//加载驱动
			try {
				Class.forName(driver);
				//获取连接     
				conn=DriverManager.getConnection(url,name,pwd);				
			} catch (ClassNotFoundException e) {
				e.printStackTrace();
			} catch (SQLException e) {
				e.printStackTrace();
			}
		}
		return conn;
	}
	//关闭资源的方法
	public static void close(PreparedStatement ps,ResultSet res){
		try {
			//判断对象是否不为空
			if (res != null) {
				res.close();
			}
			if (ps != null) {
				ps.close();
			}
			if (conn != null) {
				conn.close();
			}
		} catch (SQLException e) {//close
			e.printStackTrace();
		}
	}

查询语句代码示例:

public static void main(String[] args) {
		//查询:请用户输入学生的姓名和年级编号 查询学生的相关信息
		Scanner input=new Scanner(System.in);
		System.out.println("请输入要查询的学生姓名(支持模糊查询):");
		String name=input.next();
		System.out.println("请输入要查询的学生的年级编号:");
		int gid=input.nextInt();
		
		//1.定义需要的对象
		PreparedStatement ps=null;
		ResultSet res=null;
		
		try {
			//2.定义sql
			String sql = "select studentno,studentname from student where studentname like ? and gradeid=?";
			//3.获取ps对象 
			ps = BaseDao.getconn().prepareStatement(sql);
			//4.替换展位符
			ps.setString(1, "%"+name+"%");
			ps.setInt(2,gid);
			//5.执行sql
			res=ps.executeQuery();
			//6.借助循环读取数据
			while (res.next()) {
				System.out.println(res.getInt(1)+"\t"+res.getString(2));
			}
			
		} catch (SQLException e) {
			e.printStackTrace();
		}
		finally{
			BaseDao.close(ps, res);
		}

	}

增删改语句代码示例(增):

public static void main(String[] args) {
		//向科目表中添加数据
		Scanner input=new Scanner(System.in);
		System.out.println("请输入科目名称");
		String name=input.next();
		System.out.println("请输入课时数量:");
		int ks=input.nextInt();
		System.out.println("请输入年级编号:(1/2/3)");
		int gid=input.nextInt();
		
		//1.定义需要的对象
		PreparedStatement ps=null;
		try {
			//2.创建sql
			String sql="insert into subjectt values(null,?,?,?)";
			//3.创建ps
			ps=BaseDao.getconn().prepareStatement(sql);
			//4.替换占位符
			ps.setString(1,name);
			ps.setInt(2, ks);
			ps.setInt(3, gid);
			//5.执行sql
			int num=ps.executeUpdate();
			//6.判断结果
			if (num>0) {
				System.out.println("增加成功!");
			} else {
				System.out.println("增加失败!");
			}
		
		} catch (SQLException e) {
			e.printStackTrace();
		}
		finally{
			BaseDao.close(ps,null);
		}
			
	}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值