从Android Studio中的两个不同活动访问SQLite数据库
我有三门课,即。saveinSQL(我的数据库类)、Home(我要访问数据库的类)、Create(我创建数据库的类)。我有个问题。我想访问Home类中创建类创建的数据库。有人能帮我吗从Android Studio中的两个不同活动访问SQLite数据库,android,sqlite,Android,Sqlite,我有三门课,即。saveinSQL(我的数据库类)、Home(我要访问数据库的类)、Create(我创建数据库的类)。我有个问题。我想访问Home类中创建类创建的数据库。有人能帮我吗 public class saveinSQL extends SQLiteOpenHelper { private static final int DATABASE_VERSION = 2; private static final String PETITIONS_TABLE_NAME = "P
public class saveinSQL extends SQLiteOpenHelper {
private static final int DATABASE_VERSION = 2;
private static final String PETITIONS_TABLE_NAME = "Petitions";
private static final String DATABASE_NAME = "myDB.db";
public static final String PETITIONS_COLUMN_ID = "id";
public static final String PETITIONS_COLUMN_HEADING = "heading";
public static final String PETITIONS_COLUMN_DESCRIPTION = "description";
public static final String PETITIONS_COLUMN_PEOPLE = "people";
public saveinSQL(Context context) {
super(context, DATABASE_NAME, null, DATABASE_VERSION);
}
@Override
public void onCreate(SQLiteDatabase db) {
db.execSQL(
"create table Petitions" +
"(id integer primary key, heading text, description text, people text)"
);
}
@Override
public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {
db.execSQL("DROP TABLE IF EXISTS Petitions");
onCreate(db);
}
public boolean insertPetition (String heading, String description,String people)
{
SQLiteDatabase db = this.getWritableDatabase();
ContentValues contentValues = new ContentValues();
contentValues.put("heading", heading);
contentValues.put("description", description);
contentValues.put("people", people);
db.insert("Petitions", null, contentValues);
return true;
}
public Cursor getData(int id){
SQLiteDatabase db = this.getReadableDatabase();
Cursor res = db.rawQuery( "select * from Petitions where id="+id+"", null );
return res;
}
public String getHeader(int id){
SQLiteDatabase db = this.getReadableDatabase();
Cursor res = db.rawQuery("select * from Petitions where id=" + id + "", null);
res.moveToFirst();
for(int i = 1; i < id; i++){
res.moveToNext();
}
String header = res.getString(res.getColumnIndex(saveinSQL.PETITIONS_COLUMN_HEADING));
return header;
}
public String getDescription(int id){
SQLiteDatabase db = this.getReadableDatabase();
Cursor res = db.rawQuery("select * from Petitions where id=" + id + "", null);
res.moveToFirst();
for(int i = 1; i < id; i++){
res.moveToNext();
}
String descrip = res.getString(res.getColumnIndex(saveinSQL.PETITIONS_COLUMN_DESCRIPTION));
return descrip;
}
public String getPeople(int id){
SQLiteDatabase db = this.getReadableDatabase();
Cursor res = db.rawQuery("select * from Petitions where id=" + id + "", null);
res.moveToFirst();
for(int i = 1; i < id; i++){
res.moveToNext();
}
String people = res.getString(res.getColumnIndex(saveinSQL.PETITIONS_COLUMN_PEOPLE));
return people;
}
public int numberOfRows(){
SQLiteDatabase db = this.getReadableDatabase();
int numRows = (int) DatabaseUtils.queryNumEntries(db, PETITIONS_TABLE_NAME);
return numRows;
}
public boolean updatePetitiont (Integer id, String heading, String description, String people)
{
SQLiteDatabase db = this.getWritableDatabase();
ContentValues contentValues = new ContentValues();
contentValues.put("heading", heading);
contentValues.put("description", description);
contentValues.put("people", people);
db.update("Petitions", contentValues, "id = ? ", new String[] { Integer.toString(id) } );
return true;
}
public Integer deletePetition (Integer id)
{
SQLiteDatabase db = this.getWritableDatabase();
return db.delete("Petitions",
"id = ? ",
new String[] { Integer.toString(id) });
}
public ArrayList<String> getAllPetitions()
{
ArrayList<String> array_list = new ArrayList<String>();
//hp = new HashMap();
SQLiteDatabase db = this.getReadableDatabase();
Cursor res = db.rawQuery( "select * from Petitions", null );
res.moveToFirst();
while(res.isAfterLast() == false){
array_list.add(res.getString(res.getColumnIndex(PETITIONS_COLUMN_HEADING)));
res.moveToNext();
}
return array_list;
}
}
公共类savensql扩展了SQLiteOpenHelper{
私有静态最终int数据库_VERSION=2;
私有静态最终字符串请求\u表\u NAME=“请求”;
私有静态最终字符串数据库\u NAME=“myDB.db”;
公共静态最终字符串请求\u列\u ID=“ID”;
公共静态最终字符串请求\u列\u HEADING=“HEADING”;
公共静态最终字符串请求\u COLUMN\u DESCRIPTION=“DESCRIPTION”;
public static final String请求\u COLUMN\u PEOPLE=“PEOPLE”;
公共saveinSQL(上下文){
super(上下文、数据库名称、null、数据库版本);
}
@凌驾
public void onCreate(SQLiteDatabase db){
db.execSQL(
“创建表请求”+
(id整数主键、标题文本、说明文本、人物文本)
);
}
@凌驾
public void onUpgrade(SQLiteDatabase db,int-oldVersion,int-newVersion){
db.execSQL(“如果存在请求,则删除表”);
onCreate(db);
}
公共布尔插入请求(字符串标题、字符串描述、字符串人)
{
SQLiteDatabase db=this.getWritableDatabase();
ContentValues ContentValues=新ContentValues();
contentValues.put(“标题”,标题);
contentValues.put(“说明”,说明);
contentValues.put(“人”,people);
db.插入(“请求”,空,内容值);
返回true;
}
公共游标getData(int-id){
SQLiteDatabase db=this.getReadableDatabase();
Cursor res=db.rawQuery(“从请求中选择*,其中id=“+id+”,null);
返回res;
}
公共字符串getHeader(int-id){
SQLiteDatabase db=this.getReadableDatabase();
Cursor res=db.rawQuery(“从请求中选择*,其中id=“+id+”,null);
res.moveToFirst();
for(int i=1;i
在Home类中,必须实例化saveinSQL
的对象,并调用与要执行的活动对应的方法。例如:
saveinSQL mySaveinSQL = new saveinSQL(<context>);
mySaveinSQL.getHeader(id);
saveinSQL mySaveinSQL=new saveinSQL();
getHeader(id);
了解单例模式。