Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/185.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

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/excel/23.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.lang.nullPointerException_Java_Android_Sqlite - Fatal编程技术网

获取用于从现有数据库填充的java.lang.nullPointerException

获取用于从现有数据库填充的java.lang.nullPointerException,java,android,sqlite,Java,Android,Sqlite,我有一个我创建的现有数据库,我想从中获取数据,以便在android中填充listview。现在,我想首先让我的数据库连接起来并工作,看看是否可以从中获取数据。我的数据库名为HealthySizing,其中有一个包含6列的Shirts表。我有一个DBHelper类,一个MainActivity.java和一个activity_main.xml,我在下面发布了这三个文件和我得到的错误,有人能帮我解决吗?有人知道我为什么会出现这个错误,以及如何修复它以从数据库中获取一些数据吗 package com

我有一个我创建的现有数据库,我想从中获取数据,以便在android中填充listview。现在,我想首先让我的数据库连接起来并工作,看看是否可以从中获取数据。我的数据库名为HealthySizing,其中有一个包含6列的Shirts表。我有一个DBHelper类,一个MainActivity.java和一个activity_main.xml,我在下面发布了这三个文件和我得到的错误,有人能帮我解决吗?有人知道我为什么会出现这个错误,以及如何修复它以从数据库中获取一些数据吗

package com.example.ListViewFromSQLiteDB;
导入android.content.Context;
导入android.database.sqlite.SQLiteDatabase;
导入android.database.sqlite.SQLiteException;
导入android.database.sqlite.SQLiteOpenHelper;
导入android.util.Log;
导入java.io.File;
导入java.io.FileOutputStream;
导入java.io.IOException;
导入java.io.InputStream;
导入java.io.OutputStream;
导入java.util.Locale;
公共类DBHelper扩展了SQLiteOpenHelper{
私有静态最终字符串数据库_PATH=“/data/data/com.example.ListViewFromSQLiteDB/databases”;
私有静态最终字符串数据库\u NAME=“HealthySizing.db”;
私有静态最终int模式_版本=1;
公共sqlite数据库dbSqlite;
私有最终上下文myContext;
公共静态字符串tableName=“Shirts”;
公共DBHelper(上下文){
super(上下文、数据库名称、null、模式版本);
this.myContext=上下文;
}
public void onCreate(SQLiteDatabase db){
}
public void onUpgrade(SQLiteDatabase db,int-oldVersion,int-newVersion){
}
公共数据库(){
createDB();
}
私有void createDB(){
布尔值dbExist=DBExists();
如果(!dbExist){
这是.getReadableDatabase();
copyDBFromResource();
}
}
私有布尔值DBExists(){
SQLiteDatabase db=null;
试一试{
字符串databasePath=数据库路径+数据库名称;
db=SQLiteDatabase.openDatabase(databasePath,null,SQLiteDatabase.OPEN\u READWRITE);
db.setLocale(Locale.getDefault());
db.setLockingEnabled(真);
db.setVersion(1);
}catch(sqlitee异常){
Log.e(“SqlHelper”,“未找到数据库”);
}
如果(db!=null){
db.close();
}
返回db!=null?真:假;
}
私有void copyDBFromResource(){
InputStream InputStream=null;
OutputStream outStream=null;
字符串dbFilePath=数据库路径+数据库名称;
试一试{
inputStream=myContext.getAssets().open(数据库名称);
outStream=新的FileOutputStream(dbFilePath);
字节[]缓冲区=新字节[1024];
整数长度;
而((长度=inputStream.read(缓冲区))>0){
输出流写入(缓冲区,0,长度);
}
冲水;
exptream.close();
inputStream.close();
}捕获(IOE异常){
抛出新错误(“从资源文件复制数据库时出现问题”);
}
}
@凌驾
公共同步作废关闭(){
if(dbSqlite!=null){
dbSqlite.close();
}
super.close();
}
}
/*公共类DBHelper扩展了SQLiteOpenHelper{
公共数据库数据库;
公共字符串路径;
公共静态字符串DBName=“HealthySizing”;
公共静态最终int版本='3';
公共静态语境;
公共静态字符串tableName=“Shirts”;
公共DBHelper(上下文){
super(上下文、数据库名、null、版本);
currentContext=上下文;
DBPath=“/data/data/”+context.getPackageName()+“/databases”;
createDatabase();
}
@凌驾
public void onCreate(SQLiteDatabase db){
//TODO自动生成的方法存根
}
@凌驾
public void onUpgrade(SQLiteDatabase db,int-oldVersion,int-newVersion){
//TODO自动生成的方法存根
}
私有void createDatabase(){
布尔值dbExists=checkDbExists();
if(dbExists){
//无所事事
}
}
私有布尔checkDbExists(){
SQLiteDatabase checkDB=null;
试一试{
字符串myPath=DBPath+DBName;
checkDB=SQLiteDatabase.openDatabase(myPath,null,
SQLiteDatabase.OPEN_READONLY);
}catch(sqlitee异常){
//数据库还不存在。
}
if(checkDB!=null){
checkDB.close();
}
return checkDB!=null?true:false;
}
}
*/
package com.example.ListViewFromSQLiteDB;
导入java.util.ArrayList;
导入android.app.ListActivity;
导入android.database.Cursor;
导入android.database.sqlite.SQLiteDatabase;
导入android.database.sqlite.SQLiteException;
导入android.os.Bundle;
导入android.util.Log;
导入android.widget.ArrayAdapter;
导入android.widget.TextView;
公共类MainActivity扩展了ListActivity{
private ArrayList results=new ArrayList();
私有字符串tableName=DBHelper.tableName;
私有sqlitedatabasenewdb;
/**在首次创建活动时调用*/
@凌驾
创建时的公共void(Bundle savedInstanceState){
super.onCreate(savedInstanceState);
openAndQueryDatabase();
displayResultList();
}
私有void显示结果列表(){
TextView tView=新的TextView(此);
//setText(“此数据从数据库中检索,仅4个”+
//“显示结果的百分比”);
getListView().addHeaderView(tView);
setListAdapter(新阵列适配器)(此,
android.R.layout.simple\u list\u item\u 1,结果
} finally { 
    if (newDB != null){
        newDB.execSQL("DELETE FROM " + tableName); 
        newDB.close();
    }
}
finally {
        try {
            if (newDB != null){
                newDB.execSQL("DELETE FROM " + tableName );
            newDB.close();
            }
        } catch (SQLException e) {
            e.printStackTrace();
        }
    }