我有一个DBHelper
课程来处理SQLite
。在正常活动下,它运作良好。我想学习片段。但现在我无法访问DatabaseHelper
课程。说
Database_TABLE不公开,无法在包外访问。我不知道该怎么做。也许只是将DatabaseHelper
移到碎片包?
我的DatabaseHelper类:
package com.blogspot.rossokam.acharsoz;
import android.content.Context;
import android.database.DatabaseErrorHandler;
import android.database.sqlite.SQLiteDatabase;
import android.database.sqlite.SQLiteOpenHelper;
import android.provider.BaseColumns;
import android.util.Log;
/**
* Created by nagizade on 2/2/16.
*/
public class DatabaseHelper extends SQLiteOpenHelper {
private static final String DATABASE_NAME = "mydatabase.db";
private static final int DATABASE_VERSION = 1;
static final String DATABASE_TABLE = "yourpass";
public static final String SITE_NAME_COLUMN = "site_name";
public static final String LOGIN_COLUMN = "login";
public static final String PASSWORD_COLUMN = "password";
private static final String DATABASE_CREATE_SCRIPT = "create table "
+ DATABASE_TABLE + " (" + BaseColumns._ID
+ " integer primary key autoincrement, " + SITE_NAME_COLUMN
+ " text not null, " + LOGIN_COLUMN + " text, " + PASSWORD_COLUMN
+ " text);";
public DatabaseHelper(Context context) {
super(context, DATABASE_NAME, null, DATABASE_VERSION);
}
public DatabaseHelper(Context context, String name, SQLiteDatabase.CursorFactory factory,
int version) {
super(context, name, factory, version);
}
public DatabaseHelper(Context context, String name, SQLiteDatabase.CursorFactory factory,
int version, DatabaseErrorHandler errorHandler) {
super(context, name, factory, version, errorHandler);
}
@Override
public void onCreate(SQLiteDatabase db) {
db.execSQL(DATABASE_CREATE_SCRIPT);
}
@Override
public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {
// Запишем в журнал
Log.w("SQLite", "Обновляемся с версии " + oldVersion + " на версию " + newVersion);
// Удаляем старую таблицу и создаём новую
db.execSQL("DROP TABLE IF IT EXISTS " + DATABASE_TABLE);
// Создаём новую таблицу
onCreate(db);
}
}
部分来自错误的片段
mDatabaseHelper = new DatabaseHelper(getActivity(), "mydatabase.db", null, 1);
mSqLiteDatabase = mDatabaseHelper.getReadableDatabase();
ListView siyahi = getActivity().;
registerForContextMenu(siyahi);
cursor = mSqLiteDatabase.rawQuery("select * from "+ DatabaseHelper.DATABASE_TABLE, null);
String[] headers = new String[] {DatabaseHelper.SITE_NAME_COLUMN, DatabaseHelper.LOGIN_COLUMN,DatabaseHelper.PASSWORD_COLUMN};
答案 0 :(得分:1)
您无法从定义的包外部访问DATABASE_TABLE
,因为它是internal
(如果没有写入访问修饰符,则默认为internal
)。您需要做的只是将其public
。
更改
static final String DATABASE_TABLE = "yourpass";
到
public static final String DATABASE_TABLE = "yourpass";