当前位置: 首页 > 知识库问答 >
问题:

如何使用Java从文件创建数据库?

赫连睿
2023-03-14

我在使用文本文件创建SQLite数据库时遇到了问题。我应该创建一个成员列表,其中包含以下内容:(成员)号、名字、姓氏、地址和电话号码(如果有的话)。我正在使用方法创建db,但我似乎无法让它正常工作。

文本文件是这样填充的('...'应该意味着列表中还有其他文件):

1;John;Doe;Downing, Virginia;123456
2;Jane;Doe;Obispo 2, California;342532
...
...
14;Rich;Damons;Av.5, NY
...
...

正如你可能看到的,一些成员没有电话号码,我认为这是导致db无法填充的原因。我之所以相信这一点,是因为我试图用所有信息制作自己的列表,这似乎是可行的,但删除电话号码会导致以下错误索引4超出长度4的界限

方法如下:

    private static void createNewTable() throws Exception {
        String url = "jdbc:sqlite:members.db";
        Connection con = DriverManager.getConnection(url);
        Statement stmt = con.createStatement();
        Scanner reader = new Scanner(new File("member_list.txt"));

        String sql = "create table Member(No integer primary key, " +
                "First varchar(50), " +
                "Last varchar(50), " +
                "Address varchar(50), " +
                "Telephone integer);";
        stmt.executeUpdate(sql);

        try (reader) {
            while (reader.hasNextLine()) {
                String[] db = reader.nextLine().split("[;]");
                String fName = db[1], lName = db[2], address = db[3];
                int no = parseInt(db[0]), tel = parseInt(db[4]);
                if (db.length == 5) {
                    sql = "insert into Member values(" + no + ",'" + fName + "','" + lName + "','" + address + "'," + tel + ");";
                    stmt.executeUpdate(sql);
                } else {
                    sql = "insert into Member values(" + no + ",'" + fName + "','" + lName + "','" + address + "'," + null + ");";
                    stmt.executeUpdate(sql);
                }
            }
        }

        con.close();
        out.println("Start: Creates table");
        showMessageDialog(null, "Start: Creates table");
    }

任何帮助都非常感谢!

我试着用所有的信息创建我自己的会员名单,这很有效;我试着创建一个没有电话号码的会员名单,这不起作用。


共有2个答案

岳曦
2023-03-14

对于没有电话号码的成员,拆分结果(db)的长度仅为4,这意味着其最高索引将为3。

int no = parseInt(db[0]), tel = parseInt(db[4]);

尝试访问一个索引,该索引不适用于没有电话号码的成员。考虑将声明<代码> TEL= PARSETIN(DB(4))在处理有电话号码的成员的IF语句中,因为它将只与这些情况相关。

高胜
2023-03-14

对于没有电话号码的条目,字符串长度为4。因此,当您尝试访问db[4]时,会出现ArrayIndexOutofBound异常。

在if条件中初始化tel变量。

 类似资料:
  • 我正在构建一个创建XML文件的简单java程序。我正在构建以下代码: 但如果我尝试启动此代码,我会出现以下错误: 线程“AWT-EventQueue-0”java中出现异常。lang.AbstractMethodError:gnu。xml。dom。DomDocument。com上的getXmlStandalone()Z。太阳组织。阿帕奇。泽兰。内部的xsltc。特拉克斯。DOM2TO。com上的s

  • 问题内容: 我正在使用Codeigniter建立一个多语言的在线站点。我的问题是 如何将数据从数据库传递到Codeigniter语言文件 。到目前为止,我的逻辑是运行查询,该查询将使用translation_key和value填充语言文件。问题在于语言文件不是扩展的CI_class类,现在我不知道如何继续。 您将如何处理该问题?文档没有说明如何在数据库中使用语言类。 问题答案: 您走在正确的轨道上

  • 问题内容: 将XML数据(从网页获得)插入PostgreSQL数据库的最佳方法是什么? 我正在使用Java,需要一些帮助,以找到一种将这些数据读入数据库的好方法。 问题答案: Postgres具有(感谢DanielLyons指出)本机XML支持您可以用来存储表格。但是,如果您想手动切碎XML数据,则有多种可能性可以在数据库中表示XML数据。第一个问题应该是,如果您想要一个非常通用的解决方案,它将能

  • 问题内容: 我有一个名为“ clients”的Sqlite 3和/或MySQL表。 使用python 2.6,如何创建带有标题的名为Clients100914.csv的csv文件?excel方言… Sql execute:select *仅提供表数据,但是我想要带有标题的完整表。 如何创建记录集以获取表头。表头应该直接来自不是用python编写的sql。 这段代码使我无法打开文件,也没有标题。也无

  • 我有2个数据文件: 1个文件是头文件,另一个是数据文件。头文件有2列(Id,标记):头。txt文件 现在我试图创建一个dataFrame Schema头文件:(我必须使用这种方法,因为在实时,有1000列header.txtdata.txt.所以,手动创建1000列的案例类是不可能的。 但是上面的行失败了,无法解决重载方法结构类型。 有人能帮忙吗

  • 最近,我们开始使用Oracle12c数据库,现在我们遇到了文件夹名称中包含特殊字符的问题(例如“š"、”č"、“ot”\“)。虽然创建了文件夹,但没有特殊字符--相反,显示了一些字符组合。例如,使用参数“d:/test/testščé”,创建的文件夹是“testé”。因此,每个特殊字符使用2个字符。 数据库是版本12C(12.1.0.2.0),带有NLS_CHARACTERSET al32utf8