Java 将jsonData插入SQLite数据库时出现异常
如何将json解析的数据插入sqiteDB?我是一名初学者,我已经尽了一切努力,参考了每一篇文章,但是当我试图将数据插入SQLite时,我遇到了一个空指针异常。?有些东西我遗漏了,但我无法找到。需要帮助吗 这是MainActivity.javaJava 将jsonData插入SQLite数据库时出现异常,java,android,json,nullpointerexception,android-sqlite,Java,Android,Json,Nullpointerexception,Android Sqlite,如何将json解析的数据插入sqiteDB?我是一名初学者,我已经尽了一切努力,参考了每一篇文章,但是当我试图将数据插入SQLite时,我遇到了一个空指针异常。?有些东西我遗漏了,但我无法找到。需要帮助吗 这是MainActivity.java public class MainActivity extends AppCompatActivity { private static final String TAG = "MainActivity"; SQLiteDatabase
public class MainActivity extends AppCompatActivity {
private static final String TAG = "MainActivity";
SQLiteDatabase sqLiteDatabase;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
SqliteDBHelper dbHelper = new SqliteDBHelper(this);
Log.d(TAG, "onCreate: Async started");
GetJsonData getJsonData = new GetJsonData();
getJsonData.execute("URL_HERE");
Log.d(TAG, "onCreate: done");
}
}
GetJsonData.java
{
空指针异常
FATAL EXCEPTION: AsyncTask #1
Process: com.poilkar.nehank.chatapplication, PID: 8054
java.lang.RuntimeException: An error occurred while executing doInBackground()
at android.os.AsyncTask$3.done(AsyncTask.java:318)
at java.util.concurrent.FutureTask.finishCompletion(FutureTask.java:354)
at java.util.concurrent.FutureTask.setException(FutureTask.java:223)
at java.util.concurrent.FutureTask.run(FutureTask.java:242)
at android.os.AsyncTask$SerialExecutor$1.run(AsyncTask.java:243)
at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1133)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:607)
at java.lang.Thread.run(Thread.java:761)
Caused by: java.lang.NullPointerException: Attempt to invoke virtual method 'android.database.sqlite.SQLiteDatabase android.content.Context.openOrCreateDatabase(java.lang.String, int, android.database.sqlite.SQLiteDatabase$CursorFactory, android.database.DatabaseErrorHandler)' on a null object reference
at android.database.sqlite.SQLiteOpenHelper.getDatabaseLocked(SQLiteOpenHelper.java:223)
at android.database.sqlite.SQLiteOpenHelper.getWritableDatabase(SQLiteOpenHelper.java:163)
at com.poilkar.nehank.chatapplication.SqliteDBHelper.insertData(SqliteDBHelper.java:59)
at com.poilkar.nehank.chatapplication.GetJsonData.doInBackground(GetJsonData.java:58)
at com.poilkar.nehank.chatapplication.GetJsonData.doInBackground(GetJsonData.java:25)
at android.os.AsyncTask$2.call(AsyncTask.java:304)
at java.util.concurrent.FutureTask.run(FutureTask.java:237)
at android.os.AsyncTask$SerialExecutor$1.run(AsyncTask.java:243)
at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1133)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:607)
at java.lang.Thread.run(Thread.java:761)
公共类GetJsonData扩展异步任务{
语境;
SqliteDBHelper=新的SqliteDBHelper(上下文);
此处传递给SqliteDBHelper
构造函数的context
为空。需要传递有效的context
public class SqliteDBHelper extends SQLiteOpenHelper {
private static final String TAG = "SqliteDBHelper";
public SqliteDBHelper(Context context){
super(context, DATABASE_NAME, null, DATABASE_VERSION);
}
public static final String DATABASE_NAME = "chat.db";
public static final int DATABASE_VERSION = 1;
public static final String CREATE_QUERY = "CREATE TABLE INFO ( message TEXT, role TEXT, timestamp TEXT );";
public static final String DROP_TABLE = "DROP TABLE INFO IF EXISTS";
@Override
public void onCreate(SQLiteDatabase db) {
try{
db.execSQL(CREATE_QUERY);
}catch (SQLException e){
e.printStackTrace();
}
}
@Override
public void onUpgrade(SQLiteDatabase db, int i, int i1) {
try{
db.execSQL(DROP_TABLE);
onCreate(db);
}catch (SQLException e){
e.printStackTrace();
}
}
public void insertData(String messageData, String roleData, String timestampData){
SQLiteDatabase sqLiteDatabase = this.getWritableDatabase();
ContentValues cv = new ContentValues();
cv.put("message",messageData);
cv.put("role",roleData);
cv.put("timestamp",timestampData);
long res = sqLiteDatabase.insert("INFO",null,cv);
}
}
FATAL EXCEPTION: AsyncTask #1
Process: com.poilkar.nehank.chatapplication, PID: 8054
java.lang.RuntimeException: An error occurred while executing doInBackground()
at android.os.AsyncTask$3.done(AsyncTask.java:318)
at java.util.concurrent.FutureTask.finishCompletion(FutureTask.java:354)
at java.util.concurrent.FutureTask.setException(FutureTask.java:223)
at java.util.concurrent.FutureTask.run(FutureTask.java:242)
at android.os.AsyncTask$SerialExecutor$1.run(AsyncTask.java:243)
at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1133)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:607)
at java.lang.Thread.run(Thread.java:761)
Caused by: java.lang.NullPointerException: Attempt to invoke virtual method 'android.database.sqlite.SQLiteDatabase android.content.Context.openOrCreateDatabase(java.lang.String, int, android.database.sqlite.SQLiteDatabase$CursorFactory, android.database.DatabaseErrorHandler)' on a null object reference
at android.database.sqlite.SQLiteOpenHelper.getDatabaseLocked(SQLiteOpenHelper.java:223)
at android.database.sqlite.SQLiteOpenHelper.getWritableDatabase(SQLiteOpenHelper.java:163)
at com.poilkar.nehank.chatapplication.SqliteDBHelper.insertData(SqliteDBHelper.java:59)
at com.poilkar.nehank.chatapplication.GetJsonData.doInBackground(GetJsonData.java:58)
at com.poilkar.nehank.chatapplication.GetJsonData.doInBackground(GetJsonData.java:25)
at android.os.AsyncTask$2.call(AsyncTask.java:304)
at java.util.concurrent.FutureTask.run(FutureTask.java:237)
at android.os.AsyncTask$SerialExecutor$1.run(AsyncTask.java:243)
at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1133)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:607)
at java.lang.Thread.run(Thread.java:761)
public class GetJsonData extends AsyncTask<String, Void, String > {
Context context;
SqliteDBHelper helper = new SqliteDBHelper(context);