zoukankan      html  css  js  c++  java
  • 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

  • 相关阅读:
    HDU 2955 Robberies(01背包)
    HDU 2602 Bone Collector(01背包)
    HUST 1352 Repetitions of Substrings(字符串)
    HUST 1358 Uiwurerirexb jeqvad(模拟解密)
    HUST 1404 Hamming Distance(字符串)
    HDU 4520 小Q系列故事――最佳裁判(STL)
    HDU 2058 The sum problem(枚举)
    【破解】修改程序版权、添加弹窗
    HDU 1407 测试你是否和LTC水平一样高(枚举)
    HDU 1050 Moving Tables(贪心)
  • 原文地址:https://www.cnblogs.com/zhaotong189800/p/6875385.html
Copyright © 2011-2022 走看看