【问题标题】:Using excel sheet as a database with java使用 excel 表作为 java 的数据库
【发布时间】:2015-12-08 22:24:57
【问题描述】:

有没有一种方法可以比较java中用户的输入

在excel表格中有几个属性值?

我正在尝试读取用户的 6 个输入(症状)并将其与

我的疾病症状excel表中的每个属性值。

疾病症状是这样的:

------------------------------------------------------------------------
disease_id | disease name | symptoms_1     | symptoms_2    | symptoms_3 |..

    1      |  flu         |  fever         |  dry cough    | headache  |
    2      |  diarrhea    |abdominal cramps| abdominal pain| fever     |

------------------------------------------------------------------------

首先,应用程序会询问:

你有没有遇到这些症状,那么它就会显示所有症状_1

下拉列表中的值供用户从中选择。然后它问 以同样的方式处理下一个症状。

例如:如果我从第一个下拉列表中选择发烧(所有值 症状_1),在java中我想将疾病1和疾病2增加20%和

然后当我在第二个下拉列表中选择干咳时(所有值 症状_2),所以疾病_1 将是 40%。

我的问题是这种方式在 java 中使用 excel 作为数据库是可能的吗?

如果不是,请给出解决此问题的想法。

谢谢。

【问题讨论】:

  • 有一个JDBC driver for Excel files,是你要找的吗?
  • 或者直接使用Apache POI读取文件。
  • @Andreas JDBC 驱动程序使用 POI 作为其基础,POI 是一个很棒的工具包,但我们礼貌地说它有一定的学习曲线:)
  • 为什么不能选择数据库,如果要打包成应用程序可以使用嵌入式或内存数据库,我认为使用数据库会更有效
  • 各位能不能详细解释一下。谢谢

标签: java database excel search full-text-search


【解决方案1】:

这是可能的。将 Excel 文件作为数据库,将工作表作为表格,将工作表中的列作为表格的列。

1 - 您需要将 JDBC ODBC 驱动程序添加到您的项目中。

2 - 下面的代码可以帮助您获取下拉列表的来源(用户选择)。它假定您有一个 Excel 文件,其中 sheet1 是您的症状表。 sheet1 有列症状_1、症状_2、...

import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.ResultSet;
import java.sql.Statement;

public class Main {

    public static Connection getConnection() throws Exception {
    String driver = "sun.jdbc.odbc.JdbcOdbcDriver";
    String url = "jdbc:odbc:excelDB";
    String username = "yourName";
    String password = "yourPass";
    Class.forName(driver);
    return DriverManager.getConnection(url, username, password);
}

public static void main(String args[]) throws Exception {
    Connection conn = null;
    Statement stmt = null;
    ResultSet rs = null;

    conn = getConnection();
    stmt = conn.createStatement();
    String excelQuery = "select symptoms_1 from [Sheet1$]";
    rs = stmt.executeQuery(excelQuery);

    while (rs.next()) {
      //Fill the data for your drop-down list
    }

    rs.close();
    stmt.close();
    conn.close();
  }
}

希望对你有帮助。

【讨论】:

  • 这部分要填什么数据? while (rs.next()) { //为你的下拉列表填充数据 }
  • 在 while 循环之前,您创建了一个集合或数组,其中包含要在下拉列表中显示的值。在 while 循环中,您使用 ResultSet 中的值填充该集合。稍后当您创建下拉列表 (ComboBox) 时,您只需将该集合设置为其来源。
猜你喜欢
  • 1970-01-01
  • 2016-08-17
  • 1970-01-01
  • 2010-10-12
  • 1970-01-01
  • 1970-01-01
  • 2016-04-12
  • 2019-02-05
  • 1970-01-01
相关资源
最近更新 更多