在android中读取文本文件到数据库

时间:2013-05-03 21:50:01

标签: android

我需要从文本文件中读取数据并将其保存到数据库中。

我已编写此代码,但它给了我一个运行时错误:

FATAL EXCEPTION: main
java.lang.ArrayIndexOutOfBoundsException: length=5; index=5

我的代码是:

public void GetFrom_Text() {

    String []message=null;

    BufferedReader br=null;
    String name1, faculty1, deparment1, officeNumber1, email1, phone1;
    long e;
    try{
        String sCurrentLine = null;

        br =new BufferedReader(new InputStreamReader(getAssets().open("ab.txt")));


        while((sCurrentLine = br.readLine()) != null) {

            if(sCurrentLine != null )
                message=sCurrentLine.split(",");

            faculty1 = message[0];
            deparment1 = message[1];
            name1 = message[2];
            officeNumber1 = message[3];
            phone1 = message[4];
            email1 = message[5];
            e = db2.insertRecord(faculty1, deparment1, name1, officeNumber1, phone1, email1, email1);
        }
    }
    catch (IOException e1) {
        e1.printStackTrace();
    } finally {
        try {
            if (br !=null)br.close();
        } catch (IOException ex) {
            ex.printStackTrace();
        }
    }
}

文本文件中的行包含以下数据:

it,csa,Mohammad Bsoul,it239,4573,mbsoul @ hu.edu.jo

我需要拆分每条记录并将其保存到数据库中 我需要查看数据是否成功保存到datbase

3 个答案:

答案 0 :(得分:1)

文本文件的其中一行不会被拆分为6个元素。这导致异常发生在这一行......

email1=message[5];

...因为没有第5个索引。检查文本文件并确保数据正确无误。

答案 1 :(得分:1)

在拆分之前尝试设置Log.d("Line from file", sCurrentLine),您可以在LogCat中看到要拆分的字符串。我认为你的字符串错过最后一次“,”

答案 2 :(得分:1)

少数事情:

  1. 任何体面的IDE(如Eclipse)都提供了正确格式化代码的方法。在你的代码中,缩进如此偏离,很难阅读。您可以为项目设置“保存操作”以正确格式化。这样,每次点击保存时,代码都会被格式化。
  2. 为什么不能使用调试器并逐步执行代码?在message = sCurrentLine.split(“,”)之后放置一个断点;并查看“表达式”窗口中的消息变量。
  3. 如果查看readLine的代码,它会查看'\ r','\ n'或'\ r \ n'。在您的文本文件中,您确定具有相应的新行字符吗?否则,如果文本文件的最后一行格式不正确,则可能会崩溃
  4. 使用调试器,您应该能够清楚地看到崩溃的位置。你假设它是at-it,csa,Mohammad Bsoul,it239,4573,mbsoul @ hu.edu.jo但是这可能没问题但是在你的代码中如果某个地方有逗号丢失,你仍然可以得到一个ArrayIndexOutOfBounds。
  5. 你能使用调试器吗?如果没有,那么google如何调试并放置断点并查看监视窗口。没有它,你将花费10倍(比喻)时间来调试这些微不足道的问题
  6. 随意给我发消息并将你的文件发给我,这样我就可以看到是否有任何明显缺失。