【发布时间】:2016-02-23 12:38:39
【问题描述】:
我有一个 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};
【问题讨论】:
-
请贴出你的片段代码和
DatabaseHelper -
将变量公开,现在是内部变量。
标签: android sqlite android-fragments