Java 在android上从SQLite检索数据
我正在尝试使用三个参数,id、name和date从android中的SQLite读取数据。例如,id=“number”和name=“something”以及介于(“第一个日期”、“第二个日期”)之间的日期。问题是,我不知道如何处理最后一个函数。还有两个参数,我不知道该怎么做,也不知道该放在哪里。那么,是否有人有任何经验和熟悉这种代码风格,可以分享或帮助我?(我也从书中获取了这段代码,书中根本没有任何与此相关的解决方案。)Java 在android上从SQLite检索数据,java,android,database,sqlite,Java,Android,Database,Sqlite,我正在尝试使用三个参数,id、name和date从android中的SQLite读取数据。例如,id=“number”和name=“something”以及介于(“第一个日期”、“第二个日期”)之间的日期。问题是,我不知道如何处理最后一个函数。还有两个参数,我不知道该怎么做,也不知道该放在哪里。那么,是否有人有任何经验和熟悉这种代码风格,可以分享或帮助我?(我也从书中获取了这段代码,书中根本没有任何与此相关的解决方案。) 对于android sqlite数据库操作,您可以简单地使用android
对于android sqlite数据库操作,您可以简单地使用android提供的SQLiteOpenHelper类 这是使用SQLiteOpenHelper的案例的完整实现
import android.content.ContentValues;
import android.content.Context;
import android.database.Cursor;
import android.database.sqlite.SQLiteDatabase;
import android.database.sqlite.SQLiteOpenHelper;
import java.util.ArrayList;
import java.util.List;
public class DatabaseHandler2 extends SQLiteOpenHelper {
// Database details
private static final int DATABASE_VERSION = 1;
private static String DATABASE_NAME = "dbname.db";
// Table names
private static String TABLE_PERSON = "person";
// Table Columns name
private static final String COLUMN_ID = "workout_id";
private static final String COLUMN_NAME = "exercise_id";
// Create queries
private static final String CREATE_TABLE_PERSON = "CREATE TABLE " + TABLE_PERSON + "(" + COLUMN_ID + " INTEGER PRIMARY KEY AUTOINCREMENT, " + COLUMN_NAME + " TEXT NOT NULL)";
public DatabaseHandler2(Context context) {
super(context, DATABASE_NAME, null, DATABASE_VERSION);
}
@Override
public void onCreate(SQLiteDatabase db) {
db.execSQL(CREATE_TABLE_PERSON);
}
@Override
public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {
db.execSQL("DROP TABLE IF EXISTS " + CREATE_TABLE_PERSON);
}
public Person getPerson(int id) {
Person person = new Person();
String selectQuery = "SELECT * FROM " + TABLE_PERSON + " WHERE " + COLUMN_ID + "=" + id;
SQLiteDatabase rdb;
rdb = this.getReadableDatabase();
Cursor cursor = rdb.rawQuery(selectQuery, null);
if (cursor.moveToFirst()) {
do {
person.setId(cursor.getInt(0));
person.setName(cursor.getString(1));
} while (cursor.moveToNext());
}
cursor.close();
rdb.close();
return person;
}
public List<Person> getAllPersons() {
List<Person> personList = new ArrayList<Person>();
String selectQuery = "SELECT * FROM " + TABLE_PERSON;
SQLiteDatabase rdb;
rdb = this.getReadableDatabase();
Cursor cursor = rdb.rawQuery(selectQuery, null);
if (cursor.moveToFirst()) {
do {
Person person = new Person();
person.setId(cursor.getInt(0));
person.setName(cursor.getString(1));
personList.add(person);
} while (cursor.moveToNext());
}
cursor.close();
rdb.close();
return personList;
}
public void savePerson(Person person) {
SQLiteDatabase wdb;
ContentValues values = new ContentValues();
values.put(COLUMN_ID, person.getId());
values.put(COLUMN_NAME, person.getName());
wdb = this.getWritableDatabase();
long rowId = wdb.insert(TABLE_PERSON, null, values);
wdb.close();
}
public void deletePerson(int id) {
SQLiteDatabase db = this.getWritableDatabase();
db.delete(TABLE_PERSON, COLUMN_ID + "='" + id + "'", null);
db.close();
}
public boolean renamePerson(int id, String newName) {
SQLiteDatabase db = this.getWritableDatabase();
ContentValues values = new ContentValues();
values.put(COLUMN_NAME, newName);
int numOfRowsEffected = db.update(TABLE_PERSON, values, COLUMN_ID + "='" + id + "'", null);
db.close();
return numOfRowsEffected > 0 ? true : false;
}
}
您有三个参数标记(
?
),因此必须为其指定三个参数:
cursor = queryPersons(
...,
new String[] { id.toString(), name, date }
);
你指的是哪种方法?你的意思是
mDatabase.query(…)
?@abdulhamidhaiban mDatabase是SQLiteDatabase类的一个瞬间。我也不太明白。我在书中找到的。我们不知道你指的是哪本书,所以我不知道你为什么要提到它it@dra,实际上,我的问题只是关于getPerson函数。首先,它必须使用条件进行查询。例如,name=“something”和id=“number”。第二,我可以有另一个替代解决方案,而不使用类似SQLiteDatabase.execute(“命令”)的东西,但遵循类似于上一个函数的东西吗?谢谢你的帮助。我的答案有一个getPerson()函数
private int id;
private String name;
public Person() {
}
public Person(int id, String name) {
this.id = id;
this.name = name;
}
public int getId() {
return id;
}
public void setId(int id) {
this.id = id;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
}
cursor = queryPersons(
...,
new String[] { id.toString(), name, date }
);