• java第八次作业


    Java第八次作业--数据库编程

    (一)学习总结

    1.用思维导图对本周的学习内容进行总结。

    参考资料: XMind。

    2.通过实验内容中的具体实例说明在执行executeUpdate()方法和executeQuery()方法中使用动态参数时,为什么要使用PreparedStatement接口而不使用Statement,比较使用两种接口的不同之处。
    1,Statement对象执行SQL语句:
    CREATE、DELETE、UPDATE和INSERT等数据定义和更新语句,使用Statement对象的executeUpdate方法执行。
    SELECT等数据查询语句,使用Statement对象的executeQuery 方法执行。
    参数sql是要执行的SQL语句,执行成功返回受影响的行数,执行失败则抛出SQLException异常捕捉。

     Statement stmt = null;
    		ResultSet rs = null;
    		ArrayList<Pet> list = new ArrayList<Pet>();
    		try{
    			conn = JDBCUtils.getConnection(1);
    			stmt = conn.createStatement();
    			String sql = "select no,type,nu,price from pet";
    			rs = stmt.executeQuery(sql);
    			while(rs.next()){
    				Pet thisPet = new Pet();
    				thisPet.SetNo(rs.getString("no"));
    				thisPet.SetType(rs.getString("type"));
    				thisPet.setPrice(rs.getDouble("price"));
    				thisPet.setNu(rs.getString("nu"));
    				list.add(thisPet);				
    			}
        while(rs.next()){
    				Pet thisPet = new Pet();
    				thisPet.SetNo(rs.getString("no"));
    				thisPet.SetType(rs.getString("type"));
    				thisPet.setPrice(rs.getDouble("price"));
    				thisPet.setNu(rs.getString("nu"));
    				list.add(thisPet);				
    			}
    			return list;
    		}catch(Exception e ){
    			e.printStackTrace();
    		}finally{
    			JDBCUtils.close(conn);
    		}
    		return null;
    	}
    

    2,PreparedStatement是Statement的子接口,属于预处理操作。
    使用Connection对象的prepareStatement()方法创建一个preparedStatement对象用于执行SQL语句。
    SQL语句用“?”作为所有动态参数的占位符,先进行预编译,当给占位符所在的变量赋值后,再执行该SQL语句。

    PreparedStatement pstmt = null;	
    boolean result=false;
    try{
    	conn = JDBCUtils.getConnection(1);
    	String sql = "insert into pet (no,type,nu,price) values (?,?,?,?)";
    	pstmt = conn.prepareStatement(sql);
    	pstmt.setString(1, pet.GetNo());
    	pstmt.setString(2,pet.GetType());
    	pstmt.setDouble(3,pet.getPrice());
    	pstmt.setString(4,pet.getNu());
    	int num = pstmt.executeUpdate();
    

    3.其他需要总结的内容。
    1,与MySQL数据库连接的方法:

    Connection con=
    DriverManager.getConnection(“jdbc:mysql://主机IP或主机名:3306/数据库名”,用户名,密码);
    

    与Oracle数据库连接的方法:

    Connection con= 
    DriverManager.getConnection(“jdbc:oracle:thin:@主机IP或主机名:1521:数据库名”,用户名,密码);
    

    与SQLServer数据库连接的方法:

    Connection con=
    DriverManager.getConnection(“jdbc:sqlserver://主机IP或主机名:1433;databaseName=数据库名”,用户名,密码);
    

    2,成功连接到数据库,获得Connection对象后,必须通过Connection对象的createStatement方法来创建语句对象Statement, Statement对象可以执行SQL语句。

            Connection conn = null;
    		Statement stmt = null;
    	    ResultSet rs = null;
    		    ArrayList<Pet> list = new ArrayList<Pet>();
    		    try{
    			conn = JDBCUtils.getConnection(1);
    			stmt = conn.createStatement();
    			String sql = "select no,type,nu,price from pet";
    			rs = stmt.executeQuery(sql);
    

    (二)实验总结
    实验内容:
    使用JDBC实现实验七的宠物商店
    完成实验内容,代码上传到码云,注意,务必将创建数据库的脚本文件随项目文件一起上传,在随笔中分析程序设计思路,用PowerDesigner画出类图结构,并对完成实验内容过程中遇到的问题、解决方案和思考等进行归纳总结,注意代码中必须有必要的注释。

    格式如下:
    程序设计思路
    1.pet类来设置动物基本属性的get()和set()方法。
    2.WelcomeFrame类来设置用户的登录界面,设置构造方法添加组件
    3.AdminDialog类,管理员窗口类,即是设置登录界面成功后里面存放数据,添加删除等操作。
    4.AdminDao类管理员数据访问类来设置管理员对数据的取得删除等操作,

    //添加数据
    	public boolean addPet(Pet pet){
    		Connection conn = null;
    		PreparedStatement pstmt = null;	
    		boolean result=false;
    		try{
    			conn = JDBCUtils.getConnection(1);
    			String sql = "insert into pet (no,type,nu,price) values (?,?,?,?)";
    			pstmt = conn.prepareStatement(sql);
    			pstmt.setString(1, pet.GetNo());
    			pstmt.setString(2,pet.GetType());
    			pstmt.setDouble(3,pet.getPrice());
    			pstmt.setString(4,pet.getNu());
    			int num = pstmt.executeUpdate();
    			if(num > 0){
    				result = true;
    			}			
    		}catch(Exception e ){
    			e.printStackTrace();
    		}finally{
    			JDBCUtils.close(conn);
    		}	
    		return result;
    	}
    

    5.AdminService类就是用户进行添加删除修改操作时要进行的,对用户进行的操作进行判断并执行,如果编号与原有的宠物编号相同则不能进行修改和添加数据。
    6.GUITools类,工具类设置屏幕框架结构。
    7.JDBCUtils类,负责数据库连接和关闭操作以及取得一个数据库的连接对象。
    获取连接对象

    public static Connection getConnection(int connection_type)throws Exception
    {
    	switch (connection_type)
    	{
    		case CONNECTION_SQL:
    			return getConnectionSQL();
    		case CONNECTION_MYSQL:
    			return getConnectionMYSQL();
    	}
    	return null;
    }
    

    连接SQLSERVER数据库

    private static Connection getConnectionSQL()
    	{
    		Connection conn=null;
    		final String DBDRIVER = "com.microsoft.sqlserver.jdbc.SQLServerDriver";
    		final String DBURL = "jdbc:sqlserver://localhost:1433;databaseName=pet";
    		final String DBUSER = "sa";
    		final String DBPASS = "123456";		
    		try {
    			Class.forName(DBDRIVER);
    			conn=DriverManager.getConnection(DBURL,DBUSER,DBPASS);
    		} catch (ClassNotFoundException e) {				
    			e.printStackTrace();
    		} catch (SQLException e) {
    			e.printStackTrace();
    		}		
    		return conn;
    	}	
    

    连接MYSQL数据库

    private static Connection getConnectionMYSQL()
    	{
    		final String DBDRIVER = "com.mysql.jdbc.Driver";
    		final String DBURL = "jdbc:mysql://localhost:3306/pet";
    		final String DBUSER = "sa";
    		final String DBPASS = "123456";
    		Connection conn=null;		
    		try
    		{
    			Class.forName(DBDRIVER); 			
    			conn=DriverManager.getConnection(DBURL,DBUSER,DBPASS);			
    		} catch (ClassNotFoundException e) {				
    			e.printStackTrace();
    		} catch (SQLException e) {
    			e.printStackTrace();
    		}	
    		return conn;
    	}
    

    关闭连接对象

    public static void close(Connection conn)
    {
    	if(conn!=null)
    	{
    		try
    		{
    			conn.close();
    		} catch(SQLException e)
    		{
    			e.printStackTrace();				
    		}
    		conn = null;
    	}
    }	
    

    类图结构:

    三.码云commit历史截图
    上传实验项目代码到码云,在码云项目中选择“统计-commits”,设置搜索时间段,搜索本周提交历史,并截图。

    https://git.oschina.net/hebau_cs15/java-cs02zt06.git

  • 相关阅读:
    了解大数据的特点、来源与数据呈现方式
    作业四 简单四则运算
    阅读《构建之法》1-5章有感
    分布式版本控制系统Git的安装与使用
    第一次作业-准备
    dubbo相关
    SSL相关
    关于serialize和serializearray在JS和JQuery的区别
    Log4j 的日志级别
    关于CSS中display
  • 原文地址:https://www.cnblogs.com/zhaotong189800/p/6875385.html
Copyright © 2020-2023  润新知