安卓开发连接sqllite用例代码

1、首先肯定是先新建一个空白项目,此过程就省略了,直接从建好项目开始吧。
2、首先介绍一下sqlite是什么,相信做安卓开发的都不陌生,sqllite是一个小型的、开源的、嵌入式关系型数据库。特点在于系统开销小,检索效率很高,所以被广泛应用,同时还支持事物操作,保证了数据的完整性。其次我觉得非常大的一个特点在于它是一个无数据类型的数据库,虽然我们在建表的时候会声明每个字段的数据类型,但是sqlite是不会对其进行检查的。但是作为一个有责任心的程序员我们还是要规范我们的代码以及程序,方便后续的代码的可维护性以及程序的可读性我们都是需要规范代码的。
3、Sqllite数据库的创建
在安卓中给我们提供了一个专门的类,那就是SQLiteOpenHelper类。通过这个类我们可以实现一些相应的回调函数,帮助我们更快的创建和操作数据库。
方法如下:
onCreate()—创建方法
onUpgrade()—数据库升级方法
onOpen()—打开数据库方法
4、直接上一个测试用例
项目结构如图
在这里插入图片描述

 MySqliteHelper类代码如下:
public class MySqliteHelper extends SQLiteOpenHelper {
    public MySqliteHelper(@Nullable Context context, @Nullable String name, @Nullable SQLiteDatabase.CursorFactory factory, int version) {
        super(context, name, factory, version);
    }
    public MySqliteHelper(Context context){
        super(context,Constant.DATABASE_NAME,null,Constant.DATABASE_VERSION);

    }

    @Override
    public void onCreate(SQLiteDatabase sqLiteDatabase) {
        Log.i("","-------onCreate--------");
        String sql="create table "+Constant.TABLE_NAME+" ("+Constant.ID+" Integer primary key,"+Constant.NAME+" varchar(10)) ";
        sqLiteDatabase.execSQL(sql);//执行SQL语句
        Log.i("","-------sql执行成功--------");
}


    @Override
    public void onUpgrade(SQLiteDatabase sqLiteDatabase, int i, int i1) {
        Log.i("","-------onUpgrade--------");

    }

    @Override
    public void onOpen(SQLiteDatabase db) {
        Log.i("","-------onOpen--------");
        super.onOpen(db);
    }
}
 Constant类如下:
public class Constant {
    public static final String DATABASE_NAME = "test.db";//数据库名
    public static final int DATABASE_VERSION =1;//数据库版本号
    public static final String TABLE_NAME = "test";//表名
    public static final String TABLE_NAME2 = "user";//表名
    public static final String ID = "id";
    public static final String NAME = "name";
}
DbManger类如下:
public class DbManger {
     private static MySqliteHelper helper;
     public static MySqliteHelper getIntance(Context context){
          if (helper==null){
              helper=new MySqliteHelper(context);
          }
          return helper;
     }
     public static void execSQL(SQLiteDatabase db,String sql){
          if(db!=null){
               if (sql!=null && !"".equals(sql)){
                    db.execSQL(sql);
               }
          }
     }

     /**
      * 语句查询获得Cursor对象
      * @param db 数据库对象
      * @param sql 查询sql语句
      * @param selectionArgs 查询的条件的占位符
      * @return 查询结果
      */
     public static Cursor selectDataBySql(SQLiteDatabase db, String sql, String[] selectionArgs){
          Cursor cursor=null;
          if(db!=null){
               cursor=db.rawQuery(sql,selectionArgs);
          }
          return cursor;
     }

     /**
      * 将出查询的Cursor对象转换成List集合
      * @param cursor 游标对象
      * @return 集合对象
      */
     public static List<User> cursorToList(Cursor cursor){
           List<User> list=new LinkedList<>();
           //moveToNext() ---返回为true则还有记录,为false则已经读取完记录
           while (cursor.moveToNext()){
//                 int columnIndex=cursor.getColumnIndex(Constant.ID);
//                 int id=cursor.getInt(columnIndex);
                 int id=cursor.getInt((int)cursor.getColumnIndex(Constant.ID));
                 String name=cursor.getString((int)cursor.getColumnIndex(Constant.NAME));
                 User user=new User(id,name);
                 list.add(user);
           }
           return list;
     }
}
User类如下:
package bean;

public class User {
    private int id;
    private String name;

    public User(int id, String name) {
        this.id = id;
        this.name = name;
    }

    @Override
    public String toString() {
        return "id="+this.id+",name="+this.name;
    }

    public int getId() {
        return id;
    }

    public void setId(int id) {
        this.id = id;
    }

    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }
}
MainActivity类如下:
public class MainActivity extends AppCompatActivity {
    private MySqliteHelper helper;
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        helper= DbManger.getIntance(this);
    }

    /**
     * 创建数据库点击事件
     * @param view
     */
    public void createDb(View view) {
        SQLiteDatabase db=helper.getWritableDatabase();
        Toast.makeText(this,"测试!",Toast.LENGTH_LONG).show();
    }

    public void Click(View view) {
        switch (view.getId()){
            case R.id.btn_insert:
                SQLiteDatabase db=helper.getWritableDatabase();
                for (int i=1;i<=30;i++){
                    String sql="insert into "+Constant.TABLE_NAME+" values("+i+",'张三"+i+"')";
                    DbManger.execSQL(db,sql);
                }
                Log.i("","插入数据测试!");
                db.close();
                break;
            case R.id.btn_update:
                db=helper.getWritableDatabase();
                String updateSql="update "+Constant.TABLE_NAME+" set "+Constant.NAME+"='小明' where "+Constant.ID+"=1";
                DbManger.execSQL(db,updateSql);
                Log.i("","修改数据测试!");
                db.close();
                break;
            case R.id.btn_delete:
                db=helper.getWritableDatabase();
                //String deleteSql="delete from "+Constant.TABLE_NAME+" where "+Constant.ID+"=4";
                String deleteSql="delete from "+Constant.TABLE_NAME+"";
                DbManger.execSQL(db,deleteSql);
                Log.i("","删除数据测试!");
                db.close();
                break;
        }

    }

    public void onClick(View view) {
        SimpleDateFormat formatter = new SimpleDateFormat("YYYY:HH:mm:ss");
        Date curDate = new Date(System.currentTimeMillis());
        String str = formatter.format(curDate);//获取当前时间
        switch (view.getId()){
            case R.id.btn_insertApi:
                SQLiteDatabase db=helper.getWritableDatabase();
                ContentValues valuesI=new ContentValues();
                valuesI.put(Constant.ID,6);
                valuesI.put(Constant.NAME,"测试");
                long result=db.insert(Constant.TABLE_NAME,null,valuesI);
                if (result>0){
                    Toast.makeText(this,"插入数据成功!",Toast.LENGTH_LONG).show();
                    Log.i("","Api插入数据成功!"+str);
                }else{
                    Toast.makeText(this,"插入数据失败!",Toast.LENGTH_LONG).show();
                    Log.i("","Api插入数据失败!"+str);
                }
                db.close();
                break;
            case R.id.btn_updateApi:
                db=helper.getWritableDatabase();
                ContentValues valuesU=new ContentValues();
                valuesU.put(Constant.NAME,"王三");
                //int count=db.update(Constant.TABLE_NAME,valuesU,Constant.ID+"=2",null);
                int count=db.update(Constant.TABLE_NAME,valuesU,Constant.ID+"=?",new String[]{"6"});
                if (count>0){
                    Toast.makeText(this,"修改数据成功!",Toast.LENGTH_LONG).show();
                    Log.i("","Api修改数据成功!"+str);
                }else{
                    Toast.makeText(this,"修改数据失败!",Toast.LENGTH_LONG).show();
                    Log.i("","Api修改数据失败!"+str);
                }
                db.close();
                break;
            case R.id.btn_deleteApi:
                db=helper.getWritableDatabase();
                //int countD=db.delete(Constant.TABLE_NAME,Constant.ID+"=?",new String[]{"6"});
                int countD=db.delete(Constant.TABLE_NAME,Constant.ID+"=?",new String[]{"6"});
                if (countD>0){
                    Log.i("","countD:"+countD+" 时间:"+str);
                    Toast.makeText(this,"删除数据成功!",Toast.LENGTH_LONG).show();
                    Log.i("","Api删除数据成功!"+str);
                }else{
                    Toast.makeText(this,"删除数据失败!",Toast.LENGTH_LONG).show();
                    Log.i("","Api删除数据失败!"+str);
                }
                db.close();
                break;
            case R.id.btn_selectApi:
                db=helper.getWritableDatabase();
                String selectSql="select * from "+Constant.TABLE_NAME;
                Cursor cursor=DbManger.selectDataBySql(db,selectSql,null);
                List<User> list=DbManger.cursorToList(cursor);
                for (User u:list){
                    Log.i("",u.toString());
                }
                Toast.makeText(this,"查询数据成功!",Toast.LENGTH_LONG).show();
                db.close();
                break;
        }
    }
}
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    tools:context=".MainActivity"
    android:orientation="vertical"
    >

    <Button
        android:id="@+id/btnCreat"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="创建数据库"
        android:onClick="createDb"
         />
    <Button
        android:id="@+id/btn_insert"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="插入测试数据"
        android:onClick="Click"
        android:layout_marginTop="15dp"
        />
    <Button
        android:id="@+id/btn_update"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="修改数据"
        android:onClick="Click"
        android:layout_marginTop="15dp"
        />
    <Button
        android:id="@+id/btn_delete"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="删除所有数据"
        android:onClick="Click"
        android:layout_marginTop="15dp"
        />

    <Button
        android:id="@+id/btn_insertApi"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="插入数据"
        android:onClick="onClick"
        android:layout_marginTop="15dp"
        />
    <Button
        android:id="@+id/btn_updateApi"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="修改数据"
        android:onClick="onClick"
        android:layout_marginTop="15dp"
        />
    <Button
        android:id="@+id/btn_deleteApi"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="删除数据"
        android:onClick="onClick"
        android:layout_marginTop="15dp"
        />
    <Button
        android:id="@+id/btn_selectApi"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="查询数据"
        android:onClick="onClick"
        android:layout_marginTop="15dp"
        />


</LinearLayout>

步骤讲解请期待我下次无聊有时间再出一个吧。。。

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
一.创建一个DataBaseHelper DataBaseHelper是一个访问SQLite的助类,提供两个方面的功能 1.getReadableDatebase(),getWriteableDatabase()可以获取SQLiteDatabase对象,通过 2.提供了onCreate()和onUpdate()两个回调函数,允许我们常见和升级数据库是进行使用 A、 在SQLiteOpenHelper的子类当中,必须要有的构造函数 B、该函数是在第一次创建数据库的时候执行,实际上是在第一次得到SQLiteDataBase对象的时候onCreate 二、创建一个实体person类并且给字段和封装 三、创建一个业务类对SQL的CRUD操作 1.getWritableDatabase()和getReadableDatabase()的区别 ,两个方法都可以获取一个用于操作数据库SQLiteDatabase实例 2.execSQL(增,删,改都是这个方法)和close();android内部有缓存可关闭也不关闭也行,查询rawQuery是方法 3.在分页有到Cursor(游标)取游标下一个值cursor.moveToNext(),用游标对象接数据 "select * from person limit ?,?" person不能加上where 关键字 4.在删除注意:sb.deleteCharAt(sb.length() - 1); 四、AndroidCRUD业务对SQLite的CRUD操作 1.ContentValues对象的使用 2.android内部insert添加数据的方法,而且values这个不给值也必须要执行,而主键是不是null的其他字段的值是为null 3.insert update query delete 五、单元测试类要注意的 AndroidCRUDService curdService = new AndroidCRUDService(this.getContext()); /* * 注意:getContext必须在我们使用前已经注解进去的,在使用前要实力化,而且是使用后才有上下文 *一般设置为局部对象 */ 六、AndroidManifest.xml的配置 <!-- 配置用户类库android.test.runner测试 --> package jll.sqlitedb; import android.content.Context; import android.database.sqlite.SQLiteDatabase; import android.database.sqlite.SQLiteOpenHelper; import android.database.sqlite.SQLiteDatabase.CursorFactory; /** * *@author Administrator DataBaseHelper是一个访问SQLite的助类,提供两个方面的功能 * 1.getReadableDatebase(),getWriteableDatabase()可以获取SQLiteDatabase对象,通过 * 2.提供了onCreate()和onUpdate()两个回调函数,允许我们常见和升级数据库是进行使用 */ public class DataBaseHelper extends SQLiteOpenHelper { // 给一个默认的SQLite数据库名 private static final String DataBaseName = "SQLite_DB"; private static final int VERSION = 2; // 在SQLiteOpenHelper的子类当中,必须要有的构造函数 public DataBaseHelper(Context context, String name, CursorFacto
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值