sqlite数据库android使用教程,Android开发教程之 SQLite数据库的使用
在開發Android應用程序時經常需要存儲數據,Android系統提供了SQLite數據庫,還提供了SQLiteOpenHelper類,使我們可以很方便的操作數據庫。通過一個例子來說明在Android開發中使用SQLite數據庫。
示例:新建一個Android應用程序項目,在main.xml文件中添加5個按鈕。當我們點擊這五個按鈕時依次進行創建數據庫,更新數據庫的版本,向數據庫的表中插入數據,更新表以及查詢等操作。這個項目中有兩個Java文件,一個是Activity的文件,另一個是繼承自SQLiteOpenHelper類的DatebaseHelper類。在這個類中重寫了SQLiteOpenHelper的構造方法,以及onCreate()和onUpgrade()方法。
main.xml
[xhtml:firstline[1]] view plaincopy
android:orientation="vertical"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
>
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:text="@string/hello"
/>
android:id="@+id/createdb"
android:layout_width="300dp"
android:layout_height="wrap_content"
android:text="創建數據庫"
/>
android:id="@+id/updatedb"
android:layout_width="300dp"
android:layout_height="wrap_content"
android:text="更新數據庫"
/>
android:id="@+id/insert"
android:layout_width="300dp"
android:layout_height="wrap_content"
android:text="插入數據"
/>
android:id="@+id/update"
android:layout_width="300dp"
android:layout_height="wrap_content"
android:text="更新數據"
/>
android:id="@+id/query"
android:layout_width="300dp"
android:layout_height="wrap_content"
android:text="查詢數據"
/>
DatebaseHelper.java
[java:firstline[1]] view plaincopy
package idea.org;
import android.content.Context;
import android.database.sqlite.SQLiteDatabase;
import android.database.sqlite.SQLiteDatabase.CursorFactory;
import android.database.sqlite.SQLiteOpenHelper;
public class DatebaseHelper extends SQLiteOpenHelper{
//DatabaseHelper作為一個訪問SQLite的助手類,提供兩個方面的功能,
//第一,getReadableDatabase(),getWritableDatabase()可以獲得SQLiteDatabse對象,通過該對象可以對數據庫進行操作
//第二,提供了onCreate()和onUpgrade()兩個回調函數,允許我們在創建和升級數據庫時,進行自己的操作
public static final int Version=1;
//在SQLiteOepnHelper的子類當中,必須有該構造函數
public DatebaseHelper(Context context, String name, CursorFactory factory,
int version) {
super(context, name, factory, version);
// TODO Auto-generated constructor stub
}
public DatebaseHelper(Context context,String name,int version)
{
this(context,name,null,version);
}
public DatebaseHelper(Context context,String name)
{
this(context, name, Version);
}
//該函數是在第一次得到SQLiteDatabse對象的時候,才會調用這個方法
@Override
public void onCreate(SQLiteDatabase db) {
// TODO Auto-generated method stub
System.out.println("create a datebase");
//execSQL函數用于執行SQL語句
db.execSQL("create table user(id int primary key,name varchar(20))");
}
//更新數據庫的版本時執行這個方法
@Override
public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {
// TODO Auto-generated method stub
System.out.println("update a database");
}
}
Android_SQLite.java
[java:firstline[1]] view plaincopy
package idea.org;
import android.app.Activity;
import android.content.ContentValues;
import android.database.Cursor;
import android.database.sqlite.SQLiteDatabase;
import android.os.Bundle;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.Button;
public class Android_SQLite extends Activity {
private Button createdb,updatedb,buttonInsert,buttonUpdate,buttonQuery;
/** Called when the activity is first created. */
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
createdb=(Button)findViewById(R.id.createdb);
updatedb=(Button)findViewById(R.id.updatedb);
buttonInsert=(Button)findViewById(R.id.insert);
buttonUpdate=(Button)findViewById(R.id.update);
buttonQuery=(Button)findViewById(R.id.query);
createdb.setOnClickListener(new CreatedbListener());
updatedb.setOnClickListener(new UpdateListener());
buttonInsert.setOnClickListener(new ButtonInsertListener());
buttonUpdate.setOnClickListener(new ButtonUpdateListener());
buttonQuery.setOnClickListener(new ButtonQueryListener());
}
class CreatedbListener implements OnClickListener
{
/* (non-Javadoc)
* @see android.view.View.OnClickListener#onClick(android.view.View)
*/
@Override
public void onClick(View v) {
// TODO Auto-generated method stub
//只有調用了DatabaseHelper對象的getReadableDatabase()方法,或者是getWritableDatabase()方法之后,才會創建,或打開一個數據庫
DatebaseHelper dbHelper=new DatebaseHelper(Android_SQLite.this, "test_db");
SQLiteDatabase db=dbHelper.getReadableDatabase();
}
}
class UpdateListener implements OnClickListener
{
/* (non-Javadoc)
* @see android.view.View.OnClickListener#onClick(android.view.View)
*/
@Override
public void onClick(View v) {
// TODO Auto-generated method stub
//將數據庫的版本升級為2
DatebaseHelper dbHelper=new DatebaseHelper(Android_SQLite.this,"test_db",2);
SQLiteDatabase db=dbHelper.getReadableDatabase();
}
}
class ButtonInsertListener implements OnClickListener
{
/* (non-Javadoc)
* @see android.view.View.OnClickListener#onClick(android.view.View)
*/
@Override
public void onClick(View v) {
// TODO Auto-generated method stub
//獲取最新版本的數據庫,不然會出現異常
DatebaseHelper dbHelper=new DatebaseHelper(Android_SQLite.this,"test_db",2);
SQLiteDatabase db=dbHelper.getWritableDatabase();
//db.execSQL("insert into user (id,name) values (1,'張三')")
ContentValues ?values=new ContentValues();
values.put("id", 1);
values.put("name", "張三");
db.insert("user", null, values);
}
}
class ButtonUpdateListener implements OnClickListener
{
/* (non-Javadoc)
* @see android.view.View.OnClickListener#onClick(android.view.View)
*/
@Override
public void onClick(View v) {
// TODO Auto-generated method stub
DatebaseHelper dbHelper=new DatebaseHelper(Android_SQLite.this,"test_db",2);
//得到一個可寫的SQLiteDatabase對象
SQLiteDatabase db=dbHelper.getWritableDatabase();
ContentValues values=new ContentValues();
values.put("name", "張三豐");
db.update("user", values, "id=?", new String[]{"1"});
}
}
class ButtonQueryListener implements OnClickListener
{
/* (non-Javadoc)
* @see android.view.View.OnClickListener#onClick(android.view.View)
*/
@Override
public void onClick(View v) {
// TODO Auto-generated method stub
DatebaseHelper dbHelper=new DatebaseHelper(Android_SQLite.this,"test_db",2);
SQLiteDatabase db=dbHelper.getReadableDatabase();
Cursor c=db.rawQuery("select * from user",null);
while(c.moveToNext())
{
int id=c.getInt(c.getColumnIndex("id"));
String name=c.getString(c.getColumnIndexOrThrow("name"));
System.out.println("Query--->id:"+id+" ? name:"+name);
}
}
}
}
需要注意的是當我們點擊“更新數據庫”的按鈕之后,數據庫的版本更新為2。當我們再使用數據庫的使用應該獲得最新版本的數據庫,不然的話會出現Adroid.database.sqlite.SQLiteException: Can't downgrade database from version 2 to 1的異常。
運行效果:
界面
依次點擊5個按鈕控制臺輸出如下內容。
本文出處:http://www.ablanxue.com/prone_3667_1.html
總結
以上是生活随笔為你收集整理的sqlite数据库android使用教程,Android开发教程之 SQLite数据库的使用的全部內容,希望文章能夠幫你解決所遇到的問題。
 
                            
                        - 上一篇: go语言能编android程序吗,用 G
- 下一篇: 如何更新android v7 suppo
