[英]Import csv file to SQLite and access to Android Studio
我正在尝试将我的 csv 文件导入到 SQLite 并将我导入的文件访问到数据库并从 android 工作室访问。 你能告诉我我的代码有什么问题吗? 我收到此错误消息!
AssetManager android.content.Context.getAssets()' 在 null object 参考
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();
}
目前你在一个Activity
里面。 所以,这里不需要使用上下文。 使用如下:
AssetManager manager = getAssets();
代替
AssetManager manager = context.getAssets();
除此之外,您没有在 onCreate 中初始化SQLiteDatabase
。 但是您在importCSVData()
中使用了它,这会导致NullPointerException
。 所以,首先像下面这样初始化:
@Override protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
QuestionDbHelper dbHelper = QuestionDbHelper.getInstance(this);
db = dbHelper.getWritableDatabase();
importCSVData();
}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.