Java 字符串继续调用NullPointerException,不确定它在哪里';他是从哪里得到的

Java 字符串继续调用NullPointerException,不确定它在哪里';他是从哪里得到的,java,android,sqlite,nullpointerexception,Java,Android,Sqlite,Nullpointerexception,当我第一次运行应用程序时遇到这个问题时,我正在遵循一个实现SQLite数据库的教程 java.lang.NullPointerException: Attempt to invoke virtual method 'java.lang.String com.example.montymason.sqlitedatabaseproject.MyDBHandler.databaseToString()' on a null object reference 我不确定这个空指针引用来自哪里。下面是我

当我第一次运行应用程序时遇到这个问题时,我正在遵循一个实现SQLite数据库的教程

java.lang.NullPointerException: Attempt to invoke virtual method 'java.lang.String com.example.montymason.sqlitedatabaseproject.MyDBHandler.databaseToString()' on a null object reference
我不确定这个空指针引用来自哪里。下面是我在数据库处理程序类中调用的主要活动和函数的代码

我们将非常感谢您对解决方案的任何帮助

主活动显示功能代码:

import android.content.Intent;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.view.View;
import android.widget.TextView;

public class MainActivity extends AppCompatActivity {
// Database Helper
MyDBHandler db;

// TextView
TextView database_contents;

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);

    displayItems();
}

// New entry button.
public void addNewItem_butt(View v){
    Intent addnewItem = new Intent(MainActivity.this, addItem.class);
    startActivity(addnewItem);
}

public void displayItems(){
    String dbItems;
    dbItems = db.databaseToString();

    if(dbItems != null){
        database_contents.setText(dbItems);
    }
    else{
        database_contents.setText("No items to display.");
    }
}}
将结果返回到主活动的数据库处理程序类的代码:

public String databaseToString(){
    String displayItem = "";

    SQLiteDatabase db = getWritableDatabase();
    String query = "SELECT * FROM " + TABLE_NAME + "WHERE 1";

    // Cursor
    Cursor readDB = db.rawQuery(query, null);

    readDB.moveToFirst();

    while(!readDB.isAfterLast()){
        if(readDB.getString(readDB.getColumnIndex("productname")) != null){
            displayItem += "Product Name - " + readDB.getString(readDB.getColumnIndex("productname")) +
                    "\nProduct Color - " + readDB.getString(readDB.getColumnIndex("productcolor"));

            displayItem += "\n";
        }
        else{
            displayItem += "No items to display.";
        }
    }
    db.close();
    return displayItem;
}

问题就在眼前

dbItems = db.databaseToString();
确保您正在数据库中提取数据

如果有可能为空,请使用空检查器将其包装起来

if (db != null){
    dbItems = db.databaseToString();
    //then all your related code
}

问题是db是空的。请张贴您的主要活动的其余部分,以便我们可以help@YawAsare,我已经添加了完整的主活动代码。非常感谢!成功了。我想我的大脑已经被不停的编程弄得精疲力竭了。接受你的回答是正确的。