读书人

Java编程习题(九)

发布时间: 2012-10-28 09:54:44 作者: rapoo

Java编程练习题(九)

(接Java编程练习题(八))???

?/**

????? * 删除指定ID的商品类别

????? * @param id int 商品类别ID

????? */

???? public static void deleteCategory(int id) {

?????? Connection conn = null;

?????? try {

???????? conn = ConnectionManager.getConnection(); // 获得数据连接

?

???????? // 建立PreparedStatement用于执行SQL操作

???????? PreparedStatement ps = conn.prepareStatement(

?????????? "DELETE FROM CATEGORY WHERE ID=?");

??? ?????ps.setInt(1, id); // 设置第一个占位符的内容

???????? ps.executeUpdate();

???????? ps.close();

?????? } catch (Exception ex) {

???????? ex.printStackTrace();

?????? } finally {

???????? ConnectionManager.closeConnection(conn);

?????? }

???? }

?? }

?

?

1. 编写CategoryManager类,该类通过调用DBCategory类的相关方法完成对商品类别的相关操作,要求对所进行的操作进行逻辑判断,使操作合理、合法时才能完成。

package myshop;

?

?import java.util.Iterator;

?

?import myshop.db.DBCategory;

?

?

?/**

? * 本类用于对商品类别的相关操作。通过访问静态方法进行相关操作

? */

? public abstract class CategoryManager {

??? /** 私有空构造方法。保证本类不能够被实例化 */

??? private CategoryManager() {

??? }

?

?

??? /**

???? * 添加商品类别

???? * @param c Category 需要添加的商品类别。要求已经填充类别的各个属性。

???? */

??? public static void addCategory(Category c) {

????? if (c.getName() == null || c.getName().trim().length() == 0) {

?? ?????// 类别名称是未设置。抛出异常。

??????? throw new IllegalArgumentException(

????????? " Category name is null or empty.");

????? } else {

??????? // 向数据库中保存商品类别

??????? DBCategory.addCategory(c);

????? }

??? }

?

?

??? /**

???? * 获得全部商品分类

???? * @return Iterator 商品分类的迭代器

???? */

??? public static Iterator getAllCategory() {

????? return DBCategory.getAllCategory();

??? }

?

?

??? /**

???? * 修改商品类别的属性。目前只实现了修改名称。

???? * @param c Category 已经填充新属性的商品类别包装类。

???? */

??? public static void updateCategory(Category c) {

????? DBCategory.updateCategory(c);

??? }

?

?

??? /**

???? * 获得指定ID的商品类别对象

???? * @param id int 商品类别ID

???? * @return Category 商品类别对象。如果指定ID的商品类别不存在返回null

???? */

??? public static Category getCategory(int id) {

????? return DBCategory.getCategory(id);

??? }

?

?

??? /**

???? * 删除指定ID的商品类别

???? * @param id int 商品类别ID

???? */

??? public static void deleteCategory(int id) {

????? DBCategory.deleteCategory(id);

??? }

? }

?

?

2? 仔细阅读题目,并按以下说明完成题目要求的所有内容。

要求:

????? ①本题目录下应有名字为1.txt的文本文件:写清建库、使用库、建表、向表中添加记录的所有SQL语句。

????? ②通过JDBC操作MYSQL数据库的应用程序的源代码。

????? ③将MYSQL安装目录C:\Program Files\MySQL\MySQL Server 4.1下的data目录拷贝到本题根目录下。?

?

编写应用程序,通过JDBC实现MySql数据库的以下操作。

? (1)修改MySql密码为111111。

? (2)在命令行启动MySql,创建数据库:my_shop。

? (3)在my_shop数据库中创建表category,该表包含两个字段:整型id,向表中添加记录时,其值自动增加;可变长字符串name,最大字符串长度为200;其中id为category表的主键。

?? (4)向表中添加两条记录,其name字段的值分别是:book,house。

? (5)编写Java应用程序,通过JDBC建立数据库连接,并查询my_shop库中category表中的所有记录,并在命令行显示。

??? 程序中用到的驱动程序包含在:

c:\javasoftware\mysql-connector-java-3.0.15-ga-bin.jar中。

?

?

参考答案:

(1)1.txt文本文件的内容:

?????? 建库:CREATE DATABASE my_shop;

? ???使用库:use my_shop;

???? 建表:

????????? CREATE TABLE CATEGORY(

?????? ???????? ID??????????????? INTEGER???????????? AUTO_INCREMENT,

?????? ???????? NAME????????? VARCHAR(200),

?????? ???????? PRIMARY KEY (ID)

????????? );

???? 添加记录:

???????? insert into category (name) values('book');

???????? insert into category (name) values('house');

(2)源程序:

import? java.sql.*;?

public class Test {???

??? public static void main(String[] args) {??? ???

??????? Connection? conn=null;

??????? try{

??????????? //1. 定义JDBC驱动程序??????????

??????????? String driverName = "org.gjt.mm.mysql.Driver";//MySQL 驱动程序名

??????????? Class.forName(driverName);???????????

??????????? //2.建立连接?

??????????? String serverName = "localhost"; // 数据库主机名称

??????????? String mydatabase = "my_shop"; // 数据库名称??

??????????? String url = "jdbc:mysql://" + serverName + "/" +

?????????????????? mydatabase + "?useUnicode=true&characterEncoding=GBK";

??????????? String username = "root"; // 连接用户名

??????????? String password = "111111"; // 连接密码???????????

??????????? conn = DriverManager.getConnection(url, username,password);

??????????? //3.查询

??????????? String? sqlString = "SELECT? *? FROM CATEGORY " ;?????????

??????????? Statement? stm = conn.createStatement();?????????

??????????? ResultSet rs = stm.executeQuery (sqlString) ;?????

??????????? while ( rs.next () ) {?????????

??????????????? System.out.print(rs.getInt(1)+"\t"); // 获得SQL命令中的第一个字段内容

??????????????? System.out.println(rs.getString(2)); // 获得SQL命令中的第二个字段内容

??????????? }

??????????? stm.close();???????????

??????? }

?????? catch (ClassNotFoundException e) {

????? ????? // 不能够找到所需类

????? ????? e.printStackTrace();

?????? }

?????? catch (SQLException e) {

????? ????? // 获得数据库连接发生异常

????? ????? e.printStackTrace();

?????? }

??? }

}

读书人网 >编程

热点推荐