2016-11-14 3 views
0

私は現在、楽しいJavaプロジェクト用のボットをコーディングしており、警告システムを作成しています。私が現在持っている問題は、ボットを再起動するたびに入力されたデータが失われるということです。私は今これを働かせようとしている5日間を探しました。助けてください!javaからmysqlデータベースに情報を保存するには

//warn_command 
    if(message.startsWith("!warn") || message.startsWith("!Warn")) { 
     String[] command = message.split(" "); 
     String warn_target = command[1]; 
     String warn_reason = ""; 

     //admin/op_target checker 
     for(String admin: adminList) { 
      if(warn_target.equals(admin)) { 
       target_a_bool = true; 
      } else { 
       target_a_bool = false; 
      } 
     } 
     for(String op: opList) { 
      if(warn_target.equals(op)) { 
       target_o_bool = true; 
      } else { 
       target_o_bool = false; 
      } 
     } 
     //end_admin/op_target checker 

     for(int i = 2; i < command.length; i++) { 
      warn_reason += command[i]; 
      if (i != (command.length - 1)) { 
       warn_reason += " "; 
      } 
     } 
     if(target_a_bool == true) { 
      sendMessage(channel, "This user cannot be warned"); 
      target_a_bool = false; 

     } else if(target_o_bool == true) { 
      if(sender_a_bool == true) { 

       sendMessage(channel, sender + " has warned " + warn_target + " for reason " + warn_reason); 
       warn_list.add("User Warned: " + warn_target + " | Reason Warned: " + warn_reason + " | Warned by: " + sender); 
       sender_a_bool = false; 

      } else { 

       sendMessage(channel, "This user cannot be warned"); 

      } target_o_bool = false; 
     } else { 

      sendMessage(channel, sender + " has warned " + warn_target + " for reason " + warn_reason); 
      warn_list.add("User Warned: " + warn_target + " | Reason Warned: " + warn_reason + " | Warned by: " + sender); 

     } 
    } 
    //end_warn_command 

    //warn_checker 
    if(message.equalsIgnoreCase("!w list")) { 
     for(int i = 0; i < warn_list.size(); i++) { 
      if(i != warn_list.size()) { 
       String warnlist = warn_list.toString(); 
       sendMessage(channel, warnlist); 
      } 

     } 
    } 
    //end_warn_checker` 

    //warn_list_clearer 
    if(message.equalsIgnoreCase("!c warnlist")) { 
     if(sender_a_bool == true) { 
      warn_list.clear(); 
      sendMessage(channel, sender + " has cleared the warn list!"); 
      sender_a_bool = false; 

     } 
    } 
    //end_warn_list_clearer 

すべてのブール値と配列は、ボットのconfig部分であらかじめ定義されています。このコードはすべて機能しています。ボットを再起動するたびに、配列に保存されているすべての情報が削除されます。

EDIT:phpMyAdminで使用しているmysqlデータベースに接続したいと思います。これはすべて可能ですか?

+2

これは、どのような種類のプログラムでも同じです。データはRAMに保存され、プログラムが終了すると終了します。解決方法は、永続ストレージを使用することです。ディスク上のファイル、データベースなど – ADyson

+0

ADysonでは、SQLデータベースの作成方法を手掛かりにしていますか? –

+0

データベースを作成してSQLを使用する方法を示すチュートリアルが文字通り何百もあります。私は自分の試みをミックスに加える必要はないと思う。 P.S.ちょっとした修正:あなたの編集は「phpMyAdmin経由のホスティング」と書いています。それはかなり正確ではありません。 MySQLはあなたのマシン上でサービスとして動作します。 phpMyAdminはデータベースにウィンドウを表示する多くのユーザーインターフェイスの1つです。グラフィックやコマンドラインをベースとした他にも多くのプログラム言語があります。 – ADyson

答えて

0

Data * Streamを使用して値を書き込みおよび読み取ることができます。あなたの変数を表示didntはので、私はサンプル使用します:

boolean[] ab = new boolean[5]; 
    boolean b = false; 

    // write 
    FileOutputStream fos = new FileOutputStream("myconfig.data"); 
    DataOutputStream dso = new DataOutputStream(fos); 
    dso.writeBoolean(b); 
    dso.writeInt(ab.length); 
    for (boolean a: ab) 
    dso.writeBoolean(a); 
    dso.close(); 
    fos.close(); 

    // read 
    FileInputStream fis = new FileInputStream("myconfig.data"); 
    DataInputStream ds = new DataInputStream(fis); 
    b = ds.readBoolean(); 
    int len = ds.readInt(); 
    ab = new boolean[len]; 
    for (int i = 0; i < len; i++) 
    ab[i] = ds.readBoolean(); 
    ds.close(); 
    fis.close(); 
0

をすべてこのコードは、現在機能している、それが配列に格納されているすべての情報が削除されます、私は再起動するだけで毎回 ボットのですか?

ボットプログラムを実行すると、データはプログラム実行中の一時的なメインメモリ(RAM)にのみ保存されます。つまり、配列や変数などのデータが利用可能/到達可能になりますその実行だけのために。

ボットプログラムの複数の実行にアレイ/データを格納するには、データベース(優先)またはファイルシステムのいずれかを使用する必要があります。

まず、hereを参照して、Javaがどのように接続し、JDBC APIを使用してデータベースシステムを利用できるかを調べることができます。

+0

私はcollabeditにこれを投げる場合は必要になります喜んで助けてくれる? –

関連する問題