Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/179.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 向listview显示数据时发生SQLITE数据库错误_Java_Android_Sqlite_Android Studio_Android Sqlite - Fatal编程技术网

Java 向listview显示数据时发生SQLITE数据库错误

Java 向listview显示数据时发生SQLITE数据库错误,java,android,sqlite,android-studio,android-sqlite,Java,Android,Sqlite,Android Studio,Android Sqlite,我在显示来自sqlite数据库的数据时遇到问题 我的应用程序在运行时停止工作,并且没有显示错误。 请帮帮我 DatabaseHelper.java public class DatabaseHelper extends SQLiteOpenHelper { public static final String DATABASE_NAME = "ExpDatee.db"; public static final String TABLE_NAME = "EXPDATE_TABLE

我在显示来自sqlite数据库的数据时遇到问题 我的应用程序在运行时停止工作,并且没有显示错误。 请帮帮我

DatabaseHelper.java

public class DatabaseHelper extends SQLiteOpenHelper {

    public static final String DATABASE_NAME = "ExpDatee.db";
    public static final String TABLE_NAME = "EXPDATE_TABLE";
    public static final String COL_1 = "PRO_ID";
    public static final String COL_2 = "PRO_NAME";
    public static final String COL_3 = "PRO_EXPDATE";
    public static final String COL_4 = "PRO_DAYTILLEXP";

    /**
     private static final String SQL_CREATE_TABLE_EXPDATE = "CREATE TABLE " + TABLE_NAME + "("
     + PRO_ID + " INTEGER PRIMARY KEY AUTOINCREMENT, "
     + PRO_NAME + " TEXT NOT NULL, "
     + PRO_EXPDATE+ " TEXT NOT NULL, "
     + PRO_DAYTILLEXP + " TEXT NOT NULL, "
     + ");";
     **/

    public DatabaseHelper(Context context) {
        super(context, DATABASE_NAME, null, 1);
        // SQLiteDatabase db = this.getWritableDatabase();

    }

    @Override
    public void onCreate(SQLiteDatabase db) {

        db.execSQL("CREATE TABLE " + TABLE_NAME + "(PRO_ID INTEGER PRIMARY KEY AUTOINCREMENT, " +
                "PRO_NAME TEXT, " +
                "PRO_EXPDATE TEXT," +
                " PRO_DAYTILLEXP TEXT )");
    }

    @Override
    public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {

        db.execSQL("DROP TABLE IF EXISTS "+TABLE_NAME);
        onCreate(db);
    }


    //method to insert data
    public boolean insertData(String PRO_NAME, String PRO_EXPDATE, String PRO_DAYTILLEXP)
    {
        SQLiteDatabase db = this.getWritableDatabase();
        ContentValues contentValues = new ContentValues();
        contentValues.put(COL_2,PRO_NAME);
        contentValues.put(COL_3,PRO_EXPDATE);
        contentValues.put(COL_4,PRO_DAYTILLEXP);

        Log.d(TAG, "ADD DATA : ADDING " + PRO_NAME + " TO " + TABLE_NAME);
        Log.d(TAG, "ADD DATA : ADDING " + PRO_EXPDATE + " TO " + TABLE_NAME);
        Log.d(TAG, "ADD DATA : ADDING " + PRO_DAYTILLEXP + " TO " + TABLE_NAME);

        long result = db.insert(TABLE_NAME,null ,contentValues );
        if (result == -1)
            return false;
        else
            return true;
    }


    //get all data
    public Cursor getData()
    {
        SQLiteDatabase db = this.getWritableDatabase();

        String query = "SELECT * FROM" + TABLE_NAME;
        Cursor data = db.rawQuery(query, null);
        return data;


    }
}
MainActivity.java

public class MainActivity extends AppCompatActivity {

    DatabaseHelper myDB;
    EditText etProductName, etDaysBeforeExp, etExpDate;
    Button btnAddItem, btnViewItem;

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

        myDB = new DatabaseHelper(this);
        etProductName = (EditText)findViewById(R.id.etProductName);
        etDaysBeforeExp = (EditText)findViewById(R.id.etDaysBeforeExp);
        etExpDate = (EditText)findViewById(R.id.etExpDate);
        btnAddItem  = (Button)findViewById(R.id.btnAddItem);
        btnViewItem  = (Button)findViewById(R.id.btnViewItem);

        btnAddItem.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                String PRO_NAME = etProductName.getText().toString();
                String PRO_EXPDATE = etExpDate.getText().toString();
                String PRO_DAYTILLEXP = etDaysBeforeExp.getText().toString();
                if(etProductName.length() !=0)
                {
                    AddData(PRO_NAME,PRO_EXPDATE,PRO_DAYTILLEXP);
                    etProductName.setText("");
                    etExpDate.setText("");
                    etDaysBeforeExp.setText("");
                }
                else
                {
                    toastMessage("PLEASE INSERT VALUE");
                }
            }
        });


        btnViewItem.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                Intent intent = new Intent(MainActivity.this, ListDataActivity.class);
                startActivity(intent);
            }
        });
    }

    public void AddData(String PRO_NAME, String PRO_EXPDATE, String PRO_DAYTILLEXP)
    {
        boolean InsertData = myDB.insertData(PRO_NAME,PRO_EXPDATE,PRO_DAYTILLEXP);
        if(InsertData)
        {
            toastMessage("DATA INSERTED");
        }
        else
        {
            toastMessage("DATA NOT INSERTED");
        }

    }

    private void toastMessage(String message) {
        Toast.makeText(this,message, Toast.LENGTH_LONG).show();
    }

}
public class ListDataActivity extends AppCompatActivity {

    DatabaseHelper myDB;
    private ListView mListView;

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

        populateListView();
    }

    private void populateListView() {

        Cursor data = myDB.getData();
        ArrayList<String> listData = new ArrayList<>();
        while (data.moveToNext())
        {
            listData.add(data.getString(1));
            listData.add(data.getString(2));
            listData.add(data.getString(3));

        }
        ListAdapter adapter = new ArrayAdapter<>(this, android.R.layout.simple_list_item_1, listData);
        mListView.setAdapter(adapter);
    }


    private void toastMessage(String message) {
        Toast.makeText(this,message, Toast.LENGTH_LONG).show();
    }
}
ListDataActivity.java

public class MainActivity extends AppCompatActivity {

    DatabaseHelper myDB;
    EditText etProductName, etDaysBeforeExp, etExpDate;
    Button btnAddItem, btnViewItem;

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

        myDB = new DatabaseHelper(this);
        etProductName = (EditText)findViewById(R.id.etProductName);
        etDaysBeforeExp = (EditText)findViewById(R.id.etDaysBeforeExp);
        etExpDate = (EditText)findViewById(R.id.etExpDate);
        btnAddItem  = (Button)findViewById(R.id.btnAddItem);
        btnViewItem  = (Button)findViewById(R.id.btnViewItem);

        btnAddItem.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                String PRO_NAME = etProductName.getText().toString();
                String PRO_EXPDATE = etExpDate.getText().toString();
                String PRO_DAYTILLEXP = etDaysBeforeExp.getText().toString();
                if(etProductName.length() !=0)
                {
                    AddData(PRO_NAME,PRO_EXPDATE,PRO_DAYTILLEXP);
                    etProductName.setText("");
                    etExpDate.setText("");
                    etDaysBeforeExp.setText("");
                }
                else
                {
                    toastMessage("PLEASE INSERT VALUE");
                }
            }
        });


        btnViewItem.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                Intent intent = new Intent(MainActivity.this, ListDataActivity.class);
                startActivity(intent);
            }
        });
    }

    public void AddData(String PRO_NAME, String PRO_EXPDATE, String PRO_DAYTILLEXP)
    {
        boolean InsertData = myDB.insertData(PRO_NAME,PRO_EXPDATE,PRO_DAYTILLEXP);
        if(InsertData)
        {
            toastMessage("DATA INSERTED");
        }
        else
        {
            toastMessage("DATA NOT INSERTED");
        }

    }

    private void toastMessage(String message) {
        Toast.makeText(this,message, Toast.LENGTH_LONG).show();
    }

}
public class ListDataActivity extends AppCompatActivity {

    DatabaseHelper myDB;
    private ListView mListView;

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

        populateListView();
    }

    private void populateListView() {

        Cursor data = myDB.getData();
        ArrayList<String> listData = new ArrayList<>();
        while (data.moveToNext())
        {
            listData.add(data.getString(1));
            listData.add(data.getString(2));
            listData.add(data.getString(3));

        }
        ListAdapter adapter = new ArrayAdapter<>(this, android.R.layout.simple_list_item_1, listData);
        mListView.setAdapter(adapter);
    }


    private void toastMessage(String message) {
        Toast.makeText(this,message, Toast.LENGTH_LONG).show();
    }
}
初始化的Listdataactivity

使用Arrayadapter

在ListDataActivity类中,myDB从未初始化。请在populateListView方法中使用SimpleCursorAdapter,而不是ArrayAdapterno,不要使用ArrayAdapter,在数据基于光标时使用CursorAdapter,例如SimpleCursorAdapter