水果超市管理系统运用的IDE是eclipse,在这里的话借助了mysql.
侧重点讲jdbc 代码不全。

  1. 任务描述
    结合JDBC技术改写水果超市管理系统本任务做了图形化界面,讲水果超市管理系统结合JDBC技术,连接mysql数据库管理水果信息的形式。
    2.实现思路
    从任务描述中可知要实现任务,需要讲项目与数据库连接,所以我们会做一个数据库表储存水果的信息
    有了数据库环境后需要导入数据库驱动 每次使用需要加载数据库。为了方便代码重写需要建立一个数据库的工具类。
    创建完工具类就可以在项目中使用JDBC对数据库中的数据进行操作。 由原项目中的是使用数据访问类AdminDao对存储类DataBase进行操作,所以只需要修改数据访问类,由于类已经实现了查询,修改和删除的方法。但是方法体所操作的是存储类的集合,在职李只需要讲方法体中的内容改为使用jdbc即可
    那么接下来看看项目目录
    请添加图片描述
    在fruitstore项目的根目录,创建一个名为lib的文件夹,将mysql的驱动包复制到lib文件夹下
    在cn.itcast.fruitstore.tools包中创建一个封装了上述操作的工具类 JDBCUtlis.`
package cn.itcast.fruitstore.tools;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement;
/**
 * 工具类
 */
public class JDBCUtils {
	// 加载驱动,并建立数据库连接
	public static Connection getConnection() throws SQLException,
			ClassNotFoundException {
		Class.forName("com.mysql.jdbc.Driver");
		String url = "jdbc:mysql://localhost:3306/jdbc?characterEncoding=utf8";
		String username = "root";
		String password = "123456";
		Connection conn = DriverManager.getConnection(url, username, password);
		return conn;
	}
	// 关闭数据库连接,释放资源
	public static void release(Statement stmt, Connection conn) {
		if (stmt != null) {
			try {
				stmt.close();
			} catch (SQLException e) {
				e.printStackTrace();
			}
			stmt = null;
		}
		if (conn != null) {
			try {
				conn.close();
			} catch (SQLException e) {
				e.printStackTrace();
			}
			conn = null;
		}
	}
	public static void release(ResultSet rs, Statement stmt, Connection conn) {
		if (rs != null) {
			try {
				rs.close();
			} catch (SQLException e) {
				e.printStackTrace();
			}
			rs = null;
		}
		release(stmt, conn);
	}
}

修改数据访问类AdimnDao中的查询添加 和删除方法,改为jdbc的操作

package cn.itcast.fruitstore.dao;
import java.sql.Connection;
import java.sql.ResultSet;
import java.sql.Statement;
import java.util.ArrayList;
//import cn.itcast.fruitstore.data.DataBase;
import cn.itcast.fruitstore.domain.FruitItem;
import cn.itcast.fruitstore.tools.JDBCUtils;
/*
 * 管理员数据访问类
 */
public class AdminDao {
	/*
	 * 
	//获取所有数据
	public ArrayList<FruitItem> queryAllData() {		
		return DataBase.data;
	}
	//添加数据
	public void addFruitItem(FruitItem fruitItem) {
		DataBase.data.add(fruitItem);
	}
	//删除数据
	public void delFruitItem(String delNumber) {
		//查询集合中数据
		for (int i = 0; i < DataBase.data.size(); i++) {
			FruitItem thisFruitItem = DataBase.data.get(i);
			//如果有水果项的编号与传入编号相同,则从集合中删除
			if(thisFruitItem.getNumber().equals(delNumber)) {
				DataBase.data.remove(i);
			}
		}
	}
  */
//------为了方便读者学习,以上为原来使用集合模拟数据库的方法,以下为连接MySQL数据库后的方法--------------------------------------------	
	// 获取所有数据
	public ArrayList<FruitItem> queryAllData() {
		Connection conn = null;
		Statement stmt = null;
		ResultSet rs = null;
		ArrayList<FruitItem> list = new ArrayList<FruitItem>();
		try {
			// 获得数据的连接
			conn = JDBCUtils.getConnection();
			// 获得Statement对象
			stmt = conn.createStatement();
			// 发送SQL语句
			String sql = "SELECT * FROM fruit";
			rs = stmt.executeQuery(sql);
			// 处理结果集
			while (rs.next()) {
				FruitItem fruitItem = new FruitItem();
				fruitItem.setNumber(rs.getString("number"));
				fruitItem.setName(rs.getString("fruitname"));
				fruitItem.setPrice(rs.getDouble("price"));
				fruitItem.setUnit(rs.getString("unit"));
				list.add(fruitItem);
			}
			return list;
		} catch (Exception e) {
			e.printStackTrace();
		} finally {
			JDBCUtils.release(rs, stmt, conn);
		}
		return null;
	}
	//添加数据
	public void addFruitItem(FruitItem fruitItem) {
		Connection conn = null;
		Statement stmt = null;
		ResultSet rs = null;
		try {
			// 获得数据的连接
			conn = JDBCUtils.getConnection();
			// 获得Statement对象
			stmt = conn.createStatement();
			// 发送SQL语句
			String sql = "INSERT INTO fruit(number,fruitname,price,unit)"
					+ "VALUES(" + fruitItem.getNumber() + ",'" + fruitItem.getName()
					+ "','" + fruitItem.getPrice() + "','" + fruitItem.getUnit()+ "')";
			int num = stmt.executeUpdate(sql);
			if (num > 0) {
				System.out.println("插入数据成功!");
			}
		} catch (Exception e) {
			e.printStackTrace();
		} finally {
			JDBCUtils.release(rs, stmt, conn);
		}	
	}
	//删除数据
	public void delFruitItem(String delNumber) {
		Connection conn = null;
		Statement stmt = null;
		ResultSet rs = null;
		try {
			// 获得数据的连接
			conn = JDBCUtils.getConnection();
			// 获得Statement对象
			stmt = conn.createStatement();
			// 发送SQL语句
			String sql = "DELETE FROM fruit WHERE number=" + delNumber;
			int num = stmt.executeUpdate(sql);
			if (num > 0) {
             System.out.println("删除数据成功!");
			}
		} catch (Exception e) {
			e.printStackTrace();
		} finally {
			JDBCUtils.release(rs, stmt, conn);
		}
	}
}

请添加图片描述
请添加图片描述
这是gui的图形化界面。说实话当我看到插入数据为??的时候有点懵居然错错了。然后自己不断的寻找问题最后发现并不是代码编译的问题,也不是数据库编译的错误,但是他就是错误了。最后发现是数据库驱动没有写编码。
请添加图片描述

请添加图片描述
这两张图呢是数据库的表,可以看出数据还是错的(懒得改了)。
以上就是jdbc的一个修改。

Logo

为开发者提供学习成长、分享交流、生态实践、资源工具等服务,帮助开发者快速成长。

更多推荐