【问题标题】:How to save info from java into a mysql database如何将java中的信息保存到mysql数据库中
【发布时间】:2017-03-28 16:42:59
【问题描述】:

我目前正在为一个有趣的 java 项目编写一个机器人,并且我正在制作一个警告系统。我目前遇到的问题是,每次我重新启动机器人时,输入的数据都会丢失。我已经搜索了 5 天,试图让它工作。请帮忙!

//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

所有布尔值和数组都在机器人的配置部分中预定义。所有这些代码目前都可以正常工作,只是每次我重新启动机器人时,存储在数组中的所有信息都会被删除。

编辑:我希望它连接到我与 phpMyAdmin 一起使用的 mysql 数据库。这有可能吗?

【问题讨论】:

  • 这对于任何类型的任何程序都是一样的。数据存储在 RAM 中,并在程序退出时不复存在。解决方案是使用持久存储,例如磁盘、数据库等上的文件。
  • ADyson,您知道如何制作 SQL 数据库吗?您愿意帮忙吗?
  • 在线上有数百个教程展示了如何创建数据库和使用 SQL。我认为我不需要将自己的尝试添加到组合中。附:只是小的更正:您的编辑说“通过 phpMyAdmin 托管”。这不太准确。 MySQL 在您的机器上作为服务运行。 phpMyAdmin 只是众多用户界面之一,它为您提供了一个进入数据库的窗口。还有很多其他的,基于图形和命令行的,而且任何人都可以用大多数编程语言编写自己的。
  • 阿迪森,感谢您的意见。我在一个用 HTML5 和 php 编码的网站中使用了 MySQL 数据库,它会和那个相似吗?
  • 非常相似。除了您需要使用 Java 的 MySQL 库来向数据库而不是 PHP 提供指令。 SQL 语法和其他一切都是相同的。

标签: java bots irc


【解决方案1】:

您可以使用 Data*Stream 来写入和读取值。由于您没有显示变量,因此我将使用示例:

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

【讨论】:

    【解决方案2】:

    所有这些代码目前都可以正常工作,只是每次我重新启动时 机器人存储在数组中的所有信息都被删除了?

    当您运行机器人程序时,数据将仅存储在程序执行期间临时的主内存 (RAM) 中,即,您的数组、变量等数据仅可用于/可访问一个人跑。

    您需要使用数据库(首选)或文件系统在机器人程序的多次运行中存储您的数组/数据。

    首先,您可以参考here,了解 Java 如何使用JDBC API 连接和使用数据库系统。

    【讨论】:

    • 如果我把它扔进collabedit,你愿意帮忙吗?
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-02-06
    • 2012-10-02
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多