当前位置:首页 > 数据库 > SQlite

android-SQLite查询以创建定义的Java对象

我有这个提示的SQLite表

台车:

CATEGORY    COUNTRY   ID    NAME          EMAIL
A           GE         1    BMW           sample1@salple.it
A           GE         2    Lamborghini   sample2@salple.it
B           GE         3    BMW           sample3@salple.it

我想选择所有具有指定名称或指定类别的条目,并将所有参数传递给构造函数中的每一行

Vehicle(String category, String country, int id, String name, String email)

我已经使用一些教程实现了该适配器:

public class TestAdapter  
{ 
    protected static final String TAG = "DataAdapter"; 

    private final Context mContext; 
    private SQLiteDatabase mDb; 
    private DataBaseHelper mDbHelper; 

    public TestAdapter(Context context)  
    { 
        this.mContext = context; 
        mDbHelper = new DataBaseHelper(mContext); 
    } 

    public TestAdapter createDatabase() throws SQLException  
    { 
        try  
        { 
            mDbHelper.createDataBase(); 
        }  
        catch (IOException mIOException)  
        { 
            Log.e(TAG, mIOException.toString() + "  UnableToCreateDatabase"); 
            throw new Error("UnableToCreateDatabase"); 
        } 
        return this; 
    } 

    public TestAdapter open() throws SQLException  
    { 
        try  
        { 
            mDbHelper.openDataBase(); 
            mDbHelper.close(); 
            mDb = mDbHelper.getReadableDatabase(); 
        }  
        catch (SQLException mSQLException)  
        { 
            Log.e(TAG, "open >>"+ mSQLException.toString()); 
            throw mSQLException; 
        } 
        return this; 
    } 

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



    public boolean SaveVehicles(String category , String country, String id, String name, String email) 
    {
        try
        {
            ContentValues cv = new ContentValues();
            cv.put("Category", category);
            cv.put("Country", country);
            cv.put("id", id);
            cv.put("Name", name);
            cv.put("Email", email);

            mDb.insert("Vehicles", null, cv);

            Log.d("SaveVehicles", "informationsaved");
            return true;

        }
        catch(Exception ex)
        {
            Log.d("SaveVehicles", ex.toString());
            return false;
        }
    }


} 

但是我不知道如何实现所需的各种get方法,以解决问题.

解决方法:

通过SQL查询创建对象看起来像这样

/**
 * @return Returns a list of all objects.
 */
public ArrayList<Object> getAllObjects() 
{
    // Select All Query
    String selectQuery = "SELECT * FROM SOME_TABLE";
    // Get the isntance of the database
    SQLiteDatabase db = this.getWritableDatabase();
    //get the cursor you're going to use
    Cursor cursor = db.rawQuery(selectQuery, null);

    //this is optional - if you want to return one object
    //you don't need a list
    ArrayList<Object> objectList = new ArrayList<Object>();

    //you should always use the try catch statement incase
    //something goes wrong when trying to read the data
    try
    {           
        // looping through all rows and adding to list
        if (cursor.moveToFirst()) {
            do {
                 //the .getString(int x) method of the cursor returns the column
                 //of the table your query returned
                Object object= new Object(Integer.parseInt(cursor.getString(0)),
                                        Integer.parseInt(cursor.getString(1)),
                                        Integer.parseInt(cursor.getString(2)),
                                        cursor.getString(3),
                                        cursor.getString(4),
                                        cursor.getString(5),
                                        Boolean.parseBoolean(cursor.getString(6))
                                        );                                      
                // Adding contact to list
                objectList.add(object);
            } while (cursor.moveToNext());
        }
    }
    catch (SQLiteException e)
    {
        Log.d("SQL Error", e.getMessage());
        return null;
    }
    finally
    {
      //release all your resources
        cursor.close();
        db.close();
    }
    return objectList;      
}

上面的代码假定您的数据库中有一个名为“ SOME_TABLE”的表,并且您的对象具有7个参数,但是您应该能够更改代码段以使其适合您.


【说明】本文章由站长整理发布,文章内容不代表本站观点,如文中有侵权行为,请与本站客服联系(QQ:254677821)!