編輯:關於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開發自學路線圖
Android平台是建立在Linux基礎上,以Java語言為主的一個操作系統平台。它的開發涉及到很多方面,但其實並不復雜,上面的路線圖看似需要學習的內容很多,但其實每個小
Android PraiseTextView實現朋友圈點贊功能
PraiseTextView說明我是將朋友圈分成了幾個獨立模塊單獨自定義的View,通過回調完成交互,耦合性算是非常低了,主要有以下及部分:1.評論布局(自定義TextV
android listview優化幾種寫法詳細介紹
這篇文章只是總結下getView裡面優化視圖的幾種寫法,就像孔乙己寫茴香豆的茴字的幾種寫法一樣,高手勿噴,勿笑,只是拿出來分享,有錯誤的地方歡迎大家指正,謝謝。 list
android開源圖表庫MPAndroidChart文檔翻譯(上)
MPAndroidChart 是 Android 系統上一款開源的圖表庫。目前提供線圖和餅圖,支持選擇、縮放和拖放。android開源圖表庫MPAndroidChar的g