Android开发之——SQLite使用方法

本来通过简单的实例来实现安卓对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

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值