SQLite数据库编程

来源:互联网 发布:三丰三坐标编程 编辑:程序博客网 时间:2024/06/06 17:59

在安卓中,使用比较多并且比较重要的数据库编程就是SQLite数据库了。SQLite数据库类似与MySqL数据库编程,底层也是SQL语言实现。
首先,SQLite存储有两种方式实现,一种是完全使用SQL语句来实现数据的增删改查操作,一种是使用谷歌官方提供的API来进行增删改查操作。下面就一一介绍这两种方式。
无论使用那种方式进行数据存储,建议使用SQLiteOpenHelper帮助类来创建数据库,不要使用SQLiteDatabase创建数据库。因为使用SQLiteDataBase来操作就显得笨重麻烦。SQLiteDatabase用来对已有数据库进行必要的操作。

使用SQL语句实现数据库操作


一、新建一个类继续自SQLiteOpenHelper
示例代码

public class MySqlitehelper extends SQLiteOpenHelper {    public MySqlitehelper(Context context) {        super(context, "contactinfo1.db", null, 2);        //null 表示使用默认游标工厂    }    @Override//数据库第一次创建时调用    public void onCreate(SQLiteDatabase db) {        String sql="create table number1 (id integer primary key autoincrement , name varchar(20), phone int)";        db.execSQL(sql );        Log.e("数据库表", "创建表成功");    }       /**        * @param oldVersion 就得数据库版本        * @param newVersion 更新后的数据库版本        * @param db 数据库对象,用来对数据进行增删改查等操作        */    @Override//数据库更新时调用,数据库一旦创建成功,需要修改数据库表或者增加表的时候就在此方法实现    public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {    }}

注意:还需要调用下面方法才可以真正创建数据库:

MySqlitehelper my=new MySqlitehelper(this);        my.getWritableDatabase();
接下来就是对数据库数据进行操作:
package com.example.util;import android.content.Context;import android.database.Cursor;import android.database.sqlite.SQLiteDatabase;import android.widget.Toast;public class Contacts {    /**     * 实现联系人的增删改查     */    private MySqlitehelper helper;    public Contacts(Context context){        helper=new MySqlitehelper(context);    }    /**     * 增加一条联系人记录     *      * @param name     *            联系人名字     * @param number     *            联系人号码     */     public void add(String name, int phone) {        SQLiteDatabase db=helper.getWritableDatabase();        String sql="insert into number1 (name,phone) values(?,?)";        db.execSQL(sql, new Object[]{name,phone});        db.close();    }    /**     * 删除一条联系人记录     *      * @param name     *            联系人名字     */    public void delete(String name) {        SQLiteDatabase db=helper.getWritableDatabase();        String sql="delete from number1 where name=?";        db.execSQL(sql, new String[]{name});        db.close();    }    /**     * 修改记录     * @param name 修改的用户名     * @param phone 修改的号码     */    public void update(String name,int phone) {        String sql="update number1 set phone=? where name=?";        SQLiteDatabase db=helper.getWritableDatabase();        db.execSQL(sql, new Object[]{phone,name});        db.close();    }    /**     * 查询记录     * @param name 需要查询的用户     */    public int query(String name) {        int query_phone =0;        SQLiteDatabase db=helper.getReadableDatabase();        String sql="select * from number1 where name=?";        Cursor cursor=db.rawQuery(sql, new String[]{name});        if(cursor.moveToNext()){//一定要判断游标是否可以移动到下一行         query_phone=cursor.getInt(2);//Cursor是从0开始        }        cursor.close();        db.close();        return query_phone;    }    public void deleteAll(){        String sql="delete from number1";        SQLiteDatabase db=helper.getWritableDatabase();        db.execSQL(sql);        db.close();    }}

到此,基本数据操作已经实现,剩下的就是根据具体业务逻辑来使用封装好的方法。

使用谷歌提供的API

同样创建一个帮助类:
## 示例代码 ##

package com.wnl.dao;import com.example.studentinfo.MainActivity;import com.example.studentinfo.R;import android.content.Context;import android.database.sqlite.SQLiteDatabase;import android.database.sqlite.SQLiteOpenHelper;import android.util.Log;import android.view.LayoutInflater;import android.view.View;import android.view.ViewGroup;import android.widget.BaseAdapter;public class DataBaseHelper extends SQLiteOpenHelper {    public DataBaseHelper(Context context) {        super(context, "students.db", null, 1);    }    @Override    public void onCreate(SQLiteDatabase db) {        Log.e("DataBaseHelper", "onCreate");        String sql="create table students1(_id integer primary key autoincrement,"+        " id varchar(20), name varchar(20), number varchar(20) )";        db.execSQL(sql);        Log.e("DataBaseHelper-->onCreate", "成功创建了表");    }    @Override    public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {        Log.e("DataBaseHelper", "onUpgrade");    }

接下来就是使用此类来进行数据操作:

package com.wnl.dao;import java.util.HashMap;import java.util.Map;import android.content.ContentValues;import android.content.Context;import android.database.Cursor;import android.database.sqlite.SQLiteDatabase;public class StudentsIpl {    /**     * 实现学生信息的增删改查     */    private DataBaseHelper dh;    public StudentsIpl(Context context) {        dh = new DataBaseHelper(context);    }    /**     * 增加一条学生记录     *      * @param id     *            学生ID     * @param name     *            学生姓名     * @param number     *            学生号码     */    public long addStudent(String id, String name, String number) {        SQLiteDatabase db = dh.getWritableDatabase();        ContentValues cv = new ContentValues();        cv.put("id", id);        cv.put("name", name);        cv.put("number", number);        long rowid = db.insert("students1", null, cv);        db.close();        return rowid;    }    /**     * 删除全部数据     */    public void deleteAll(){        SQLiteDatabase db=dh.getWritableDatabase();        db.delete("students1", null, null);        db.close();    }    /**     * 删除指定数据     */    public void delete(String name){        SQLiteDatabase db=dh.getWritableDatabase();        db.delete("students1", "name=?", new String[]{name});        db.close();    }    /**查询数据库一共有多少条记录     *      */    public int getTotalInfo(){        SQLiteDatabase db=dh.getReadableDatabase();        Cursor cursor=db.query("students1", null, null, null, null, null, null);        int count=cursor.getCount();        return count;    }/** * 查询指定学生记录,并把记录封装到HashMap中 * @param position 需要查询记录的位置 * @return */    public Map<String, String> queryStudent(int position) {        Map<String, String> map = new HashMap<String, String>();        SQLiteDatabase db = dh.getReadableDatabase();        Cursor cursor = db.query("students1", null, null, null, null, null, null);// 实现全部查询        cursor.moveToPosition(position);        String id=cursor.getString(1);// 取得学生ID        String name=cursor.getString(2);// 取得学生姓名        String number=cursor.getString(3);// 取得学生号码        map.put("id", id);        map.put("name", name);        map.put("number", number);        cursor.close();        dh.close();        return map;    }}

至此,两种方式来进行SQLite编程介绍好了。

0 0
原创粉丝点击