2016-12-16 4 views
-1

あなたはそれを正しく聞いた。Javaの知識のないJDBC割り当て

私は現在、KU Leuvenの情報管理プログラムの修士課程に在籍しており、データベース管理の任務のために、JDBCを利用するアプリケーションを作成するように求められています。

私はMySQL、MySQL Workbench、Eclipseを問題なくインストールしており、データベースといくつかの種類のテンプレートを提供しています。

割り当ては次のとおりです。

アプリは/彼がやりたい何の顧客に尋ねます。 新しい注文をしたい場合は、オプション「1」を選択します。プログラムは顧客に顧客IDを尋ねます(顧客テーブルから既存の顧客IDを入力するだけです)。次に、プロダクトのリスト(id、> name、category)を出力し、どのプロダクトを注文したいかを顧客に尋ねます。この>リストは、カテゴリ別に商品名順にアルファベット順に並べる必要があります。 >プログラムは、この製品(製品名、レストラン名、評価)の評価が最も高いレストランを出力します。さらに、正しい順序でデータベーステーブルに登録します。

注文された商品カテゴリのリストが少なくとも5回以上表示されたい場合は、オプション2を選択します。食品カテゴリ名のリストと注文数が表示されます。注文数の少ない順にソートされています。

顧客が最も売れた商品のトップ5を見たい場合、オプションは「3」を選択します。このプログラムでは、製品数、製品名、注文数などの5つの製品のリストが表示されます。 これは、ユーザーが '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の仕組みやクラスなどについては全く分かりません。

コピーペースト可能なショートカットを探しているわけではありません。私は今、とてもイライラしています。

+2

あなたは正直な質問をしましたが、スタックオーバーフローのためには広すぎます。 JDBCを設定する際に特定の場所に立ち往生した場合は、より集中的な質問でここに戻ってください。 –

+0

どこかで立ち往生できず、私は "enter"できませんでした。私はドアで立ち往生して、比喩を打ちました。 – Pretended

+0

私はそこにサイトをコードする方法のいくつかを見てみましょう。 – CheeZe5

答えて

2

Javaを書いたことがない人なら、大きな問題があると言えます。

JDBCとリレーショナルデータベースは "Hello World"ではありません。

あなたは修士号を取得しています。あなたはあなたの学士号が何であるかは言いませんが、あなたがプログラムできると仮定しよう。

開始するには、Oracle/SunのJDBC tutorialが最適です。

1つのコメント:あなたが投稿したコードは恐ろしいです。スタイルは貧弱で読みにくいです。私はそのような混乱に失敗した等級を渡した教授に与えたい。

次のような推奨事項があります。大きな問題は、小さな問題に分割すると解決しやすくなります。分解はコンピュータサイエンスの中核的なスキルです。

すべてをメインメソッドに入れないことをお勧めします。独立した操作を別々のメソッドに分解し、独自にコード化してテストすることができます。

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); 
} 
+0

ありがとうございます。 私は経営管理卒業者であり、この修士号より前のコーディングスキルはありません。それが私が非常に非常に不満を感じた理由でした。 あなたに手紙を書いた後、ITのバックグラウンドを持つ若者が手伝いをしてくれました。私たちは2時間で私の仕事を終えました。とにかく入力いただき、ありがとうございます。 – Pretended

+0

あなたは不運になっています。コンピュータサイエンスの修士号で期待を高め、自分が何をしているのか理解していないのは残念です。だまされてはいけません。あなたは2時間後にこの課題を「完了」しているかもしれませんが、あなたはそれをしていません。有能なプログラマーになるためには、光年が必要です。あなたのためにあなたの仕事をしている誰かのために解決しないでください。あなたを助けた若者は少し知っていますが、あなたはしません。バックルを下ろして、物事を正しく行う方法を学んでください。 – duffymo

+0

私は自分自身を「有能な」コーダと見なしたと思っていましたか、その割り当てに全面的に賞賛しました。 – Pretended

関連する問題