Android之SQLite的使用(一)

一、SQLite数据库的使用

SQLite操作API
– Android SDK提供了一系列对数据库进行操作的类和接口。

常用的数据库操作类有:
1.SQLiteOpenHelper类:该类是一个抽象类,用于创建数据库和数据库版本更新。(连接数据库)
2.SQLiteDatabase类: 该类是一个数据库访问类,封装了一系列数据库操作的APl,可以对数据 进行增删改查操作。(操作数据库)
3.Cursor接口:是一个游标接口,在数据库操作中作为返回值,相当于结果集esultSet。(查询)
1、连接SQLite数据库
(1) SQLiteOpenHelper类与数据库的连接
当应用程序需要创建、连接数据库时,需要使用
android.database.sqlite包中的SQLiteOpenHelper的实例能完成创建、连接数据库,管理数据库的版本号(用户可自定义一个版本号)以及更新数据库等工作。
sQLiteOpenHelper类,它是一个抽象类,该类用于创建数据库和数据库版本更新。

创建类,实现SQL iteOpenHelper

public class personhelper extends SQLiteOpenHelper {
//实现抽象类和构造方法,方法
    public personhelper(@Nullable Context context, @Nullable String name, @Nullable SQLiteDatabase.CursorFactory factory, int version) {
        super(context, name, factory, version);
    }
//构造函数(上下文,数据库名,工厂可以为null,版本号从1开始)
    @Override
    public void onCreate(SQLiteDatabase sqLiteDatabase) {
     //数据库第一次创建时被使用
    }
    @Override
    public void onUpgrade(SQLiteDatabase sqLiteDatabase, int i, int i1) {
    //数据库更新时使用
    }
}

(2)关闭数据库用close()方法。

(3)(3)数据库所在目录
系统将应用程序创建的数据库存放在系统提供的数据区内,目录是:ldataldata\应用程序的包名ldatabasesl

2.数据库的常用操作
2、SQLiteDatabase类的两个重要方法

SQLiteDatabase getReadableDatabase()

SQLiteDatabase getWritableDatabase()
SQLiteDatabase提供了许多操作数据库的方法,本节介绍两个常用的重要的方法execSQL()和rawQuery()方法。execSQL()不能是查询语句。

public class MainActivity extends AppCompatActivity {
    personhelper person;
    EditText et;
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        person=new personhelper(this,"personer.db",null,2);
        et=(EditText) findViewById(R.id.et);
        SQLiteDatabase db=person.getWritableDatabase();
        db.execSQL("create table info(_id integer primary key autoincrement,name varchar(20),phone varchar(20))");
    }
//插入
     public void insert(View view){
         SQLiteDatabase db=person.getWritableDatabase();
         //方法一
        db.execSQL("insert into info(name,phone) values ('wangwu1','1119')");
        //方法二
         db.execSQL("insert into info(name,phone) values (?,?)",new String[]{"xue","1110"});
     }
//更新
     public void updata(View v){
         SQLiteDatabase db=person.getWritableDatabase();
         db.execSQL("update info set phone='110' where name='zhangsan'");
     }
//删除
     public void delete(View v){
         SQLiteDatabase db=person.getWritableDatabase();
         //方法一
         db.execSQL("delete from info where name='zhangsan1'");
         //方法二
         db.execSQL("delete from info where name=?",new String[]{et.getText().toString()});
     }

}

(2) rawQuery方法
public Cursor rawQuery (String sql, String[selectionArgs)该方法的第一个参数sql应当是一个SELECT语句,方法的第2个参数可以是null。例如;
sQLiteDatabase db= getWritableDatabase();
String sql =”SELECTFROM book WHRER id =’879-23’AND name = ‘java”;
Cursor cursor =db. rawQuery (sql,null);
列代码等价于前面的代码:
SQLiteDatabase db= getWritableDatabase();
String sql =”SELECT
FROM book WHRER id = ? AND name = ?”;

Stringl selectionArgs ={“879-23″,” java”;
Cursor cursor = db. rawQuery (sql,selectionArgs);

//查找
     public void selet(View v){
         SQLiteDatabase db=person.getReadableDatabase();
         Cursor cursor=db.rawQuery("select * from info",null);//null占位符
         List<personfile> person=new ArrayList<personfile>();//&#x96C6;&#x5408;
         while (cursor.moveToNext()){//&#x8FD4;&#x56DE;&#x4E00;&#x4E2A;boolean&#x7C7B;&#x578B;&#x7684;&#x503C;
           personfile Personfile=new personfile();
           Personfile.setId(cursor.getInt(0));
           Personfile.setName(cursor.getString(1));//&#x5217;&#x7684;&#x7D22;&#x5F15;&#x503C;
           Personfile.setPhone(cursor.getString(2));//cursor.getColumnIndex("phone")&#x53EF;&#x4EE5;&#x8FD4;&#x56DE;&#x5217;&#x7684;&#x7D22;&#x5F15;&#x503C;
            person.add(personfile);
         }
     }</personfile></personfile>

(3)Cursor类
rawQuery方法将查询结果返回到一个Cursor类的实例中,Cursor类似JavaAPI中的ResultSet类。也就是说SQL查询语句对数据库的查询操作将返回一个Cursor对象,Cursor对象是由统一形式的列组织的数据行组成,习惯上称Cursor对象为结果集,
例如,对于Cursor cursor = db.rawQuery(“SELECT*FROM book”);结果集cursor的列数和表goods的列数相同,
而对于Cursor cursor=db.rawQuery(“SELECT name,price FROM book”);结果集cursor只有两列,第一列是name列、第二列是price列。

结果集cursor最初的查询游标在第1行之前,结果集cursor使用
moveToNext()方法将查询游标移到下一数据行,获得一行数据后,结果集cursor可以使用诸如getXxx方法获得字段值(列值),将位置索引传递给getXxx方法的参数即可。
如果moveToNext()方法已经到了结果集cursor的最后一行的后面,moveToNext()方法返回false,否则返回true。另外Cursor还有常用的
moveToPrevious()方法、moveToFirst()方法和moveToLast()方法(用于将查询游标移动到结果集的最后一行,如果结果集为空,该方法返false,否则返回true)。

Original: https://blog.csdn.net/weixin_46255667/article/details/124498091
Author: weixin_46255667
Title: Android之SQLite的使用(一)

原创文章受到原创版权保护。转载请注明出处:https://www.johngo689.com/815284/

转载文章受原作者版权保护。转载请注明原作者出处!

(0)

大家都在看

亲爱的 Coder【最近整理,可免费获取】👉 最新必读书单  | 👏 面试题下载  | 🌎 免费的AI知识星球