編輯:關於Android編程
在android中已經內置了Sqlite數據庫,如果我們需要使用Sqlite數據庫,谷歌已經給我們提供了比較方便的方法,我們只需要自己編寫一個java類,然後繼承SQLiteOpenHelper,實現其中的方法就可以使用了。下面是一段代碼:
package com.mxy; import android.content.Context; import android.database.sqlite.SQLiteDatabase; import android.database.sqlite.SQLiteDatabase.CursorFactory; import android.database.sqlite.SQLiteOpenHelper; public class PersonSQLiteOpenHelper extends SQLiteOpenHelper { public PersonSQLiteOpenHelper(Context context) { //參數分別為上下文、數據庫文件、CursorFactory、數據庫版本 //CursorFactory如果為null 則使用默認的CursorFactory super(context, "person.db", null, 1); } /** * 數據庫第一次被創建的時候調用 可以初始化表和參數等 */ @Override public void onCreate(SQLiteDatabase db) { //創建表 底層以string格式存儲 所以varchar的字符不會起作用 db.execSQL("create table person (id integer primary key autoincrement,name varchar(20),number varchar(20))"); } /** * 數據庫版本發生變化的時候調用 可以用於修改數據表結構 數據庫參數等 */ @Override public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) { // TODO Auto-generated method stub } }然後我們可以創建該類的實例去操作數據庫,但是我們在調用getReadableDatabase()或getWritableDatabase()之前,並不會真正的創建數據庫文件。在真正操作數據庫的時候,我們可以直接使用sql語句,也可以使用谷歌給我們封裝好的一些方法,這裡建議使用谷歌提供的方法,可以提高我們的正確率。下面是一個代碼:
package com.mxy; import android.app.Activity; import android.content.ContentValues; import android.database.Cursor; import android.database.sqlite.SQLiteDatabase; import android.os.Bundle; import android.util.Log; import android.view.Menu; public class MainActivity extends Activity { @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); //直接使用sql語句操作數據庫 // sqlString(); //使用android封裝的api PersonSQLiteOpenHelper helper = new PersonSQLiteOpenHelper(this); //調用下面兩者之一 才會真正的創建數據庫文件 // helper.getReadableDatabase(); SQLiteDatabase db = helper.getWritableDatabase(); ContentValues values = new ContentValues(); values.put("name", "lisi"); values.put("number", "222222"); long rowid = db.insert("person", null, values); if(rowid != -1){ Log.i("mxy", "添加成功"); }else{ Log.i("mxy", "添加失敗"); } Cursor cursor = db.query("person", null, "name=?", new String[]{"zhangsan"}, null, null, null); while(cursor.moveToNext()){ int id = cursor.getInt(cursor.getColumnIndex("id")); String number = cursor.getString(2); Log.i("mxy", "id:" + id + " number:" + number); } cursor.close(); db.close(); } private void sqlString() { PersonSQLiteOpenHelper helper = new PersonSQLiteOpenHelper(this); //調用下面兩者之一 才會真正的創建數據庫文件 // helper.getReadableDatabase(); SQLiteDatabase db = helper.getWritableDatabase(); db.execSQL("insert into person (name,number) values (?,?)", new Object[]{"zhangsan","12222"}); Cursor cursor = db.rawQuery("select * from person where name=?", new String[]{"zhangsan"}); while(cursor.moveToNext()){ int id = cursor.getInt(cursor.getColumnIndex("id")); String number = cursor.getString(2); Log.i("mxy", "id:" + id + " number:" + number); } cursor.close(); db.close(); } @Override public boolean onCreateOptionsMenu(Menu menu) { // Inflate the menu; this adds items to the action bar if it is present. getMenuInflater().inflate(R.menu.main, menu); return true; } }轉載請注明出處:http://blog.csdn.net/mengxiangyu
Android應用開發-小巫CSDN博客客戶端之集成友盟社會化分享組件 上一篇博客給大家介紹了如何分析網頁並且使用jsoup這個庫對html代碼進行解析,本篇博客繼續給大
自定義view一.View的MeasureSpec1.MeasureSpec包SpecMode和SpecSize。其中SpecMode包括UNSPECIFIED:父容器不
在我們開發應用程序時,通常都會用到獲取手機聯系人信息這一十分常用的功能,最近項目裡也要實現此功能,想到以後的APP還十分可能還有此功能,就干脆把這個小功能放到一個類中去,
自3.15曝光手機APP洩漏用戶隱私以來,用戶使用手機的隱私安全也被用戶所重視,這是一個老生常談的問題,3·15曝光了不少洩露用戶隱私的案例,