你听到了。
我目前是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是如何工作的,什么类是等等。
我不是在寻找可复制粘贴的快捷方式,我需要指导,一些事情要开始。我现在非常沮丧。
答案 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);
}