Android SQLite数据库操作实例

          SQLite是一种轻型的嵌入式数据库,它占用的资源很少,android系统中就是采用这种数据库。下面介绍一下SQLite在Android中的具体操作步骤。

 

一、首先要创建一个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();

			}
		});
	}
}


 

 

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值