Android 应用程序与其他应用程序一样都是要和数据库打交道的。Android使用的数据库一般是SQLite 或者 MySql。SQLite的应用非常广泛,从Android到IOS系统使用的都是SQLite数据库,Android 提供了操作SQLite的类库,而MySql则需要通过导入MySql connection 的jar包才能操作数据库。SQLite最大存储容量可以达到2T对于绝大多数的移动应用来说绝对足够了。
今天使用SQLite数据库写了一个CRUD的Demo,这里贴出来供大家参考。
<span style="font-family:Microsoft YaHei;">package com.example.androidexample;
import android.annotation.SuppressLint;
import android.app.Activity;
import android.content.ContentValues;
import android.database.Cursor;
import android.database.SQLException;
import android.database.sqlite.SQLiteDatabase;
import android.os.Bundle;
import android.util.Log;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.Button;
import android.widget.Toast;
public class DatabaseActivity extends Activity {
private Button btnCreateDatabase;
private Button btnCreateDatatable;
private Button btnInsertData;
private Button btnQueryData;
private SQLiteDatabase db;
private static String queryResult;
private static final String dbName = "AndroidDBExample.db";
@Override
protected void onCreate(Bundle savedInstanceState) {
// TODO Auto-generated method stub
super.onCreate(savedInstanceState);
super.setContentView(R.layout.activity_database);
btnCreateDatabase = (Button)super.findViewById(R.id.btnCreateDatabase);
btnCreateDatabase.setOnClickListener(crateDatabaseListener);
btnCreateDatatable = (Button)super.findViewById(R.id.btnCreateDataTable);
btnCreateDatatable.setOnClickListener(crateDatatableListener);
btnInsertData = (Button)super.findViewById(R.id.btnInsertData);
btnInsertData.setOnClickListener(insertDataListener);
btnQueryData = (Button)super.findViewById(R.id.btnQueryData);
btnQueryData.setOnClickListener(queryDataListener);
}
OnClickListener crateDatabaseListener = new OnClickListener(){
@Override
public void onClick(View view) {
// TODO Auto-generated method stub
db = openOrCreateDatabase(dbName,MODE_PRIVATE,null);
Toast.makeText(DatabaseActivity.this,"Database has been created successfully.",Toast.LENGTH_LONG).show();
}
};
OnClickListener crateDatatableListener = new OnClickListener(){
@Override
public void onClick(View arg0) {
// TODO Auto-generated method stub
if(db != null){
String sql = "create table T_UserInfo (UserID int primary key,Username text,Password text)";
try{
db.execSQL("drop table if exists T_UserInfo");
db.execSQL(sql);
Toast.makeText(DatabaseActivity.this,"Datatable has been created successfully.",Toast.LENGTH_LONG).show();
}catch(SQLException ex){
ex.printStackTrace();
}finally{
//db.close();
}
}
}
};
OnClickListener insertDataListener = new OnClickListener(){
@Override
public void onClick(View arg0) {
// TODO Auto-generated method stub
if(db != null){
try{
ContentValues cv = new ContentValues();
cv.put("UserID", 1);
cv.put("Username","Tom");
cv.put("Password","1234abcd");
db.insert("T_UserInfo", null, cv);
//you can insert data by execute sql
//to do
Toast.makeText(DatabaseActivity.this,"Data has been inserted successfully.",Toast.LENGTH_LONG).show();
}catch(SQLException ex){
}finally{
//db.close();
}
}
}
};
OnClickListener queryDataListener = new OnClickListener(){
@Override
public void onClick(View arg0) {
// TODO Auto-generated method stub
if(db!=null){
try{
Cursor cursor = db.rawQuery("select * from T_UserInfo where Username = ?", new String[]{ "Tom" });
while (cursor.moveToNext()) {
int id = cursor.getInt(cursor.getColumnIndex("UserID"));
String name = cursor.getString(cursor.getColumnIndex("Username"));
queryResult = "id=>" + id + ", name=>" + name;
Log.i("queryResult",queryResult );
}
cursor.close();
Toast.makeText(DatabaseActivity.this,queryResult,Toast.LENGTH_LONG).show();
}catch(SQLException ex){
ex.printStackTrace();
}finally{
db.close();
}
}
}
};
}</span>
这个例子中包含了创建数据库的方法,创建表的方法,插入数据的方法及查询数据的方法。当然对数据库的操作还有删除表、删除数据库等等,这些操作跟常规的sqlserver,oracle数据库操作类似,不再赘述,这里只是抛砖引玉,供大家参考。SQLite其实也可以做触发器,索引等。今后有机会再详细介绍。下面是layotu文件:
<span style="font-family:Microsoft YaHei;"><?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:orientation="vertical" >
<Button
android:id="@+id/btnCreateDatabase"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:text="@string/CreateDatabase"/>
<Button
android:id="@+id/btnCreateDataTable"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:text="@string/CreateDataTable"/>
<Button
android:id="@+id/btnInsertData"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:text="@string/InsertData"/>
<Button
android:id="@+id/btnQueryData"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:text="@string/QueryData"/>
</LinearLayout>
</span>
效果如下:Toast显示的数据就是查询到的结果。