本文共 6251 字,大约阅读时间需要 20 分钟。
本来通过简单的实例来实现安卓对SQLite的操作。
package mars.sqlite3;
import mars.sqlite3.db.DatabaseHelper; 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; import android.widget.EditText; import android.widget.TextView; public class SQliteActivity extends Activity { /** Called when the activity is first created. */ private Button createDBButton ; private Button insertDBButton ; private Button updateDBButton ; private Button queryDBButton ; private Button deleteDBButton ; private EditText input_id ; private EditText input_name ; private TextView test ; @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.main); //此处为创建数据库, 通过按钮监听器来实现 createDBButton = (Button) findViewById(R.id.creatDB) ; createDBButton.setOnClickListener(new CreateDBListener()) ; //此处为插入数据到数据库中 insertDBButton = (Button) findViewById(R.id.insert) ; insertDBButton.setOnClickListener(new InsertListener()) ; //此处为更新数据表 updateDBButton = (Button) findViewById(R.id.update) ; updateDBButton.setOnClickListener(new updateListener()) ; //此处为更新数据表 queryDBButton = (Button) findViewById(R.id.query) ; queryDBButton.setOnClickListener(new queryListener()) ; //此处为删除数据内容 deleteDBButton = (Button) findViewById(R.id.delete) ; deleteDBButton.setOnClickListener(new deleteListener()) ; //此处为显示查询结果 test = (TextView) findViewById(R.id.result) ; test.setText("name") ; //此处为添加数据的选项 input_id = (EditText) findViewById(R.id.input_id) ; input_name = (EditText) findViewById(R.id.input_name) ; } class CreateDBListener implements OnClickListener{ @Override public void onClick(View v) {// 此处为调用另外一个类中的方法来创建数据库, 或者直接来创建数据库
String db_name = "test_mars_db_one" ;
DatabaseHelper dbHelper = new DatabaseHelper(SQliteActivity.this, db_name ; SQLiteDatabase db = dbHelper.getReadableDatabase() ; } } class InsertListener implements OnClickListener{ public void onClick(View v){ //生成一个ContentValues对象 ContentValues values = new ContentValues() ; values.put("id", input_id.getText().toString()) ; values.put("name", input_name.getText().toString()) ; DatabaseHelper dbHelper = new DatabaseHelper(SQliteActivity.this, "test_mars_db_one") ; SQLiteDatabase db = dbHelper.getWritableDatabase() ; //调用insert方法, 就可以将数据插入到数据库中 db.insert("user", null, values) ; } } class updateListener implements OnClickListener{ @Override public void onClick(View v) { // 此处为更新数据内容 DatabaseHelper dbHelper = new DatabaseHelper(SQliteActivity.this, "test_mars_db_one") ; SQLiteDatabase db = dbHelper.getWritableDatabase() ; ContentValues values = new ContentValues() ; values.put("name", "Two china") ; //第一个参数为要更新的表名 //第二个参数为一个ContentValues对象 //第三个参数是where语句 db.update("user", values, "id=?", new String[]{"2"}) ; } } class queryListener implements OnClickListener{ @Override public void onClick(View v) { // 此处为查询数据内容, 并用到cursor来实现 DatabaseHelper dbHelper = new DatabaseHelper(SQliteActivity.this, "test_mars_db_one") ; SQLiteDatabase db = dbHelper.getWritableDatabase() ; Cursor cursor = db.query("user", new String[]{"id","name"}, "id=?", new String[]{"2"},null,null,null,null) ; while( cursor.moveToNext()){ String name = cursor.getString(cursor.getColumnIndex("name")) ; System.out.print("query---> " + name) ; //name += name ; test.setText(name) ; } } } class deleteListener implements OnClickListener{public void onClick(View v) {
//此处为实现删除数据
DatabaseHelper dbHelper = new DatabaseHelper(SQliteActivity.this, "test_mars_db_one") ;SQLiteDatabase db = dbHelper.getWritableDatabase() ;
//删除特定条件的数据
//db.delete("user","id=?",new String[]{"2"});//删除所有数据
db.delete("user",null,null);
} }}
DatabaseHelper.class , 将其独立出来, 便于管理
package mars.sqlite3.db;
import android.content.Context; import android.database.sqlite.SQLiteDatabase; import android.database.sqlite.SQLiteDatabase.CursorFactory; import android.database.sqlite.SQLiteOpenHelper; public class DatabaseHelper extends SQLiteOpenHelper{ private static final int VERSION = 1 ; public DatabaseHelper(Context context, String name, CursorFactory factory, int version) { //必须通过super调用父类当中的构造函数 super(context, name, factory, version); // TODO Auto-generated constructor stub } public DatabaseHelper(Context context, String name){ this(context, name, VERSION) ; } public DatabaseHelper(Context context, String name, int version){ this(context, name,null, version) ; } //该函数是在第一次创建数据库的时候执行, 实际上是在第一次得到SQLiteDatabase对象的时候执行 @Override public void onCreate(SQLiteDatabase db) { // TODO Auto-generated method stub System.out.print("Create a Database. ") ; //execSQL方法用于执行SQL语句 db.execSQL("create table user(id int,name varchar(20))") ; } @Override public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) { // TODO Auto-generated method stub System.out.print("Update a Database. ") ; } } PS:1. SQLiteDatabase(android.database.sqlite.SQLiteDatabase)
关于操作数据库的工作(增、删、查、改)都在这个类里 execSQL(sql): 执行SQL语句,用这个方法+SQL语句可以非常方便的执行增、删、查、改 除此之外,Android还提供了功过方法实现增、删、查、改 long insert(TABLE_NAME, null, contentValues)添加记录 int delete(TABLE_NAME, where, whereValue)删除记录 int update(TABLE_NAME, contentValues, where, whereValue) 更新记录 Cursor query(TABLE_NAME, null, null, null, null, null, null) 查询记录 除此之外,还有很多方法,如:beginTransaction()开始事务、endTransaction()结束事务...有兴趣的可以自己看api,这里就不多赘述了2. Cursor(android.database.Cursor)
游标(接口),这个很熟悉了吧,Cursor里的方法非常多,常用的有: boolean moveToPosition(position)将指针移动到某记录 getColumnIndex(Contacts.People.NAME)按列名获取id int getCount()获取记录总数 boolean requery()重新查询 boolean isAfterLast()指针是否在末尾 boolean isBeforeFirst()时候是开始位置 boolean isFirst()是否是第一条记录 boolean isLast()是否是最后一条记录 boolean moveToFirst()、 boolean moveToLast()、 boolean moveToNext()同moveToPosition(position)3. db.query(
tbname, new String[]{"_id","tname","tage","ttel","taddr"}, null, null, null, null, "_id desc"); } 关于db.query方法的参数,有很多,为了防止大家弄乱,我简单说一下 参数1:表名 参数2:返回数据包含的列信息,String数组里放的都是列名 参数3:相当于sql里的where,sql里where后写的内容放到这就行了,例如:tage>? 参数4:如果你在参数3里写了?(知道我为什么写tage>?了吧),那个这里就是代替?的值 接上例:new String[]{"30"} 参数5:分组,不解释了,不想分组就传null 参数6:having,想不起来的看看SQL 参数7:orderBy排序可以参考: http://android.tgbus.com/Android/tutorial/201103/346179.shtml
转载地址:http://szjci.baihongyu.com/