Java 在sqlite android中从表中获取单行
我最近开始学习android,所以我不知道如何处理这个问题。 我想知道如何从数据库中的一个表中获取单行 我阅读并试图像编写示例代码一样编写代码,但当我想编写“获取单行”部分时,我会遇到一些问题 这是我的模型课Java 在sqlite android中从表中获取单行,java,android,database,sqlite,boolean,Java,Android,Database,Sqlite,Boolean,我最近开始学习android,所以我不知道如何处理这个问题。 我想知道如何从数据库中的一个表中获取单行 我阅读并试图像编写示例代码一样编写代码,但当我想编写“获取单行”部分时,我会遇到一些问题 这是我的模型课 public class UserMealUnit { int mealid; boolean breakfast; boolean lunch; float vegetables; public int getMealid() { return mealid; } pu
public class UserMealUnit {
int mealid;
boolean breakfast;
boolean lunch;
float vegetables;
public int getMealid() {
return mealid;
}
public void setMealid(int mealid) {
this.mealid = mealid;
}
public boolean isBreakfast() {
return breakfast;
}
public void setBreakfast(boolean breakfast) {
this.breakfast = breakfast;
}
public boolean isLunch() {
return lunch;
}
public void setLunch(boolean lunch) {
this.lunch = lunch;
}
public float getVegetables() {
return vegetables;
}
public void setVegetables(float vegetables) {
this.vegetables = vegetables;
}
public class UserMealUnit {
int mealid;
int breakfast;
int lunch;
float vegetables;
public int getMealid() {
return mealid;
}
public void setMealid(int mealid) {
this.mealid = mealid;
}
public int getBreakfast() {
return breakfast;
}
public void setBreakfast(int breakfast) {
this.breakfast = breakfast;
}
public int getLunch() {
return lunch;
}
public void setLunch(int lunch) {
this.lunch = lunch;
}
public float getVegetables() {
return vegetables;
}
public void setVegetables(float vegetables) {
this.vegetables = vegetables;
}
}
这是我的数据库适配器代码获取单行
部分
UserMealUnit getusermealunit(int mealid){
SQLiteDatabase myDataBase = null;
myDataBase = openHelper.getWritableDatabase();
Cursor cursor=myDataBase.query(TABLE_USERMEALUNIT, new String[] {TABLE_USERMEALUNIT_ID,
TABLE_USERMEALUNIT_BREAKFAST,
TABLE_USERMEALUNIT_LUNCH,
TABLE_USERMEALUNIT_VEGETABLES,
}, TABLE_USERMEALUNIT_ID + "=?", new String[] { String.valueOf(mealid) },
null, null, null, null);
if (cursor != null)
cursor.moveToFirst();
UserMealUnit mealunit=new UserMealUnit();
return mealunit;
}
我在UserMealUnit-mealunit=newusermealunit()中遇到问题代码>部分,所以我还没有填充它。
正如你们所看到的,我有布尔型,整数型,还有浮点型,在androidhive示例中,所有列类型都是字符串,我无法理解他为什么要将它们解析为整数型,以及我在代码中对这部分做了什么?
这是androidhive中的角色
Contact contact = new Contact(Integer.parseInt(cursor.getString(0)),
cursor.getString(1), cursor.getString(2));
SQLite没有本机布尔数据类型。请注意,您可以存储int值,如0
表示false
和1
表示true
。
像这样试试
public UserMealUnit getusermealunit(int mealid) {
SQLiteDatabase db = this.getReadableDatabase();
String selectQuery = "SELECT * FROM " + TABLE_USERMEALUNIT + " WHERE "
+ TABLE_USERMEALUNIT_ID + " = " + mealid;
Log.d(LOG, selectQuery);
Cursor c = db.rawQuery(selectQuery, null);
if (c != null)
c.moveToFirst();
UserMealUnit mealunit = new UserMealUnit();
mealunit.setMealid(c.getInt(c.getColumnIndex(KEY_ID)));//KEY_ID key for fetching id
mealunit.setBreakfast((c.getInt(c.getColumnIndex(KEY_BREAKFAST))));//KEY_BREAKFAST key for fetching isBreakfast
mealunit.setLunch((c.getInt(c.getColumnIndex(KEY_LUNCH))));//KEY_LUNCH key for fetching isLunch
mealunit.setVegetables((c.getFloat(c.getColumnIndex(KEY_VEGETABLE))));//KEY_VEGETABLE key for fetching vegetables
return mealunit;
}
if(lunch == 1) {
//lunch is int value fetched from db it means true do what ever you want to do
} else {
//it means false do what ever you want to do
}
模型类
public class UserMealUnit {
int mealid;
boolean breakfast;
boolean lunch;
float vegetables;
public int getMealid() {
return mealid;
}
public void setMealid(int mealid) {
this.mealid = mealid;
}
public boolean isBreakfast() {
return breakfast;
}
public void setBreakfast(boolean breakfast) {
this.breakfast = breakfast;
}
public boolean isLunch() {
return lunch;
}
public void setLunch(boolean lunch) {
this.lunch = lunch;
}
public float getVegetables() {
return vegetables;
}
public void setVegetables(float vegetables) {
this.vegetables = vegetables;
}
public class UserMealUnit {
int mealid;
int breakfast;
int lunch;
float vegetables;
public int getMealid() {
return mealid;
}
public void setMealid(int mealid) {
this.mealid = mealid;
}
public int getBreakfast() {
return breakfast;
}
public void setBreakfast(int breakfast) {
this.breakfast = breakfast;
}
public int getLunch() {
return lunch;
}
public void setLunch(int lunch) {
this.lunch = lunch;
}
public float getVegetables() {
return vegetables;
}
public void setVegetables(float vegetables) {
this.vegetables = vegetables;
}
}
用于创建表\u USERMEALUNIT
表的查询
private static final String CREATE_TABLE_USERMEALUNIT = "CREATE TABLE "
+ TABLE_USERMEALUNIT + "(" + KEY_ID + " INTEGER PRIMARY KEY," + KEY_BREAKFAST
+ " INTEGER,"+ KEY_LUNCH + " INTEGER," + KEY_VEGETABLE + " REAL" + ")";
在活动中
检查午餐
或早餐
的值是否等于1
,如下所示
public UserMealUnit getusermealunit(int mealid) {
SQLiteDatabase db = this.getReadableDatabase();
String selectQuery = "SELECT * FROM " + TABLE_USERMEALUNIT + " WHERE "
+ TABLE_USERMEALUNIT_ID + " = " + mealid;
Log.d(LOG, selectQuery);
Cursor c = db.rawQuery(selectQuery, null);
if (c != null)
c.moveToFirst();
UserMealUnit mealunit = new UserMealUnit();
mealunit.setMealid(c.getInt(c.getColumnIndex(KEY_ID)));//KEY_ID key for fetching id
mealunit.setBreakfast((c.getInt(c.getColumnIndex(KEY_BREAKFAST))));//KEY_BREAKFAST key for fetching isBreakfast
mealunit.setLunch((c.getInt(c.getColumnIndex(KEY_LUNCH))));//KEY_LUNCH key for fetching isLunch
mealunit.setVegetables((c.getFloat(c.getColumnIndex(KEY_VEGETABLE))));//KEY_VEGETABLE key for fetching vegetables
return mealunit;
}
if(lunch == 1) {
//lunch is int value fetched from db it means true do what ever you want to do
} else {
//it means false do what ever you want to do
}
嗨,咪咪,光标。getString(0)是键ID,光标。getString(1)是键名称和光标。getString(2)是键ID,在联系人表中没有字段,因为布尔类型,如果我添加它会出错=0mealunit.setBreakfast((c.getInt(c.getColumnIndex(KEY_早餐)))!=0代码>?SQLite数据库中没有布尔类型。相反,我必须将0保存为false,将1保存为true。所以要读取你的值,这里的键是布尔的,但我们有getInt,我用的是getInt类型=0来解决这个问题。@mimi:是的,为表创建表后查询\u USERMEALUNIT
@mimi检查编辑后的答案这就是我想说的让我们来看看。