2014-05-22 2 views
0

안드로이드 앱 (Logcat에서)에서 SQLite 테이블 행을 반환하고 싶습니다. 나는 새로운 클래스라는 이름의 MySQLiteHelper을 만들어안드로이드에서 테이블 행을 반환하는 방법 SQLite

MySQLiteHelper db = new MySQLiteHelper(this); 
    // add Books 
    db.addBook(new Book("Android Application Development Cookbook", "Wei Meng Lee")); 
    db.addBook(new Book("Android Programming: The Big Nerd Ranch Guide", "Bill Phillips and Brian Hardy"));  
    db.addBook(new Book("Learn Android App Development", "Wallace Jackson")); 

    // get all books 
    //List<Book> list = db.getAllBooks(); 

    // delete one book 
    //db.deleteBook(list.get(0)); 

    // get all books 
    //db.getAllBooks(); 

2) : 내 주요 활동으로 그 코드를 삽입

1) 다음과 같이

는 내가 읽고 SQLite는 튜토리얼에 따라 샘플 코드를 삽입

: 마지막으로 내가 그 코드를 포함 Book.java라는 이름의 새로운 클래스를 생성)

package com.qualcomm.QCARSamples.ImageTargets; 

import java.util.LinkedList; 
import java.util.List; 

import android.content.ContentValues; 
import android.content.Context; 
import android.database.Cursor; 
import android.database.sqlite.SQLiteDatabase; 
import android.database.sqlite.SQLiteOpenHelper; 
import android.util.Log; 

public class MySQLiteHelper extends SQLiteOpenHelper { 

    // Database Version 
    private static final int DATABASE_VERSION = 1; 
    // Database Name 
    private static final String DATABASE_NAME = "BookDB"; 

    public MySQLiteHelper(Context context) { 
     super(context, DATABASE_NAME, null, DATABASE_VERSION); 
    } 

    @Override 
    public void onCreate(SQLiteDatabase db) { 
     // SQL statement to create book table 
     String CREATE_BOOK_TABLE = "CREATE TABLE books (" + 
       "id INTEGER PRIMARY KEY AUTOINCREMENT, " + 
       "title TEXT, "+ 
       "author TEXT)"; 

     // create books table 
     db.execSQL(CREATE_BOOK_TABLE); 
    } 

    @Override 
    public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) { 
     // Drop older books table if existed 
     db.execSQL("DROP TABLE IF EXISTS books"); 

     // create fresh books table 
     this.onCreate(db); 
    } 
    //--------------------------------------------------------------------- 

    /** 
    * CRUD operations (create "add", read "get", update, delete) book + get all books + delete all books 
    */ 

    // Books table name 
    private static final String TABLE_BOOKS = "books"; 

    // Books Table Columns names 
    private static final String KEY_ID = "id"; 
    private static final String KEY_TITLE = "title"; 
    private static final String KEY_AUTHOR = "author"; 

    private static final String[] COLUMNS = {KEY_ID,KEY_TITLE,KEY_AUTHOR}; 

    public void addBook(Book book){ 
     //for logging 
Log.d("addBook", book.toString()); 

// 1. get reference to writable DB 
SQLiteDatabase db = this.getWritableDatabase(); 

// 2. create ContentValues to add key "column"/value 
ContentValues values = new ContentValues(); 
values.put(KEY_TITLE, book.getTitle()); // get title 
values.put(KEY_AUTHOR, book.getAuthor()); // get author 

// 3. insert 
db.insert(TABLE_BOOKS, // table 
     null, //nullColumnHack 
     values); // key/value -> keys = column names/ values = column values 

// 4. close 
db.close(); 
} 

    public Book getBook(int id){ 

     // 1. get reference to readable DB 
     SQLiteDatabase db = this.getReadableDatabase(); 

     // 2. build query 
     Cursor cursor = 
       db.query(TABLE_BOOKS, // a. table 
       COLUMNS, // b. column names 
       " id = ?", // c. selections 
       new String[] { String.valueOf(id) }, // d. selections args 
       null, // e. group by 
       null, // f. having 
       null, // g. order by 
       null); // h. limit 

     // 3. if we got results get the first one 
     if (cursor != null) 
      cursor.moveToFirst(); 

     // 4. build book object 
     Book book = new Book(); 
     book.setId(Integer.parseInt(cursor.getString(0))); 
     book.setTitle(cursor.getString(1)); 
     book.setAuthor(cursor.getString(2)); 

     //log 
    Log.d("getBook("+id+")", book.toString()); 

     // 5. return book 
     return book; 
    } 
    // Get All Books 
    public List<Book> getAllBooks() { 
     List<Book> books = new LinkedList<Book>(); 

     // 1. build the query 
     String query = "SELECT * FROM " + TABLE_BOOKS; 

     // 2. get reference to writable DB 
     SQLiteDatabase db = this.getWritableDatabase(); 
     Cursor cursor = db.rawQuery(query, null); 

     // 3. go over each row, build book and add it to list 
     Book book = null; 
     if (cursor.moveToFirst()) { 
      do { 
       book = new Book(); 
       book.setId(Integer.parseInt(cursor.getString(0))); 
       book.setTitle(cursor.getString(1)); 
       book.setAuthor(cursor.getString(2)); 

       // Add book to books 
       books.add(book); 
      } while (cursor.moveToNext()); 
     } 

     Log.d("getAllBooks()", books.toString()); 

     // return books 
     return books; 
    } 

    // Updating single book 
    public int updateBook(Book book) { 

     // 1. get reference to writable DB 
     SQLiteDatabase db = this.getWritableDatabase(); 

     // 2. create ContentValues to add key "column"/value 
     ContentValues values = new ContentValues(); 
     values.put("title", book.getTitle()); // get title 
     values.put("author", book.getAuthor()); // get author 

     // 3. updating row 
     int i = db.update(TABLE_BOOKS, //table 
       values, // column/value 
       KEY_ID+" = ?", // selections 
       new String[] { String.valueOf(book.getId()) }); //selection args 

     // 4. close 
     db.close(); 

     return i; 

    } 
    // Deleting single book 
    public void deleteBook(Book book) { 

     // 1. get reference to writable DB 
     SQLiteDatabase db = this.getWritableDatabase(); 

     // 2. delete 
     db.delete(TABLE_BOOKS, //table name 
       KEY_ID+" = ?", // selections 
       new String[] { String.valueOf(book.getId())}); //selections args 

     // 3. close 
     db.close(); 

     //log 
    Log.d("deleteBook", book.toString()); 

    } 



} 

3 : 된 .java와 그 코드를 붙여 0

package com.qualcomm.QCARSamples.ImageTargets; 

public class Book { 

    private int id; 
    private String title; 
    private String author; 

    public Book(){} 

    public Book(String title, String author) { 
     super(); 
     this.title = title; 
     this.author = author; 
    } 

// getting ID 
    public int getId(){ 
     return this.id; 
    } 
// getting name 
    public String getAuthor(){ 
     return this.author; 
    } 
// getting name 
    public String getTitle(){ 
     return this.title; 
    } 


    // setting id 
    public void setId(int id){ 
     this.id = id; 
    } 



    // setting name 
    public void setTitle(String title){ 
     this.title = title; 
    } 

    // setting name 
    public void setAuthor(String author){ 
     this.author = author; 
    } 
    //getters & setters 

    @Override 
    public String toString() { 
     return "Book [id=" + id + ", title=" + title + ", author=" + author 
       + "]"; 
    } 

    } 

내 코드에서 Logcat에서 내 SQLite 테이블의 세 행을 볼 수 있습니다.

제 SQLite 테이블의 첫 번째 또는 두 번째 행을 어떻게 반환합니까?

답변

0

당신은 다음과 같이 귀하의 테이블을 통해 조회 할 수 있습니다이와

 Cursor cursor = 
     db.query(TABLE_BOOKS, new String[] {KEY_ID,KEY_TITLE,KEY_AUTHOR }, 
     null, null, null, null, null); 

, 당신이 당신의 테이블의 전체 항목을 얻을. 그리고 나서, 그것은 정확히 당신이 원하는 것에 달려 있습니다. 방금 원하는 경우 :

String currentTitle=""; 
    String currentAuthor=""; 

     int rows = Cursor.getCount(); 
     Cursor.moveToFirst(); 
     for(int i=0;i<rows;i++){ 

     int bookId = c.getInt(0); 

      if(bookId==id){ 
      //now You got the entry and can get all informations You want 
      currentTitle = cursor.getString(1); 
      currentAuthor = cursor.getString(2); 
      c.moveToNext(); 
      } 
     } 

이것은 어떻게해야하는지 알기위한 예입니다.

+0

op에 이미 select by id 쿼리가 있습니다 ... – njzk2

+0

예, 그것을 보았습니다, 하나의 oment, 저는 단지 그것을 바로 잡았습니다. – Opiatefuchs

관련 문제