Android SQLite数据库操作实例
2013-09-10 07:17
686 查看
SQLite是一种轻型的嵌入式数据库,它占用的资源很少,android系统中就是采用这种数据库。下面介绍一下SQLite在Android中的具体操作步骤。
一、首先要创建一个SQLiteOpenHelper的派生类。本文中创建了一个DBOpenHelper继承SQLiteOpenHelper,覆写oncreate()方法。
二、创建一个数据库业务操作类。本文中的业务操作实现了添加一个记录和查询所有的记录以及关闭数据库的方法。query()方法中,如果在return cursor 前面执行database.close的话,返回的cursor是空。所以在后面调用了query()方法之后还要执行closeDB()方法去关闭数据。
注: 在对数据库操作结束后,记得关闭数据库。
三、android界面实现上面的添加记录功能和查询所有记录的功能。用ListView 把查询的所有结果展示出来。这边应用了Handler机制和多线程。
一、首先要创建一个SQLiteOpenHelper的派生类。本文中创建了一个DBOpenHelper继承SQLiteOpenHelper,覆写oncreate()方法。
public class DBOpenHelper extends SQLiteOpenHelper { // database's name private static String DB_NAME = "person.db"; // database's version private static int DB_VERSION = 1; // create table person SQL private String CreatTable_sql = "create table person (id integer primary key autoincrement," + "name varchar(20)," + "phoneNumber varchar(20)" + ")"; public DBOpenHelper(Context context) { super(context, DB_NAME, null, DB_VERSION); } @Override public void onCreate(SQLiteDatabase db) { db.execSQL(CreatTable_sql); } @Override public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) { } }
二、创建一个数据库业务操作类。本文中的业务操作实现了添加一个记录和查询所有的记录以及关闭数据库的方法。query()方法中,如果在return cursor 前面执行database.close的话,返回的cursor是空。所以在后面调用了query()方法之后还要执行closeDB()方法去关闭数据。
注: 在对数据库操作结束后,记得关闭数据库。
public class PersonDAO { private DBOpenHelper helper; private SQLiteDatabase database; public PersonDAO(Context context) { helper = new DBOpenHelper(context); } /** * insert a record into table * @param name : record's name * @param phoneNumber : record's phoneNumber */ public void add(String name,String phoneNumber){ database = helper.getWritableDatabase(); database.execSQL("insert into person('name','phoneNumber') values (?,?)", new String[]{name,phoneNumber}); database.close(); } /** * query all record * @return : cursor */ public Cursor query(){ database = helper.getWritableDatabase(); Cursor cursor = database.rawQuery("select * from person", null); return cursor; } /** *close database */ public void closeDB(){ database.close(); } }
三、android界面实现上面的添加记录功能和查询所有记录的功能。用ListView 把查询的所有结果展示出来。这边应用了Handler机制和多线程。
public class MainActivity extends Activity { private EditText et_name, et_phoneNumber; private Button btn_add, btn_query; private ListView lv_all; private PersonDAO personDao; private Cursor cursor = null; private List<Map<String, Object>> list = null; /** * a handler to handleMessage of make list complete * create a SimpleAdapter * Instance listview setAdapter */ private Handler handler = new Handler() { @Override public void handleMessage(Message msg) { // TODO Auto-generated method stub switch (msg.what) { case 1001: SimpleAdapter adapter = new SimpleAdapter(MainActivity.this, list, R.layout.item, new String[] { "id", "name", "phoneNumber" }, new int[] { R.id.tv_id, R.id.tv_name, R.id.tv_phoneNumber }); lv_all.setAdapter(adapter); break; } } }; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); et_name = (EditText) findViewById(R.id.et_name); et_phoneNumber = (EditText) findViewById(R.id.et_phoneNumber); btn_add = (Button) findViewById(R.id.btn_add); btn_query = (Button) findViewById(R.id.btn_query); lv_all = (ListView) findViewById(R.id.lv_all); personDao = new PersonDAO(this);// new a PersonDao instance //execute a record btn_add.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { String name = et_name.getText().toString(); String phoneNumber = et_phoneNumber.getText().toString(); personDao.add(name, phoneNumber); Log.d("DBDemo", "add a record"); } }); //execute query all records btn_query.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { new Thread(new Runnable() { @Override public void run() { cursor = personDao.query(); list = new ArrayList<Map<String, Object>>(); cursor.moveToFirst(); while (!cursor.isAfterLast()) { Map<String, Object> map = new HashMap<String, Object>(); Log.d("DBDemo", "add a cursor record"); map.put("id", cursor.getInt(cursor.getColumnIndex("id"))); map.put("name", cursor.getString(cursor .getColumnIndex("name"))); map.put("phoneNumber", cursor.getString(cursor .getColumnIndex("phoneNumber"))); list.add(map); cursor.moveToNext(); } personDao.closeDB(); Message msg = new Message(); msg.what = 1001; handler.sendMessage(msg); } }).start(); } }); } }
相关文章推荐
- Android获取操作数据库的SQLiteDatabase实例
- Android SQLite数据库操作实例
- android数据库SQLite操作实例
- 【转】Android获取用于操作数据库的SQLiteDatabase实例【学习记录】
- Android SQLite数据库操作实例
- 记android学习之路----数据持久化之sqlite操作实例1
- android SQLiteOpenHelper操作数据库 搜索关键字列表应用
- adb、sqlite3操作android数据库
- Android中SQLite数据库操作(2)——使用SQLiteDatabase提供的方法操作数据库
- android SQLite数据库相关的操作
- 查看android sqlite数据库常用操作
- Android SQLite数据库操作(一)
- Android 操作 Sqlite3数据库
- android SQLite数据库基本操作示例
- android数据库操作 sqlite returned: error code = 14, msg = cannot open file at source line 25502
- 记android学习之路----数据持久化之sqlite操作实例2
- Android中SQLite数据库操作(2)——使用SQLiteDatabase提供的方法操作数据库
- android-数据库操作实例,留着以后用
- 轻型数据库SQLite与Android实例
- Rxjava2_Flowable_Sqlite_Android数据库访问实例