没有Java知识的JDBC Assignment

时间:2016-12-16 13:46:21

标签: java mysql sql jdbc

你听到了。

我目前是KU Leuven信息管理课程的硕士生,我们的数据库管理任务,我们被要求编写一个将使用JDBC的应用程序。

我已经安装了MySQL,MySQL Workbench和Eclipse而没有任何问题,我们提供了数据库和一些可以使用的模板。

作业是:

  

该应用程序询问客户他/她想做什么。   如果他/她想要下新订单,他/她选择选项'1'。该程序>询问客户她/他的客户ID(仅从客户表输入现有客户ID>)。接下来,程序输出产品列表(id,>名称,类别),并询问客户他/她想要订购哪种产品。此>列表需要按类别按字母顺序排序,然后按产品名称排序。 >程序然后输出对此>产品(产品名称,餐馆名称和评级)具有最佳评级的餐厅。此外,它在正确的数据库表中注册>顺序。

     

如果客户想要查看已订购的产品类别列表>至少5次,则他/她选择选项'2'。显示食品类别名称列表>以及订单数量,按照>减少的订单数量排序。

     

如果客户希望查看大多数销售产品的前5名,则他/她选择选项>'3'。该程序显示了5个产品的列表,以及订单的数量>(产品ID,产品名称,订单数量),其按照简单的>订单数量排序。   重复此操作直到用户输入“0”。在这种情况下,程序应该>显示消息'END OF SESSION'。

我们提供的示例代码是:

package connectionMySql;

import java.sql.*;
import java.io.*;

public class connectionMySql {

    /**
     * @author X X
     *
     */
    static {
        try {
            /* Type 4 Driver */
            Class.forName("com.mysql.jdbc.Driver");
        } catch (ClassNotFoundException e) {
            System.err.println("Could not load MySql driver.");
            System.err.println(e.getMessage());
            System.exit(1);
        }
    }

    public static void main(String args[]) {
        String uname = null;
        String psswrd = null;
        Integer choice = 1;
        /* Location of the database */
        String host = "jdbc:mysql://localhost/orderdb";
        /* Sample query */
        String query = "SELECT * FROM restaurant";
        /* Reading log-in data (username and password) */
        try {
            BufferedReader br1 = new BufferedReader(new InputStreamReader(System.in));
            System.out.print("Enter your username on MySql: ");
            uname = br1.readLine();
            BufferedReader br2 = new BufferedReader(new InputStreamReader(System.in));
            System.out.print("Enter your password on MySql: ");
            psswrd = br2.readLine();
        } catch (IOException e) {
            System.out.print("Failed to get uname/passwd");
            System.out.println(":" + e.getMessage());
            System.exit(1);
        }
        /* Example of querying a database */
        try {
            /* Connect to MySql database */
            Connection conn = DriverManager.getConnection(host, uname, psswrd);
            System.out.println("Connection established...");
            System.out.println();
            /* Create statement */
            Statement stmt = conn.createStatement();
            /* Execute the query */
            ResultSet rs = stmt.executeQuery(query);
            /* Output */
            System.out.println("This is an example how you query a DBMS.");
            System.out.println();
            System.out.println(query);
            System.out.println("ID // First Name // Last Name");
            System.out.println("------------------------------");
            while (rs.next()) {
                System.out.print(rs.getString(1));
                System.out.print((" // "));
                System.out.print(rs.getString(2));
                System.out.print((" // "));
                System.out.print(rs.getString(3));
                System.out.print((" // "));
                System.out.println(rs.getString(4));
            }
            rs.close();
            stmt.close();
            conn.close();
        } catch (SQLException e) {
            System.out.println("SQL Exception: ");
            System.err.println(e.getMessage());
        }
        /* Example of choice options */
        while (choice != 0) {
            /*Ask for user's choice*/
            try {
                BufferedReader br1 = new BufferedReader(new InputStreamReader(System.in));
                System.out.println();
                System.out.println("This is an example of a choice menu.");
                System.out.println();
                System.out.println("Please choose between the following options:");
                System.out.println(" (1) Add registration");
                System.out.println(" (2) Show popular sessions list");
                System.out.println(" (0) Quit");
                System.out.print("Enter your choice: ");
                choice = Integer.parseInt(br1.readLine());
            } catch (NumberFormatException ex) {
                System.err.println("Not a valid number");
            } catch (IOException e) {
                e.printStackTrace();
            }
            if (choice == 1) {
                /* TODO */
            } else if (choice == 2) {
                /* TODO */
            } else {
                /* TODO */
            }
        }
        System.out.println();
        System.out.println("End of Session");
    }
}

我想学习新事物。这就是为什么我在这里,但是我不是来自IT背景,而且我可以毫无问题地做这一切的假设是不现实的。

如果我需要进行SQL查询(我有点熟悉)或JDBC编码(我根本不知道)来获取我想要的东西,我没有提示。另外,我不知道Java是如何工作的,什么类是等等。

我不是在寻找可复制粘贴的快捷方式,我需要指导,一些事情要开始。我现在非常沮丧。

1 个答案:

答案 0 :(得分:2)

如果你之前从未写过Java,我说你会遇到大问题。

JDBC和关系数据库不是" Hello World"。

你正在攻读硕士学位。你不能说你的本科学位是什么,但我们假设你可以编程。

最好的起点是Oracle / Sun的JDBC tutorial

一条评论:你发布的代码太可怕了。风格很差,很难阅读。我给那些分发了这么糟糕的教授一个不及格的教授。

这里有一个建议:如果你将它们分解成较小的问题,那么大问题就更容易解决了。分解是计算机科学的核心技能。

我建议您不要将所有内容都放在main方法中。将离散操作分解为单独的方法,您可以单独编码和测试。

了解JUnit永远不会太早。如果你编写一个方法,测试它,然后移动到下一个方法,你会发现这个问题要少得多。

关系数据库都做同样的事情:CRUD操作(创建/读取/更新/删除)。您可以从通用接口开始:

package persistence;

public interface DataAccess<K, V> {
    List<V> findAll();
    V find(K key);
    K save(V value);
    void update(K key, V value);
    void delete(K key);
}