zoukankan      html  css  js  c++  java
  • JDBC实例

    JDBC实例

    1、通过statement存入一个学生,查询学生

    2、通过prestatement存入一个学生

    ExamStudent对象类:

    package jdbc2;
    
    public class ExamStudent {
    	int flowid;
    	int type;
    	String idcard;
    	String examCard;
    	String studentname;
    	String location;
    	int grade;
    	public ExamStudent() {
    		super();
    		// TODO Auto-generated constructor stub
    	}
    	
    	@Override
    	public String toString() {
    		return "ExamStudent [flowid=" + flowid + ", type=" + type + ", idcard="
    				+ idcard + ", examCard=" + examCard + ", studentname="
    				+ studentname + ", location=" + location + ", grade=" + grade
    				+ "]";
    	}
    	public int getFlowid() {
    		return flowid;
    	}
    	public void setFlowid(int flowid) {
    		this.flowid = flowid;
    	}
    	public int getType() {
    		return type;
    	}
    	public void setType(int type) {
    		this.type = type;
    	}
    	public String getIdcard() {
    		return idcard;
    	}
    	public void setIdcard(String idcard) {
    		this.idcard = idcard;
    	}
    	public String getExamCard() {
    		return examCard;
    	}
    	public void setExamCard(String examCard) {
    		this.examCard = examCard;
    	}
    	public String getStudentname() {
    		return studentname;
    	}
    	public void setStudentname(String studentname) {
    		this.studentname = studentname;
    	}
    	public String getLocation() {
    		return location;
    	}
    	public void setLocation(String location) {
    		this.location = location;
    	}
    	public int getGrade() {
    		return grade;
    	}
    	public void setGrade(int grade) {
    		this.grade = grade;
    	}
    
    	public ExamStudent(int flowid, int type, String idcard, String examCard,
    			String studentname, String location, int grade) {
    		super();
    		this.flowid = flowid;
    		this.type = type;
    		this.idcard = idcard;
    		this.examCard = examCard;
    		this.studentname = studentname;
    		this.location = location;
    		this.grade = grade;
    	}
    }
    

      

    1、获取数据库连接封装的方法

    	public static Connection getConnection() throws Exception{
    		String driverClass = null;
    		String url = null;
    		String user = null;
    		String password = null;
    		
    		//读取properties配置文件
    		InputStream is = TestJDBC.class.getClassLoader().getResourceAsStream("jdbc.properties");
    		Properties properties = new Properties();
    		properties.load(is);
    	    driverClass = properties.getProperty("driverClass");
    	    url = properties.getProperty("url");
    		user = properties.getProperty("user");
    		password = properties.getProperty("password");
    		
    		//加载数据库驱动(对应的Driver实现类中有注册驱动的静态代码块)
    		Class.forName(driverClass);
    		
    		Properties info = new Properties();
    		info.put("user", user);
    		info.put("password", password);
    		
    		//通过DriverManager的getConnection()方法获取数据库连接
    		return DriverManager.getConnection(url, user, password);
    	}
    

    2、释放资源封装的方法

    	//释放资源
    	public static void release(Statement statement,Connection conn,ResultSet rs){
    		if(rs != null){
    			try {
    				rs.close();
    			} catch (SQLException e) {
    				// TODO Auto-generated catch block
    				e.printStackTrace();
    			}
    		}
    		if(statement!=null){
    			try {
    				statement.close();
    			} catch (SQLException e) {
    				// TODO Auto-generated catch block
    				e.printStackTrace();
    			}
    		}
    		if(conn != null){
    			try {
    				conn.close();
    			} catch (SQLException e) {
    				// TODO Auto-generated catch block
    				e.printStackTrace();
    			}
    		}
    	}
    

      

    3、简单的学生登录封装的方法

    	//登录
    	private int getSearchTypeFormConsole(){
    		System.out.println("请输入登录类型:1:身份证登录  2.准考证号登陆");
    		Scanner sc = new Scanner(System.in);
    		int type = sc.nextInt();
    		if(type != 1 && type != 2){
    			throw new RuntimeException("输入类型有误");
    		}
    		
    		return type;
    	}
    

      

    4、创建查询语句

    	public String SearchStudent(int type){
    		ExamStudent es = new ExamStudent();
    		Scanner sc = new Scanner(System.in);
    		String sql = "select * from ExamStudent where idcard = " ;
    		if(type == 1){
    			System.out.println("请输入身份证号");
    			
    			String idcard = sc.next();
    			es.setIdcard(idcard);
    			sql = sql + es.getIdcard();
    		}else{
    			System.out.println("请输入准考证号");
    			String examcard = sc.next();
    			es.setExamCard(examcard);
    			sql = sql + es.getExamCard();
    		}
    		return sql;
    		
    	}
    

      

    5、查询学生

    public ExamStudent getStudent(String sql){
    		Connection conn = null;
    		Statement statement = null;
    		ResultSet rs = null;
    		ExamStudent es = null;
    		
    		try {
    			conn = getConnection();
    			statement = conn.createStatement();
    			rs = statement.executeQuery(sql);
    			
    			while(rs.next()){
    				es = new ExamStudent(
    						rs.getInt(1),
    						rs.getInt(2),
    						rs.getString(3),
    						rs.getString(4),
    						rs.getString(5),
    						rs.getString(6),
    						rs.getInt(7));
    			}
    		} catch (Exception e) {
    			// TODO Auto-generated catch block
    			e.printStackTrace();
    		}finally{
    			release(statement, conn, rs);
    		}
    		return es;	
    	}
    

      

    6、输出学生

    	public void printStudent(ExamStudent es){
    		if(es !=null){
    			System.out.println(es);
    		}else{
    			System.out.println("查无此人!!!");
    		}
    	}
    

      

    7、测试

    	@Test
    	public void test1() throws Exception{
    		//1.登录
    		int type = getSearchTypeFormConsole();
    		
    		//获取信息
    		String sql = SearchStudent(type);
    		
    		//查询
    		ExamStudent es = getStudent(sql);
    		
    		//输出
    		printStudent(es);
    	}
    

      

    8、从控制台输入ExamStudent对象

    	//从控制台输入ExamStudent对象
    	public ExamStudent getExamStudentFromConsole(){
    		ExamStudent es = new ExamStudent();
    		Scanner sc = new Scanner(System.in);
    		System.out.println("学生号: ");
    		es.flowid = sc.nextInt();
    		System.out.println("考试类型: ");
    		es.type = sc.nextInt();
    		System.out.println("身份证: ");
    		es.idcard = sc.next();
    		System.out.println("考号: ");
    		es.examCard = sc.next();
    		System.out.println("学生名: ");
    		es.studentname = sc.next();
    		System.out.println("学生地址: ");
    		es.location = sc.next();
    		System.out.println("学生班级: ");
    		es.grade = sc.nextInt();
    		return es;
    	}
    

      

    9、封装的sql语句修改、插入、删除方法

    	public void update(String sql){
    		Connection conn = null;
    		Statement statement = null;
    		ResultSet rs = null;
    		try {
    			conn = getConnection();
    			statement = conn.createStatement();
    			statement.executeUpdate(sql);
    		} catch (Exception e) {
    			// TODO Auto-generated catch block
    			e.printStackTrace();
    		}finally{
    			TestJDBC.release(statement, conn,rs);
    		}
    	}
    

      

    10、添加学生

    	//添加学生到数据库
    	public void addStudent(){
    		ExamStudent stu  = getExamStudentFromConsole();
    		String sql = "insert into examstudent values(" + stu.getFlowid() +"," + stu.getType() + ",'" + stu.getIdcard() + "','" + stu.getExamCard() + "','" + stu.getStudentname() + "','" + stu.getLocation() + "'," + stu.getGrade() + ")";
    		update(sql);
    		System.out.println("插入成功!!!!");
    	}
    	
    

      

    通过Prestatement存入学生数据

    1、从控制台得到需要插入的学生信息

    	//从控制台输入ExamStudent对象
    	public ExamStudent getExamStudentFromConsole(){
    		ExamStudent es = new ExamStudent();
    		Scanner sc = new Scanner(System.in);
    		System.out.println("学生号: ");
    		es.flowid = sc.nextInt();
    		System.out.println("考试类型: ");
    		es.type = sc.nextInt();
    		System.out.println("身份证: ");
    		es.idcard = sc.next();
    		System.out.println("考号: ");
    		es.examCard = sc.next();
    		System.out.println("学生名: ");
    		es.studentname = sc.next();
    		System.out.println("学生地址: ");
    		es.location = sc.next();
    		System.out.println("学生班级: ");
    		es.grade = sc.nextInt();
    		return es;
    	}
    

      

    2、获取数据库连接

    	//获取数据库连接方法
    	public static Connection getConnection() throws Exception{
    		String driverClass = null;
    		String url = null;
    		String user = null;
    		String password = null;
    		
    		//读取properties配置文件
    		InputStream is = TestJDBC.class.getClassLoader().getResourceAsStream("jdbc.properties");
    		Properties properties = new Properties();
    		properties.load(is);
    	    driverClass = properties.getProperty("driverClass");
    	    url = properties.getProperty("url");
    		user = properties.getProperty("user");
    		password = properties.getProperty("password");
    		
    		//加载数据库驱动(对应的Driver实现类中有注册驱动的静态代码块)
    		Class.forName(driverClass);
    		
    		Properties info = new Properties();
    		info.put("user", user);
    		info.put("password", password);
    		
    		//通过DriverManager的getConnection()方法获取数据库连接
    		return DriverManager.getConnection(url, user, password);
    	}
    

      

    3、通过prestatement进行数据插入

    	//重写update方法
    	public void update(String sql,Object...args){
    		Connection conn = null;
    		PreparedStatement preparedStatement = null;
    		
    		try {
    			conn = getConnection();
    			preparedStatement = conn.prepareStatement(sql);
    			
    			for(int i=0;i<args.length;i++){
    				preparedStatement.setObject(i+1, args[i]);
    			}
    			int result = preparedStatement.executeUpdate();
    		} catch (Exception e) {
    			// TODO Auto-generated catch block
    			e.printStackTrace();
    		}
    	}
    

      

    4、添加学生

    	//添加学生
    	public void addStudent2(ExamStudent es){
    		String sql = "insert into examstudent(flowid,type,idcard,examcard,studentname,location,grade) values(?,?,?,?,?,?,?)";
    		update(sql,es.getFlowid(),es.getType(),es.getIdcard(),es.getExamCard(),es.getStudentname(),es.getLocation(),es.getGrade());
    	}
    

      

    5、进行测试

    @Test
    	public void test3(){
    		ExamStudent es = getExamStudentFromConsole();
    		addStudent2(es);
    	}
    

      

  • 相关阅读:
    通联支付相关注意事项
    账号配置vue版本的扫码下单以及对店铺进行装修的步骤
    银盒子扫码下单在线订单开启商品售卖时段使用说明
    ERP承接新后台优惠规则问题
    简易付安装后无法使用
    ASP.NET没有魔法——ASP.NET Identity 的“多重”身份验证代码篇
    ASP.NET没有魔法——ASP.NET Identity 的“多重”身份验证
    ASP.NET没有魔法——ASP.NET MVC 过滤器(Filter)
    ASP.NET没有魔法——ASP.NET Identity与授权
    ASP.NET没有魔法——ASP.NET Identity的加密与解密
  • 原文地址:https://www.cnblogs.com/yangHS/p/10751299.html
Copyright © 2011-2022 走看看