JAVA学习日记:JDBC(3)

本节课我学习的主要内容有:

1.ResultSet接口

ResultSet接口:

		它的对象封装的是数据查询后的结果。
 	
  		方法:
  			first()	移动到第一行。
  			next() 游标后移一位。
  			previous() 游标前移一位。
  
  			getXXXX() 返回当前行的某一列数据。
 			updateXXXX() 更新当前行中的某一列数据。

  			absolute() 游标的绝对定位。
  			relative() 游标的相对定位。
  		
  		ResultSet的类型:
			默认类型,仅向前移动:
  				ResultSet.TYPE_FORWARD_ONLY;
 			
  			敏感类型,可滚动的:
				ResultSet.TYPE_SCROLL_SENSITIVE;
 				敏感类型可以对结果集中的数据进行update并可以影响到数据库。
 
  			不敏感类型,可滚动的:
  				ResultSet.TYPE_SCROLL_INSENSITIVE;
  		
		ResultSet的并发性:
  			默认、只读:
 				ResultSet.CONCUR_READ_ONLY;
  
 			可修该的:
  				ResultSet.CONCUR_UNDATABLE;	

Test01类(测试查询和查询修改数据库):

package LessonForJDBC03;

import java.sql.*;
import java.util.*;

class StudentBean2
{
	private int No;
	private String Name;
	private String Sex;
	private int Age;
	
	public StudentBean2() 
	{
		
	}
	
	public StudentBean2(int no, String name, String sex, int age) 
	{
		super();
		No = no;
		Name = name;
		Sex = sex;
		Age = age;
	}

	public int getNo() 
	{
		return No;
	}

	public void setNo(int no) 
	{
		No = no;
	}

	public String getName() 
	{
		return Name;
	}

	public void setName(String name) 
	{
		Name = name;
	}

	public String getSex() 
	{
		return Sex;
	}

	public void setSex(String sex) 
	{
		Sex = sex;
	}

	public int getAge() 
	{
		return Age;
	}

	public void setAge(int age) 
	{
		Age = age;
	}
}

class StudentDAO2
{
	public static int addStudents(Connection con)
	{
		int result = 0;
		
		String sql = "INSERT INTO STUDENTTEST01 (NO,NAME,SEX,SAGE) VALUSE (0011,'帅哥','男',22)";
		
		try 
		{
			Statement sta = con.createStatement();
			result = sta.executeUpdate(sql);
		} catch (SQLException e) 
			{
				e.printStackTrace();
			}
		return result;
	}
	
	public static int deleteInf(Connection con,String deletinf)
	{
		int result = 0;
		
		String sql = deletinf;
		
		try 
		{
			Statement sta = con.createStatement();
			result = sta.executeUpdate(sql);
		} catch (SQLException e) 
			{
				e.printStackTrace();
			}
		
		return result;
	}
	
	public static ArrayList<StudentBean2> getAllStudentInf(Connection con)
	{
		ArrayList<StudentBean2> student_list = new ArrayList<StudentBean2>();
		
		String sql = "SELECT NO,NAME,SEX,SAGE FROM STUDENTTEST01";
		
		try 
		{
			Statement sta = con.createStatement();
			ResultSet result = sta.executeQuery(sql);
			
			while (result.next())
			{
				StudentBean2 sb = new StudentBean2(result.getInt("NO"),result.getString("NAME"),
						result.getString("SEX"),result.getInt("SAGE"));
				
				student_list.add(sb);
			}
			
		} catch (SQLException e) 
			{
				e.printStackTrace();
			}
		
		return student_list;
	}
	
	public static void findInf(Connection con,int line)
	{
		String sql = "SELECT NO,NAME,SEX,SAGE FROM STUDENTTEST01";
		
		try 
		{
			//敏感的可修改数据库的。
			Statement sta = con.createStatement(ResultSet.TYPE_SCROLL_SENSITIVE, ResultSet.CONCUR_UPDATABLE);
			
			ResultSet result = sta.executeQuery(sql);
			
			//先绝对定位查询试一试
			result.absolute(line);
			System.out.println("学号:"+result.getInt("NO")+" 姓名:"+result.getString("NAME")+
					" 性别:"+result.getString("SEX")+" 年龄:"+result.getInt("SAGE"));
			
			//改值
			result.updateString("SEX","女");
			result.updateRow();//修改完后更新。
		} catch (SQLException e) 
			{
				e.printStackTrace();
			}
	}
}

public class Test01 
{
	public static Connection getConnection(String driver_class,String url,String user,String password)
	{
		Connection con = null;
		
		try 
		{
			Class.forName(driver_class);
			con = DriverManager.getConnection(url, user, password);
			
		} catch (ClassNotFoundException | SQLException e) 
			{
				e.printStackTrace();
			}	
		
		return con;
	}
	
	public static void closeConnection(Connection con)
	{
		if (con == null)
		{
			try 
			{
				con.close();
			} catch (SQLException e)
				{
					e.printStackTrace();
				}
		}
	}
	
	public static void main(String[] args) 
	{
		Scanner input = new Scanner(System.in);
		
		String driver_class = "oracle.jdbc.OracleDriver";
		String url = "jdbc:oracle:thin:@localhost:1521:orcl";
		String user = "scott";
		String password = "******";
		Connection con1 = getConnection(driver_class,url,user,password);
		
		//查询并打印STUDENTTEST01中的所有数据。
		ArrayList<StudentBean2> student_list1 = StudentDAO2.getAllStudentInf(con1);
		student_list1.forEach((k1)->{
			System.out.println("学号:"+k1.getNo()+" 姓名:"+k1.getName()+" 性别:"+k1.getSex()+" 年龄:"+k1.getAge());
		});
		
		//查询并更新。
		StudentDAO2.findInf(con1, input.nextInt());
		
	}
}

本篇部分文字来源于:
咕嘟咖啡杨海滨老师 — 《java编程语言高级特性》
在这里十分感谢老师能够给我带来学习的激情。

2020.11.17
本文章是本人学习笔记,不进行任何商用所以不支持转载请理解!也请别拿去商用!
如果觉得对你有帮助那么欢迎你随时来回顾!
只为记录本人学习历程。
毕
  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值