2012-12-17 44 views
0

好,其他的岗位,我的意思是:如何组织类,同时使数据库应用程序使用SQLite

Should there be one SQLiteOpenHelper for each table in the database?

我是怀疑具有一种或应用更加助手,好了,anwser是1个帮手,很多专栏。

现在的第二部分,我其实做这个教程: http://www.vogella.com/articles/AndroidSQLite/article.html

,但我想通过在数据库上超过1台办呢,好吧,我所做的工作,现在我尝试创建所谓的数据访问对象“DAO”。问题是一样的,最好是有一个单独的DAO,或者最好每个表都有一个(每个表类都有一个),最后是一个单独的DAO类,其中包含所有可用于“操作”的DAO类应用程序...?

这是在本教程所谓DAO:

package de.vogella.android.sqlite.first; 

import java.util.ArrayList; 
import java.util.List; 

import android.content.ContentValues; 
import android.content.Context; 
import android.database.Cursor; 
import android.database.SQLException; 
import android.database.sqlite.SQLiteDatabase; 

public class CommentsDataSource { 

    // Database fields 
    private SQLiteDatabase database; 
    private MySQLiteHelper dbHelper; 
    private String[] allColumns = { MySQLiteHelper.COLUMN_ID, 
     MySQLiteHelper.COLUMN_COMMENT }; 

    public CommentsDataSource(Context context) { 
    dbHelper = new MySQLiteHelper(context); 
    } 

    public void open() throws SQLException { 
    database = dbHelper.getWritableDatabase(); 
    } 

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

    public Comment createComment(String comment) { 
    ContentValues values = new ContentValues(); 
    values.put(MySQLiteHelper.COLUMN_COMMENT, comment); 
    long insertId = database.insert(MySQLiteHelper.TABLE_COMMENTS, null, 
     values); 
    Cursor cursor = database.query(MySQLiteHelper.TABLE_COMMENTS, 
     allColumns, MySQLiteHelper.COLUMN_ID + " = " + insertId, null, 
     null, null, null); 
    cursor.moveToFirst(); 
    Comment newComment = cursorToComment(cursor); 
    cursor.close(); 
    return newComment; 
    } 

    public void deleteComment(Comment comment) { 
    long id = comment.getId(); 
    System.out.println("Comment deleted with id: " + id); 
    database.delete(MySQLiteHelper.TABLE_COMMENTS, MySQLiteHelper.COLUMN_ID 
     + " = " + id, null); 
    } 

    public List<Comment> getAllComments() { 
    List<Comment> comments = new ArrayList<Comment>(); 

    Cursor cursor = database.query(MySQLiteHelper.TABLE_COMMENTS, 
     allColumns, null, null, null, null, null); 

    cursor.moveToFirst(); 
    while (!cursor.isAfterLast()) { 
     Comment comment = cursorToComment(cursor); 
     comments.add(comment); 
     cursor.moveToNext(); 
    } 
    // Make sure to close the cursor 
    cursor.close(); 
    return comments; 
    } 

    private Comment cursorToComment(Cursor cursor) { 
    Comment comment = new Comment(); 
    comment.setId(cursor.getLong(0)); 
    comment.setComment(cursor.getString(1)); 
    return comment; 
    } 
} 

在此先感谢。

回答

1

这是帮助您的应用程序与数据库进行交互的类。你应该只有一个DAO类和你需要的所有方法。 (不同的方法对不同的表。)

检查下面的例子:

public void insertInTableA (String[]) //or any args 
{ 
    //Logic for table A row insertion 
} 

public void insertInTableB (String[]) //or any args 
{ 
    //Logic for table B row insertion 
} 

public void dltFromTableA (String where) //or any args 
{ 
    //Logic for table A row deletion 
} 

public void dltFromTableB (String where) //or any args 
{ 
    //Logic for table B row deletion 
} 

//Other function as per requirement 
+1

谢谢,你真是帮了我很多。 –

相关问题