編輯:關於Android編程
[返回目錄]
SQLite 是一個輕量級數據庫,大小才幾十K,但是麻雀雖小,五髒俱全;
官方網址:http://www.sqlite.org
與Java的JDBC和ODBC不同,SQLite的增刪改查是通過SQLiteOpenHelper和SQLiteDatabase進行的;
SQLiteOpenHelper使用方法
getReadableDatabase() 返回一個可讀的SQLiteDatabase
getWriteableDatabase() 返回一個可寫的SQLiteDatabase
onCreate(SQLiteDatabase db)
onOpen(SQLiteDatabase db)
onUpgrade(SQLiteDatabase db,int old)
與其他組件不同額事,SQLiteOpenHelper的onCreate方法並不是創建的時候會調用,而是當調用getReadableDatabase()或者getWriteableDatabase()時會被調用(只第一次的時候調用)
在使用SQLite時,需編寫一個類繼承SQLiteOpenHelper並實現其構造方法、onCreate、OnUpdate等方法;
如下:
DatabaseHelper.java
package com.example.testsqlite; import android.content.Context; import android.database.DatabaseErrorHandler; import android.database.sqlite.SQLiteDatabase; import android.database.sqlite.SQLiteDatabase.CursorFactory; import android.database.sqlite.SQLiteOpenHelper; import android.util.Log; public class DatabaseHelper extends SQLiteOpenHelper { private static int VERSION=1; //數據庫的版本 public DatabaseHelper(Context context, String name, CursorFactory factory, int version, DatabaseErrorHandler errorHandler) { super(context, name, factory, version, errorHandler); } public DatabaseHelper(Context context, String name, CursorFactory factory, int version) { super(context, name, factory, version); } public DatabaseHelper(Context context,String name,int version){ this(context, name, null, version, null); } public DatabaseHelper(Context context,String name){ super(context,name,null,VERSION,null); } @Override public void onCreate(SQLiteDatabase db) { String sql="create table user(id int,name varchar(20))"; db.execSQL(sql); } @Override public void onUpgrade(SQLiteDatabase db, int arg1, int arg2) { //當構造方法傳進的Version值不同時觸發 Log.e("Potato", "onUpgrade"); } }
其中,2參數與3參數的構造方法是我自己寫的,為了方便調用。
在OnCreate中(也就是第一個創建時,一般新建一張表,系統自動識別,有則不創建,無則創建);
MainActivity.java
package com.example.testsqlite; 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; import android.view.View; import android.view.View.OnClickListener; import android.widget.Button; public class MainActivity extends Activity { private Button buttonCreate; private Button buttonInsert; private Button buttonDelete; private Button buttonUpdate; private Button buttonQuery; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); buttonCreate=(Button)findViewById(R.id.create); buttonInsert=(Button)findViewById(R.id.insert); buttonDelete=(Button)findViewById(R.id.delete); buttonUpdate=(Button)findViewById(R.id.update); buttonQuery=(Button)findViewById(R.id.query); ButtonListener buttonListener=new ButtonListener(); buttonCreate.setOnClickListener(buttonListener); buttonInsert.setOnClickListener(buttonListener); buttonDelete.setOnClickListener(buttonListener); buttonUpdate.setOnClickListener(buttonListener); buttonQuery.setOnClickListener(buttonListener); } class ButtonListener implements OnClickListener{ @Override public void onClick(View view) { if(view.getId()==R.id.create){ DatabaseHelper databaseHelper=new DatabaseHelper(MainActivity.this, "db_potato"); //第二個參數是數據庫的名字 SQLiteDatabase dbReader=databaseHelper.getReadableDatabase(); Log.e("Potato", "創建成功!"); dbReader.close(); } if(view.getId()==R.id.insert){ DatabaseHelper databaseHelper=new DatabaseHelper(MainActivity.this, "db_potato"); //第二個參數是數據庫的名字 SQLiteDatabase dbWriter=databaseHelper.getWritableDatabase(); ContentValues values=new ContentValues(); values.put("id", 1); values.put("name", "potato"); dbWriter.insert("user", null, values);//表名,null,值對象 Log.e("Potato", "插入成功!"); dbWriter.close(); } if(view.getId()==R.id.delete){ DatabaseHelper databaseHelper=new DatabaseHelper(MainActivity.this, "db_potato"); //第二個參數是數據庫的名字 SQLiteDatabase dbWriter=databaseHelper.getWritableDatabase(); dbWriter.delete("user", "id=?", new String[]{"1"}); Log.e("Potato", "刪除成功!"); dbWriter.close(); } if(view.getId()==R.id.update){ DatabaseHelper databaseHelper=new DatabaseHelper(MainActivity.this, "db_potato"); //第二個參數是數據庫的名字 SQLiteDatabase dbWriter=databaseHelper.getWritableDatabase(); ContentValues newValue=new ContentValues(); newValue.put("name", "tomato"); dbWriter.update("user", newValue, "id=?", new String[]{"1"}); Log.e("Potato", "更改成功!"); } if(view.getId()==R.id.query){ DatabaseHelper databaseHelper=new DatabaseHelper(MainActivity.this, "db_potato"); //第二個參數是數據庫的名字 SQLiteDatabase dbReader=databaseHelper.getReadableDatabase(); Cursor cursor=dbReader.rawQuery("select * from user where id=?", new String[]{"1"}); while(cursor.moveToNext()){ Log.e("Potato", cursor.getString(cursor.getColumnIndex("name"))); } dbReader.close(); } } } }
activity_main.xml
Android平台是建立在Linux基礎上,以Java語言為主的一個操作系統平台。它的開發涉及到很多方面,但其實並不復雜,上面的路線圖看似需要學習的內容很多,但其實每個小
PraiseTextView說明我是將朋友圈分成了幾個獨立模塊單獨自定義的View,通過回調完成交互,耦合性算是非常低了,主要有以下及部分:1.評論布局(自定義TextV
這篇文章只是總結下getView裡面優化視圖的幾種寫法,就像孔乙己寫茴香豆的茴字的幾種寫法一樣,高手勿噴,勿笑,只是拿出來分享,有錯誤的地方歡迎大家指正,謝謝。 list
MPAndroidChart 是 Android 系統上一款開源的圖表庫。目前提供線圖和餅圖,支持選擇、縮放和拖放。android開源圖表庫MPAndroidChar的g