Как получить данные из базы данных в Android Создание базы данных на SqliteBrowser - PullRequest
1 голос
/ 17 октября 2011

У меня есть jokes.db база данных. Этот файл базы данных импортирован из этой статьи. http://www.reigndesign.com/blog/using-your-own-sqlite-database-in-android-applications/. Теперь у меня есть Jokes.db в / data / data / a.b.c / database / Jokes.db . В этой базе данных у меня есть две таблицы NepaliJokes и EnglishJokes . Итак, теперь я хочу получить этот непальский и английский анекдоты и отобразить их в текстовом представлении, но я сделал следующий код, но не смог понять, как извлечь данные из базы данных.

public class FunnyJokes extends Activity implements View.OnClickListener {
private SQLiteDatabase database;

@Override
protected void onCreate(Bundle savedInstanceState) {
    Button back;
    super.onCreate(savedInstanceState);
    setContentView(R.layout.displayjoks1);

    back = (Button) findViewById(R.id.back_btn);
    back.setOnClickListener(this);

    DataBaseHelper helper = new DataBaseHelper(this);
    database = helper.getWritableDatabase();
    loadJokes();
}

private void loadJokes() {
     //jok=new ArrayList<String>();
      /*Cursor c = database.query("SELECT title,body" +
                                             " FROM " + 'tableName'
                                             + " WHERE category=1;",
                                             null);*/
     Cursor c = database.query("NepaliJokes", 
                null, null, null, null, null, null);

 c.moveToPosition(0);
 TextView tv= (TextView) findViewById(R.id.textView1);
 tv.append(c.getString(1));
 c.close();
}

@Override
public void onClick(View v) {
    switch (v.getId()) {
    case R.id.back_btn:
        FunnyJokes.this.finish();
        break;

    default:
        break;
    }

}
}

Я также использую импорт файла базы данных из DDMS-> fileExploer. Я импортирую файл базы данных. Вытяните значок мобильного устройства слева от раздела проводника.

Ответы [ 3 ]

2 голосов
/ 17 октября 2011

Для чтения значений из таблицы:

  1. Создание курсора для чтения данных из базы данных.

    Запись следующей функции.

    public Cursor retrieveRecords(int category)
    {
      Cursor c = null;
      c = db.rawQuery("select title,body from tablename where category=" +category, null);
     return c;
    }
    
  2. Теперь получите значения из курсора.

    public void getDataFromDatabase()
    {
        try
        {
            Cursor cursor = null;
            db.OpenDatabase();
            cursor = db.retrieveRecords();
            if (cursor.getCount() != 0)
            {
                if (cursor.moveToFirst())
                {
                    do
                    {
                        titleArrayList.add(cursor.getString(cursor.getColumnIndex("title")));
                        bodyArrayList.add(cursor.getString(cursor.getColumnIndex("body")));
                    } while (cursor.moveToNext());
                }
                db.closeDatabase();
            }
            cursor.close();
        }
        catch(Exception e)
        {
            e.printStackTrace();
        }
    }
    
1 голос
/ 17 октября 2011

Прежде всего, не используйте tv.append, вместо этого используйте setText, потому что если вы используете append, то ваша следующая шутка будет добавлена ​​к предыдущей, а textView покажет шутки, когда вы нажимаете кнопку

На самом деле ответ достаточно длинный, поэтому Я написал ответ в своем блоге, пожалуйста, смотрите ссылку, код будет делать именно то, что вы хотите, но я только что создал одну таблицу, вы можете добавить больше таблицы аналогичным образом.

Вы можете посетить ЗДЕСЬ

1 голос
/ 17 октября 2011

Я использую следующий класс для управления базой данных в моем приложении.

public class PersonDbHelper {
public class Row_DocumentTable extends Object {
    public int rwo_id;
    public String dockey;
    public String docid;
    public String size;
    public String status;
    public String name;
    public String product_discription;
    public String type;
    public String publisher;
    public String version;
    public String filepathurl;
    public String basepage;
    public String copypaste;
    public String save;
    public String print;
    public String printablepage;
    public String nonprintablepage;
    public String search;
    public String watermarkimageurl;
    public String expiry;
    public String versiondescription;
    public String update_available;
    public String localfilepath;
}

public class Row_CategoriesTable extends Object {

    public String dockey;
    public String category_id;
    public String category_name;

}

private static final String DROP_DOCUMENTDETAIL_TABLE_FROM_DATABASE = "drop table if exists CONTENTRAVENDB.DOCUMENTDETAIL";
private static final String DROP_CATEGORIES_TABLE_FROM_DATABASE = "drop table if exists CONTENTRAVENDB.CATEGORIES";

private static final String DATABASE_CREATE_DOCUMENTDETAIL = "create table DOCUMENTDETAIL(row_id integer primary key autoincrement, dockey text , "
        + "docid text not null,"
        + "size text not null,"
        + "status text not null,"
        + "name text not null,"
        + "product_discription text not null,"
        + "type text not null,"
        + "publisher text not null,"
        + "version text not null,"
        + "filepathurl text not null,"
        + "basepage text not null,"
        + "copypaste text not null,"
        + "save text not null,"
        + "print text not null,"
        + "printablepage text not null,"
        + "nonprintablepage text not null,"
        + "search text ,"
        + "watermarkimageurl text not null,"
        + "expiry text not null,"
        + "versiondescription text not null,"
        + "update_available text not null,"
        + "localfilepath text not null"
        + ");";

private static final String DATABASE_CREATE_CATEGORIES = "create table CATEGORIES(_id integer primary key autoincrement, "
        + "dockey text ,"
        + "category_id text ,"
        + "category_name text"
        + ");";

private static final String DATABASE_NAME = "CONTENTRAVENDB";

private static final String DATABASE_TABLE1 = "CATEGORIES";
private static final String DATABASE_TABLE2 = "DOCUMENTDETAIL";

private static final int DATABASE_VERSION = 1;

private SQLiteDatabase db;

public PersonDbHelper(Context ctx) {

    db = ctx.openOrCreateDatabase(DATABASE_NAME, DATABASE_VERSION, null);
    db.execSQL(DATABASE_CREATE_DOCUMENTDETAIL);
    db.execSQL(DATABASE_CREATE_CATEGORIES);
}

public void dropAllTable(Context ctx) {

    db = ctx.openOrCreateDatabase(DATABASE_NAME, DATABASE_VERSION, null);
    // db.execSQL(DROP_DOCUMENTDETAIL_TABLE_FROM_DATABASE);
    // db.execSQL(DROP_CATEGORIES_TABLE_FROM_DATABASE);
    db.delete(DATABASE_TABLE1, null, null);
    db.delete(DATABASE_TABLE2, null, null);
    close();
}

public PersonDbHelper(Context ctx, String abc) {

    db = ctx.openOrCreateDatabase(DATABASE_NAME, DATABASE_VERSION, null);
}

public PersonDbHelper() {
}

public void close() {
    db.close();
}

public void createRow_InDocumentDetailTable(String dockey, String docid,
        String size, String status, String name,
        String product_discription, String type, String publisher,
        String version, String filepathurl, String basepage,
        String copypaste, String save, String print, String printablepage,
        String nonprintablepage, String search, String watermarkimageurl,
        String expiry, String versiondescription, String update_available,
        String localfilepath) {
    ContentValues initialValues = new ContentValues();
    initialValues.put("dockey", dockey);
    initialValues.put("docid", docid);
    initialValues.put("size", size);
    initialValues.put("status", status);
    initialValues.put("name", name);
    initialValues.put("product_discription", product_discription);
    initialValues.put("type", type);
    initialValues.put("publisher", publisher);
    initialValues.put("version", version);
    initialValues.put("filepathurl", filepathurl);
    initialValues.put("basepage", basepage);
    initialValues.put("copypaste", copypaste);
    initialValues.put("save", save);
    initialValues.put("print", print);
    initialValues.put("printablepage", printablepage);
    initialValues.put("nonprintablepage", nonprintablepage);
    initialValues.put("search", search);
    initialValues.put("watermarkimageurl", watermarkimageurl);
    initialValues.put("expiry", expiry);
    initialValues.put("versiondescription", versiondescription);
    initialValues.put("update_available", update_available);
    initialValues.put("localfilepath", localfilepath);
    db.insert(DATABASE_TABLE2, null, initialValues);
}

public void createRow_InCategorieTable(String dockey, String category_id,
        String category_name) {
    ContentValues initialValues = new ContentValues();
    initialValues.put("dockey", dockey);
    initialValues.put("category_id", category_id);
    initialValues.put("category_name", category_name);

    db.insert(DATABASE_TABLE1, null, initialValues);
}

public void deleteRow_FromDocumentDetailTable(long rowId) {
    db.delete(DATABASE_TABLE2, "_id=" + rowId, null);
}

public List<Row_DocumentTable> fetchAllRows_FromDocumentDetailTable() {
    ArrayList<Row_DocumentTable> ret = new ArrayList<Row_DocumentTable>();
    try {

        String sql = "select * from DOCUMENTDETAIL";

        Cursor c = db.rawQuery(sql, null);

        // Cursor c =
        // db.query(DATABASE_TABLE2, new String[] {
        // "row_id","dockey","docid","size", "status", "name",
        // "product_discription",
        // "type", "publisher", "version", "filepathurl", "basepage"
        // , "copypaste", "save", "print", "printablepage",
        // "nonprintablepage"
        // , "search", "watermarkimageurl", "expiry",
        // "versiondescription","update_available","localfilepath"
        // }, null, null, null, null, null);
        int numRows = c.getCount();
        c.moveToFirst();
        for (int i = 0; i < numRows; ++i) {
            Row_DocumentTable row = new Row_DocumentTable();
            row.rwo_id = c.getInt(0);
            row.dockey = c.getString(1);
            row.docid = c.getString(2);
            row.size = c.getString(3);
            row.status = c.getString(4);
            row.name = c.getString(5);
            row.product_discription = c.getString(6);
            row.type = c.getString(7);
            row.publisher = c.getString(8);
            row.version = c.getString(9);
            row.filepathurl = c.getString(10);
            row.basepage = c.getString(11);
            row.copypaste = c.getString(12);
            row.save = c.getString(13);
            row.print = c.getString(14);
            row.printablepage = c.getString(15);
            row.nonprintablepage = c.getString(16);
            row.search = c.getString(17);
            row.watermarkimageurl = c.getString(18);
            row.expiry = c.getString(19);
            row.versiondescription = c.getString(20);
            row.update_available = c.getString(21);
            row.localfilepath = c.getString(22);
            ret.add(row);
            c.moveToNext();
        }
    } catch (SQLException e) {
        Log.e("Exception on query", e.toString());
    }
    return ret;
}

public List<Row_DocumentTable> fetchAllRows_Of_Single_Type(String argtype) {
    ArrayList<Row_DocumentTable> ret = new ArrayList<Row_DocumentTable>();
    try {
        String sql = "select * from DOCUMENTDETAIL where type='" + argtype
                + "'";

        Cursor c = db.rawQuery(sql, null);
        // Cursor c=db.query(DATABASE_TABLE2, new String[] {
        // "dockey","docid", "status", "name", "product_discription",
        // "type", "publisher", "version", "filepathurl", "basepage"
        // , "copypaste", "save", "print", "printablepage",
        // "nonprintablepage"
        // , "search", "watermarkimageurl", "expiry", "versiondescription"
        // }, "type=PDF", null, null, null, null);
        int numRows = c.getCount();
        c.moveToFirst();
        for (int i = 0; i < numRows; ++i) {
            Row_DocumentTable row = new Row_DocumentTable();
            row.rwo_id = c.getInt(0);
            row.dockey = c.getString(1);
            row.docid = c.getString(2);
            row.size = c.getString(3);
            row.status = c.getString(4);
            row.name = c.getString(5);
            row.product_discription = c.getString(6);
            row.type = c.getString(7);
            row.publisher = c.getString(8);
            row.version = c.getString(9);
            row.filepathurl = c.getString(10);
            row.basepage = c.getString(11);
            row.copypaste = c.getString(12);
            row.save = c.getString(13);
            row.print = c.getString(14);
            row.printablepage = c.getString(15);
            row.nonprintablepage = c.getString(16);
            row.search = c.getString(17);
            row.watermarkimageurl = c.getString(18);
            row.expiry = c.getString(19);
            row.versiondescription = c.getString(20);
            row.update_available = c.getString(21);

            ret.add(row);
            c.moveToNext();
        }
    } catch (SQLException e) {
        Log.e("Exception on query", e.toString());
    }
    return ret;
}

public List<Row_CategoriesTable> fetchAllRows_FromCategorieTable(
        String argsql) {
    ArrayList<Row_CategoriesTable> ret = new ArrayList<Row_CategoriesTable>();
    try {

        String sql = argsql;
        Cursor c = db.rawQuery(sql, null);
        // Cursor c =
        // db.query(true,DATABASE_TABLE1, new String[] {
        // "dockey","category_id","category_name"
        // }, null,null,null, null, null,null);
        int numRows = c.getCount();
        c.moveToFirst();
        for (int i = 0; i < numRows; ++i) {
            Row_CategoriesTable row = new Row_CategoriesTable();
            row.dockey = c.getString(0);
            row.category_id = c.getString(0);
            row.category_name = c.getString(0);

            ret.add(row);
            c.moveToNext();
        }
    } catch (SQLException e) {
        Log.e("Exception on query", e.toString());
    }
    return ret;
}

public Row_DocumentTable fetchRow_FromDocumentDetailTableByDocKey(
        String dockey) {
    Row_DocumentTable row = new Row_DocumentTable();
    String sql = "select * from DOCUMENTDETAIL where dockey='" + dockey
            + "'";
    try {
        Cursor c = db.rawQuery(sql, null);

        // Cursor c =
        // db.query(DATABASE_TABLE2, new String[] {
        // "dockey","docid", "status", "name", "product_discription",
        // "type", "publisher", "version", "filepathurl", "basepage"
        // , "copypaste", "save", "print", "printablepage",
        // "nonprintablepage"
        // , "search", "watermarkimageurl", "expiry", "versiondescription"},
        // "dockey=" + dockey, null, null,
        // null,null,"name desc");
        if (c.getCount() > 0) {
            c.moveToFirst();
            row.rwo_id = c.getInt(0);
            row.dockey = c.getString(1);
            row.docid = c.getString(2);
            row.size = c.getString(3);
            row.status = c.getString(4);
            row.name = c.getString(5);
            row.product_discription = c.getString(6);
            row.type = c.getString(7);
            row.publisher = c.getString(8);
            row.version = c.getString(9);
            row.filepathurl = c.getString(10);
            row.basepage = c.getString(11);
            row.copypaste = c.getString(12);
            row.save = c.getString(13);
            row.print = c.getString(14);
            row.printablepage = c.getString(15);
            row.nonprintablepage = c.getString(16);
            row.search = c.getString(17);
            row.watermarkimageurl = c.getString(18);
            row.expiry = c.getString(19);
            row.versiondescription = c.getString(20);
            row.update_available = c.getString(21);
            row.localfilepath = c.getString(22);
            return row;

        } else {
            row.docid = null;
            row.dockey = row.name = null;
        }
    } catch (IllegalStateException e) {
        e.printStackTrace();
    }
    return row;
}

public void updateRow_InDocumentDetailTableByDocKey(String dockey,
        String docid, String status, String name,
        String product_discription, String type, String publisher,
        String version, String filepathurl, String basepage,
        String copypaste, String save, String print, String printablepage,
        String nonprintablepage, String search, String watermarkimageurl,
        String expiry, String versiondescription, String update_available) {
    ContentValues args = new ContentValues();

    args.put("dockey", dockey);
    args.put("docid", docid);
    args.put("status", status);
    args.put("name", name);
    args.put("product_discription", product_discription);
    args.put("type", type);
    args.put("publisher", publisher);
    args.put("version", version);
    args.put("filepathurl", filepathurl);
    args.put("basepage", basepage);
    args.put("copypaste", copypaste);
    args.put("save", save);
    args.put("print", print);
    args.put("printablepage", printablepage);
    args.put("nonprintablepage", nonprintablepage);
    args.put("search", search);
    args.put("watermarkimageurl", watermarkimageurl);
    args.put("expiry", expiry);
    args.put("versiondescription", versiondescription);
    args.put("update_available", update_available);

    db.update(DATABASE_TABLE2, args, "dockey='" + dockey + "'", null);
}

public Cursor GetAllRows() {
    try {
        return db.query(DATABASE_TABLE2, new String[] { "dockey", "docid",
                "status", "name", "product_discription", "type",
                "publisher", "version", "filepathurl", "basepage",
                "copypaste", "save", "print", "printablepage",
                "nonprintablepage", "search", "watermarkimageurl",
                "expiry", "versiondescription" }, null, null, null, null,
                null);
    } catch (SQLException e) {
        Log.e("Exception on query", e.toString());
        return null;
    }
}

public void updateRow_InDocumentDetailTableByDocKey_UpdateAvl(Context ctx,
        String dockey, String update_available) {

    db = ctx.openOrCreateDatabase(DATABASE_NAME, DATABASE_VERSION, null);
    ContentValues args = new ContentValues();
    args.put("update_available", update_available);

    db.update(DATABASE_TABLE2, args, "dockey='" + dockey + "'", null);
}

public void updateRow_InDocumentDetailTableByDocKey_LocalFilePath(
        Context ctx, String dockey, String argLocalFilePath) {

    db = ctx.openOrCreateDatabase(DATABASE_NAME, DATABASE_VERSION, null);
    ContentValues args = new ContentValues();
    args.put("localfilepath", argLocalFilePath);

    db.update(DATABASE_TABLE2, args, "dockey='" + dockey + "'", null);
}

}

У меня есть две таблицы, и я применяю все запросы вставки, обновления, удаления и создания, выбираемые с помощью кодаэто работает нормально.Я надеюсь, что это помощь.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...