[問題] 關於APP外存讀檔與輸入SQLite資料庫
大家好
我最近在練習Android的Content Provider時遇到一個問題
我的APP要從手機SDCARD存取檔案(External Storage)存取檔案
也都抓得到file內的資料,也沒亂碼
只是我打算在APP程式選取完該檔案後
進行讀檔的動作
public void readEnglishWordsCSVfile() {
tool.CP_delete();
StringBuilder sb = new StringBuilder();
try {
BufferedReader br = new BufferedReader(new InputStreamReader(
new FileInputStream(tool.getFilepath()) , "UTF-8"));
String data = "";
while ((data = br.readLine()) != null) {
if(String.valueOf(data.charAt(0)).equals("#"))
continue;
String[] sarray = data.split(",");
String DAY = sarray[8];
String WORD = sarray[0];
String WORDCLASS = sarray[2];
String WORDFREQUENCY = sarray[3];
String WORDMEAN = sarray[1];
String WORDSENTENCE = sarray[4];
String KEYWORD = sarray[5];
String TOPICFOCUS = sarray[6];
String PRON = sarray[7];
ContentValues values = new ContentValues();
values.put(CP.DAY, DAY);
values.put(CP.WORD, WORD);
values.put(CP.WORDCLASS, WORDCLASS);
values.put(CP.WORDFREQUENCY, WORDFREQUENCY);
values.put(CP.WORDMEAN, WORDMEAN);
values.put(CP.WORDSENTENCE, WORDSENTENCE);
values.put(CP.KEYWORD, KEYWORD);
values.put(CP.TOPICFOCUS, TOPICFOCUS);
values.put(CP.PRON, PRON);
Uri uri = getContentResolver().insert(CP.CONTENT_URI, values);
Toast.makeText(MainActivity.this, uri.toString(),
Toast.LENGTH_LONG).show()
}
} catch (IOException e) {
e.printStackTrace();
}
content.setText(sb);
}
這是我撰寫的程式碼
while((data=br.readLine()) != null) {
...讀取該行內容,並且insert至資料庫(tool.CP_insert(....))
以下是Content Provider的insert程式碼
@Override
public Uri insert(Uri uri, ContentValues values) {
Log.i(TAG, "insert");
long rowID = db.insert(DatabaseHelper.TABLE_NAME, null, values);
if (rowID > 0) {
Uri _uri = ContentUris.withAppendedId(CONTENT_URI, rowID);
getContext().getContentResolver().notifyChange(_uri, null);
return _uri;
}
throw new SQLException("Failed to add a record into " + uri);
}
執行時會出現Runtime錯誤
ArrayIndexOutOfBoundsException
似乎是資料量過大
所以我將while迴圈內的contentvalues 和下面的insert資料刪除之後就沒異狀
在onCreate進行單筆insert很正常 沒runtime錯誤
tool.CP_insert("1","2","3","4","5","6","7","8","9");
能問各位有什麼方法能解決這些問題呢?
我只希望能將file內的檔案資料送至手機的SQLite
我的作法感覺不太正確 我知道程式有點亂 懇請各位指導 感謝
--
※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 218.164.77.193
※ 文章網址: http://www.ptt.cc/bbs/AndroidDev/M.1396772055.A.989.html
→
04/06 16:15, , 1F
04/06 16:15, 1F
推
04/08 19:42, , 2F
04/08 19:42, 2F
→
04/08 19:42, , 3F
04/08 19:42, 3F
→
04/08 19:42, , 4F
04/08 19:42, 4F
→
05/01 00:50, , 5F
05/01 00:50, 5F
→
05/01 00:51, , 6F
05/01 00:51, 6F
→
05/01 00:51, , 7F
05/01 00:51, 7F
→
05/01 00:51, , 8F
05/01 00:51, 8F