Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/210.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 将jsonData插入SQLite数据库时出现异常_Java_Android_Json_Nullpointerexception_Android Sqlite - Fatal编程技术网

Java 将jsonData插入SQLite数据库时出现异常

Java 将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

如何将json解析的数据插入sqiteDB?我是一名初学者,我已经尽了一切努力,参考了每一篇文章,但是当我试图将数据插入SQLite时,我遇到了一个空指针异常。?有些东西我遗漏了,但我无法找到。需要帮助吗

这是MainActivity.java

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);