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;其中idcategory表的主键。

   4)向表中添加两条记录,其name字段的值分别是:bookhouse

  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();

       }

    }

}

你可能感兴趣的:(java,sql,编程,mysql,jdbc)