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

原文地址:https://www.cnblogs.com/zhaotong189800/p/6875385.html