sqlite與android互動 (封裝),sqliteandroid
學android已經有大概一周時間了吧 ,總感覺自己基礎不怎麼好,只能通過一點一點積累著敲來鞏固平常的知識,有的時候就先不封裝的敲一遍,再封裝上,有些語句真的記不住,雖然知道他是什麼意思,於是乎就反覆的敲著,加油吧!少年,下面進入正題吧
DBConn.java類 主要是將raw寫入到DDMS裡的data/data/xxx包/下,代碼如下:
package com.tp.soft.util;import java.io.File;import java.io.FileOutputStream;import java.io.InputStream;import com.example.dbcity.R;import android.content.Context;import android.database.sqlite.SQLiteDatabase;import android.os.Environment;public class DBConn { private static String DB_NAME = "test.db"; private static String PACKAGE = "com.example.dbcity"; private static String PATH = "/data" + Environment.getDataDirectory().getPath()+ File.separator + PACKAGE; private Context context; private SQLiteDatabase database; public DBConn(Context context){ this.context = context; } public static final DBConn getInstance(Context context){ DBConn conn = new DBConn(context); return conn; } public SQLiteDatabase getDb(){ database = openDB(PATH + File.separator + DB_NAME); return database; } public SQLiteDatabase openDB(String dbFile){ try{ if(!isExitFile(dbFile)){ InputStream is = context.getResources().openRawResource(R.raw.test); FileOutputStream fos = new FileOutputStream(dbFile); byte[] buffer = new byte[1024]; int len = -1; while((len = is.read(buffer)) != -1){ fos.write(buffer, 0, len); } is.close(); fos.close(); } database = SQLiteDatabase.openOrCreateDatabase(dbFile, null); return database; }catch (Exception e) { e.printStackTrace(); return null; } } public boolean isExitFile(String path){ File file = new File(path); return file.exists(); }}
DBManage.java主要是對資料庫的封裝,目前只做了個查詢,待後期完善吧,代碼如下:
package com.tp.soft.util;import java.util.ArrayList;import java.util.List;import android.content.Context;import android.database.Cursor;import android.database.sqlite.SQLiteDatabase;public class DBManage { private SQLiteDatabase db; public DBManage(Context context) { DBConn conn = DBConn.getInstance(context); db = conn.getDb(); } public List<String> queryData(String sql, String[] selectionArgs, String property){ Cursor cursor = null; List<String> list = new ArrayList<String>(); try{ cursor = db.rawQuery(sql, selectionArgs); while(cursor.moveToNext()){ String str = cursor.getString(cursor.getColumnIndex(property)); list.add(str); } }catch (Exception e) { e.printStackTrace(); }finally{ if(null != cursor){ cursor.close(); } } return list; } }
主入口就是一個下拉式清單的顯示,然後就是調用sqlite資料庫了,部分代碼如下:
proSelect = (Spinner) findViewById(R.id.proSelect); DBManage dbManage = new DBManage(this); List<String> proList = dbManage.queryData("select * from au_user", null, "username"); ArrayAdapter<String> arrayAdapter = new ArrayAdapter<String>(this, android.R.layout.simple_gallery_item, proList); proSelect.setAdapter(arrayAdapter);
總結一句話,其實代碼敲多了 才去想怎麼敲,而不是一點都沒敲就去想如何將語句敲到最好 我覺得這個是不可能的,菜鳥自學路程。。。
android sqlite怎進行封裝
一、[代碼]DatabaseUtil.java
package com.dbexample;import android.content.ContentValues;import android.content.Context;import android.database.Cursor;import android.database.SQLException;import android.database.sqlite.SQLiteDatabase;import android.database.sqlite.SQLiteOpenHelper;import android.util.Log;public class DatabaseUtil{ private static final String TAG = "DatabaseUtil"; /** * Database Name */ private static final String DATABASE_NAME = "student_database"; /** * Database Version */ private static final int DATABASE_VERSION = 1; /** * Table Name */ private static final String DATABASE_TABLE = "tb_student"; /** * Table columns */ public static final String KEY_NAME = "name"; public static final String KEY_GRADE = "grade"; public static final String KEY_ROWID = "_id"; /** * Database creation sql statement */ private static final String CREATE_STUDENT_TABLE = "create table " + DATABASE_TABLE + " (" + KEY_ROWID + " integer primary key autoincrement, " + KEY_NAME +" text not null, " + KEY_GRADE + " text not null);"; /** * Context */ private final Context mCtx; private DatabaseHelper mDbHelper; private SQLiteDatabase mDb; /** * Inner private class. Database Helper class for creating and updating database. */ private static class DatabaseHelper extends SQLiteOpenHelper { DatabaseHelper(Context context......餘下全文>>
Android的資料庫SQLite存資料好些,還是把資料封裝成類好些對於要存的資料少得時
資料少的時候盡量避免用資料庫,因為用了資料庫會影響程式的通用性、相容性、可移植性等;
資料量大的時候就要優先考慮資料庫了,因為這時候程式的運行效率、資料的安全性等就會凸現出來。
這是所有編程的一個不成文的原則,並不只是針對Android