Java 如何识别SQLite数据库列中的一段数据?

Java 如何识别SQLite数据库列中的一段数据?,java,android,sqlite,Java,Android,Sqlite,这是我第一次设置SQLite数据库,我很难弄清楚如何控制光标。假设我的专栏名称是作者,发表年份,标题,按顺序排列。假设我已经在数据库中保存了一些条目,如: 鲍勃,2007,建筑商 杰克,2003,无头骑士 安迪,2012,神秘传说 因此,对于每本书的标题,都有一个带有图书名称的按钮。例如,生成器将位于用户创建的按钮上。然后,用户可以单击此按钮,转到另一个活动页面,并将本书的信息放入其中。例如,它就像一个图书馆,里面有一本新书,名叫《绿蛋和火腿》,由苏斯博士出版,出版时间:1960年。用户浏览我的

这是我第一次设置SQLite数据库,我很难弄清楚如何控制光标。假设我的专栏名称是作者,发表年份,标题,按顺序排列。假设我已经在数据库中保存了一些条目,如:

鲍勃,2007,建筑商 杰克,2003,无头骑士 安迪,2012,神秘传说 因此,对于每本书的标题,都有一个带有图书名称的按钮。例如,生成器将位于用户创建的按钮上。然后,用户可以单击此按钮,转到另一个活动页面,并将本书的信息放入其中。例如,它就像一个图书馆,里面有一本新书,名叫《绿蛋和火腿》,由苏斯博士出版,出版时间:1960年。用户浏览我的应用程序的其他部分,输入这本书的信息,从而将数据作为条目保存到SQLite数据库中,并创建一个带有绿色鸡蛋和火腿的按钮。当用户单击此按钮时,将显示一个包含以下信息的页面:

作者:苏斯博士/ 出版日期: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();
    }