Java 如何识别SQLite数据库列中的一段数据?
这是我第一次设置SQLite数据库,我很难弄清楚如何控制光标。假设我的专栏名称是作者,发表年份,标题,按顺序排列。假设我已经在数据库中保存了一些条目,如: 鲍勃,2007,建筑商 杰克,2003,无头骑士 安迪,2012,神秘传说 因此,对于每本书的标题,都有一个带有图书名称的按钮。例如,生成器将位于用户创建的按钮上。然后,用户可以单击此按钮,转到另一个活动页面,并将本书的信息放入其中。例如,它就像一个图书馆,里面有一本新书,名叫《绿蛋和火腿》,由苏斯博士出版,出版时间:1960年。用户浏览我的应用程序的其他部分,输入这本书的信息,从而将数据作为条目保存到SQLite数据库中,并创建一个带有绿色鸡蛋和火腿的按钮。当用户单击此按钮时,将显示一个包含以下信息的页面: 作者:苏斯博士/ 出版日期:1960年/ 标题:绿色鸡蛋和火腿 我的问题是,我如何在我的数据库中识别一个标题,如绿鸡蛋和火腿,然后检索它附带的所有其他信息 关于我希望它如何工作的想法:Java 如何识别SQLite数据库列中的一段数据?,java,android,sqlite,Java,Android,Sqlite,这是我第一次设置SQLite数据库,我很难弄清楚如何控制光标。假设我的专栏名称是作者,发表年份,标题,按顺序排列。假设我已经在数据库中保存了一些条目,如: 鲍勃,2007,建筑商 杰克,2003,无头骑士 安迪,2012,神秘传说 因此,对于每本书的标题,都有一个带有图书名称的按钮。例如,生成器将位于用户创建的按钮上。然后,用户可以单击此按钮,转到另一个活动页面,并将本书的信息放入其中。例如,它就像一个图书馆,里面有一本新书,名叫《绿蛋和火腿》,由苏斯博士出版,出版时间:1960年。用户浏览我的
cursor=DataBase.column("title").StringWithId("GreenEggsAndHam").getRowInformation();
String title=cursor.get("title");
int published=cursor.get("yearPublished");
String author=cursor.get("author")
但显然这不是有效的语法
我的数据库代码:
public class DataHandler {
public static final String PRIORITY="priority";
public static final String LEASTHOURS="leastHours";
public static final String LEASTMINUTES="leastMinutes";
public static final String EXACTHOURS="exactHours";
public static final String EXACTMINUTES="exactMinutes";
public static final String SETHOURS="setHours";
public static final String SETMINUTES="setMinutes";
public static final String SETAMPM="setAmPm";
public static final String ACTIVITYNAME="activityName";
public static final String TABLE_NAME="mytable";
public static final String DATA_BASE_NAME="mydatabase";
public static final int DATABASE_VERSION=1;
public static final String TABLE_CREATE="create table mytable(name text not null,email text not null);";
DataBaseHelper dbhelper;
Context ctx;
SQLiteDatabase db;
public DataHandler(Context ctx)
{
this.ctx=ctx;
dbhelper=new DataBaseHelper(ctx);
}
private static class DataBaseHelper extends SQLiteOpenHelper
{
public DataBaseHelper(Context ctx){
super(ctx,DATA_BASE_NAME,null,DATABASE_VERSION);
}
@Override
public void onCreate(SQLiteDatabase db) {
try{
db.execSQL(TABLE_CREATE);
}
catch(RuntimeException e)
{
e.printStackTrace();
}
}
@Override
public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {
db.execSQL("DROP TABLE IF EXISTS mytable");
onCreate(db);
}
}
public DataHandler open()
{
db=dbhelper.getWritableDatabase();
return this;
}
public void close()
{
dbhelper.close();
}
public long insertData(int priority, int leastHours,int leastMinutes,int exactHours,
int exactMinutes,int setHours ,int setMinutes,String setAmPm,String activityName)
{
ContentValues content=new ContentValues();
content.put(PRIORITY, priority);
content.put(LEASTHOURS, leastHours);
content.put(LEASTMINUTES, leastMinutes);
content.put(EXACTHOURS, exactHours);
content.put(EXACTMINUTES, exactMinutes);
content.put(SETHOURS, setHours);
content.put(SETMINUTES, setMinutes);
content.put(SETAMPM, setAmPm);
content.put(ACTIVITYNAME, activityName);
return db.insertOrThrow(TABLE_NAME, null, content);
}
public Cursor returnData()
{
return db.query(TABLE_NAME, new String[]{PRIORITY,LEASTHOURS,LEASTMINUTES,
EXACTHOURS,EXACTMINUTES,SETHOURS,SETMINUTES,SETAMPM,ACTIVITYNAME},
null, null, null, null,null);
}
}您可以使用
然后详细阅读如下内容:
Cursor cursor = dbhandler.getDetailsForBook("Green Eggs and Ham");
String title = cursor.getString(cursor.getColumnIndex("title"));
int published = cursor.getInt(cursor.getColumnIndex("yearPublished"));
String author = cursor.getString(cursor.getColumnIndex("author"));
希望这有帮助。添加一些检查并提高搜索效率 db扩展了SQLiteDatabase类
String title = null;
int published=0;
String author = null;
Cursor cur=db.rawQuery("SELECT * FROM people WHERE title = ?", new String[] {"Green Eggs and Ham"});
if(cur.getCount() > 0){
title = cur.getString(a.getColumnIndex("title"));
published =cur.getInt(a.getColumnIndex("yearPublished"));
author =cur.getString(a.getColumnIndex("author"));
cur.close();
}
那么,如果我想得到第三个条目,考虑到在我想要的前面可能有另外两本书,或者rawQuery可以做到这一点呢?我想是的,不确定。表的名称在FROM之后?而且我了解这狗=空,但是cur.getCount>0是什么意思?
Cursor cursor = dbhandler.getDetailsForBook("Green Eggs and Ham");
String title = cursor.getString(cursor.getColumnIndex("title"));
int published = cursor.getInt(cursor.getColumnIndex("yearPublished"));
String author = cursor.getString(cursor.getColumnIndex("author"));
String title = null;
int published=0;
String author = null;
Cursor cur=db.rawQuery("SELECT * FROM people WHERE title = ?", new String[] {"Green Eggs and Ham"});
if(cur.getCount() > 0){
title = cur.getString(a.getColumnIndex("title"));
published =cur.getInt(a.getColumnIndex("yearPublished"));
author =cur.getString(a.getColumnIndex("author"));
cur.close();
}