Android教程網
  1. 首頁
  2. Android 技術
  3. Android 手機
  4. Android 系統教程
  5. Android 游戲
 Android教程網 >> Android技術 >> 關於Android編程 >> Android中操作SQLite數據庫

Android中操作SQLite數據庫

編輯:關於Android編程

    創建工程之後,建立一個包,主要是寫SQLite的。   image   再來補充下背景,在這裡,我在first這個包裡寫了兩個類,這是因為我在弄兩個activity的切換,不影響本實驗,本實驗是放在OtherActivity.java裡面的進行的。   建立一個Sqlite.java的類,繼承SQLiteOpenHelper。   復制代碼 public class Sqlite extends SQLiteOpenHelper{       private static final int VERSION = 1;          public Sqlite(Context context, String name, CursorFactory factory,             int version) {         super(context, name, factory, version);         // TODO 自動生成的構造函數存根     }     public Sqlite(Context context,String name){         this(context,name,VERSION);     }     public Sqlite(Context context,String name,int version){         this(context, name,null,version);     }       @Override     public void onCreate(SQLiteDatabase arg0) {         // TODO 自動生成的方法存根         System.out.println("create a Database");         //execSQL函數用於執行SQL語句         arg0.execSQL("create table user(id int,name varchar(20))");     }       @Override     public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {         // TODO 自動生成的方法存根         System.out.println("update a Database");     }   } 復制代碼 在OtherActivity.java中加入這個包,   import com.yuyidong.db.Sqlite; image   這裡是布局,前面的TextView和Button(Call)請大家無視掉。   復制代碼 <?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"     android:layout_width="match_parent"     android:layout_height="match_parent"     android:gravity="center_horizontal"     android:orientation="vertical" >          <TextView         android:id="@+id/text"         android:layout_width="wrap_content"         android:layout_height="wrap_content"         android:text="Test"         android:textSize="30sp"                  />     <Button         android:id="@+id/button_other"         android:layout_width="wrap_content"         android:layout_height="wrap_content"         android:text="Call"         />     <Button         android:id="@+id/button_create"         android:layout_width="match_parent"         android:layout_height="wrap_content"         android:text="Create"         />     <Button         android:id="@+id/button_update"         android:layout_width="match_parent"         android:layout_height="wrap_content"         android:text="Update"         />     <Button         android:id="@+id/button_insert"         android:layout_width="match_parent"         android:layout_height="wrap_content"         android:text="Insert"         />     <Button         android:id="@+id/button_update_table"         android:layout_width="match_parent"         android:layout_height="wrap_content"         android:text="Update_Table"         />     <Button         android:id="@+id/button_query"         android:layout_width="match_parent"         android:layout_height="wrap_content"         android:text="Query"         />      </LinearLayout> 復制代碼 接下來是申明已經添加到監聽器中。   復制代碼 public class OtherActivity extends Activity{       private TextView text;     private Button button;     private Button createButton;     private Button insertButton;     private Button updateButton;     private Button updateRecordButton;     private Button queryButton;     @Override     protected void onCreate(Bundle savedInstanceState) {         // TODO 自動生成的方法存根         super.onCreate(savedInstanceState);         setContentView(R.layout.activity_other);               Intent intenter = getIntent();         String value = intenter.getStringExtra("hello");                  text = (TextView) findViewById(R.id.text);         text.setText(value);         button = (Button) findViewById(R.id.button_other);         buttonListener lisbtn = new buttonListener();         button.setOnClickListener(lisbtn);                  createButton = (Button) findViewById(R.id.button_create);         buttonListener createbtn = new buttonListener();         createButton.setOnClickListener(createbtn);         updateButton = (Button) findViewById(R.id.button_update);         buttonListener updatebtn = new buttonListener();         updateButton.setOnClickListener(updatebtn);         insertButton = (Button) findViewById(R.id.button_insert);         buttonListener insertbtn = new buttonListener();         insertButton.setOnClickListener(insertbtn);         updateRecordButton = (Button) findViewById(R.id.button_update_table);         buttonListener updatetablebtn = new buttonListener();         updateRecordButton.setOnClickListener(updatetablebtn);         queryButton = (Button) findViewById(R.id.button_query);         buttonListener querybtn = new buttonListener();         queryButton.setOnClickListener(querybtn);              } 復制代碼 請大家繼續無視掉Intent、text、button這三個對象。   接下來講一講Button的監聽器裡面發生的故事。紅色的注釋是主要的說明。   復制代碼 class buttonListener implements OnClickListener     {         private Button button_check;         private int version = 1;;         @Override         public void onClick(View v) {             // TODO 自動生成的方法存根              //將View的對象v轉換成Button的             button_check = (Button) v;            //請無視掉這裡,這個是轉跳到發短信的Activity的Button的操作             if(button_check==button)             {                 Uri uri = Uri.parse("smsto:10086");                 Intent intenter = new Intent(Intent.ACTION_SENDTO,uri);                 intenter.putExtra("sms_body", "Test good!");                 startActivity(intenter);             }             //如果是按下的創建數據庫的那個Button的話,執行             else if(button_check == createButton)             {               //創建一個Sqlite對象                   Sqlite dbHelper = new Sqlite(OtherActivity.this,"yyd_test_db");               //只有調用了Sqlite對象的getReadableDatabase()方法,或者是getWritableDatabase()方法之後,才會創建,或打開一個數據庫                 SQLiteDatabase db = dbHelper.getReadableDatabase();                //Toast顯示調試                 Toast.makeText(OtherActivity.this, "Create", Toast.LENGTH_SHORT).show();             }             else if(button_check == updateButton)             {                 //每次更新後,數據庫版本加1                 version++;                 Sqlite dbHelper = new Sqlite(OtherActivity.this,"yyd_test_db",version);                 SQLiteDatabase db = dbHelper.getReadableDatabase();                 Toast.makeText(OtherActivity.this, "Update", Toast.LENGTH_SHORT).show();             }             else if(button_check == insertButton)             {                 //生成ContentValues對象                   ContentValues values = new ContentValues();                 //想該對象當中插入鍵值對,其中鍵是列名,值是希望插入到這一列的值,值必須和數據庫當中的數據類型一致                 values.put("id", 1);                 values.put("name","zhangsan");                 Sqlite dbHelper = new Sqlite(OtherActivity.this, "yyd_test_db", version);                 SQLiteDatabase db = dbHelper.getWritableDatabase();                 //調用insert方法,就可以將數據插入到數據庫當中                 db.insert("user", null, values);                 Toast.makeText(OtherActivity.this, "Insert", Toast.LENGTH_SHORT).show();             }             else if(button_check == updateRecordButton)             {                 //得到一個可寫的SQLiteDatabase對象                 Sqlite dbHelper = new Sqlite(OtherActivity.this, "yyd_test_db", version);                 SQLiteDatabase db = dbHelper.getWritableDatabase();                 ContentValues values = new ContentValues();                 values.put("name", "zhangsanfeng");              //第一個參數是要更新的表名、第二個參數是一個ContentValeus對象、第三個參數是where子句                                 db.update("user", values, "id=?", new String[]{"1"});                 Toast.makeText(OtherActivity.this, "Update_Table", Toast.LENGTH_SHORT).show();             }             else if(button_check == queryButton)             {                 Sqlite dbHelper = new Sqlite(OtherActivity.this,"yyd_test_db");                 SQLiteDatabase db = dbHelper.getReadableDatabase();                 Cursor cursor = db.query("user", new String[]{"id","name"}, "id=?", new String[]{"1"}, null, null, null);               //用cursor.moveToNext()判斷是否還存在下一個,若存在返回真,不存在返回假。                 while(cursor.moveToNext())                 {                     String name = cursor.getString(cursor.getColumnIndex("name"));                     System.out.println("Get--->" + name);                                     }             }         }              }   復制代碼 不僅可以寫程序操作SQLite,還可以用shell操作SQLite數據庫。
  1. 上一頁:
  2. 下一頁:
熱門文章
閱讀排行版
Copyright © Android教程網 All Rights Reserved