【发布时间】:2020-02-17 12:03:34
【问题描述】:
我正在尝试将我的 csv 文件导入 SQLite 并将我导入的文件访问到数据库并从 android studio 访问。你能告诉我我的代码有什么问题吗?我收到此错误消息!
AssetManager android.content.Context.getAssets()' 在空对象引用上
public static final String TABLE_NAME = "the_table";
public static final String COLUMN_ID = "_id";
public static final String COLUMN_QUESTION = "question";
public static final String COLUMN_ANSWER = "answer";
public static final String COLUMN_ANSWER_NR = "answer_nr";
public static final String COLUMN_LEVEL_COMPLETE = "level_complete";
public static final String COLUMN_CURRENT_LEVEL = "current_level";
public static final String COLUMN_CRAZY_LEVEL = "crazy_level";
private SQLiteDatabase db;
Context context;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
importCSVData();
}
public void importCSVData(){
String myCSVFile = "the_table.csv";
AssetManager manager = context.getAssets();
InputStream inStream = null;
try {
inStream = manager.open(myCSVFile);
}catch (IOException e){
e.printStackTrace();
}
BufferedReader buffer = new BufferedReader(new InputStreamReader(inStream));
String line = "";
db.beginTransaction();
try{
while ((line = buffer.readLine()) != null){
String[] columns = line.split(",");
if(columns.length != 6) {
Log.d("CSVParser", "Skipping Bad CSV Row");
continue;
}
ContentValues cv = new ContentValues(6);
cv.put(COLUMN_ID, columns[0].trim());
cv.put(COLUMN_QUESTION, columns[1].trim());
cv.put(COLUMN_ANSWER, columns[2].trim());
cv.put(COLUMN_ANSWER_NR, columns[3].trim());
cv.put(COLUMN_LEVEL_COMPLETE, columns[4].trim());
cv.put(COLUMN_CURRENT_LEVEL, columns[5].trim());
cv.put(COLUMN_CRAZY_LEVEL, columns[6].trim());
db.insert(TABLE_NAME, null, cv);
}
}catch (IOException e){
e.printStackTrace();
}
db.setTransactionSuccessful();
db.endTransaction();
}
【问题讨论】:
标签: android database sqlite csv import