Android四大组件-SQLite数据库操作

本文介绍了在Android应用中使用SQLite数据库的方法,包括直接通过SQLiteDatabase创建数据库和使用DBOpenHelper类来辅助创建数据库的过程。文中提供了具体的代码示例,展示了如何执行插入、查询、更新和删除等基本操作。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

Android中操作SQLite数据库有两种方法

第一种

利用SQLiteDatabase创建

//创建一个叫mytest.db的数据库,可以不用加后缀.db,这样写考虑到导入到电脑查看方便
SQLiteDatabase db= openOrCreateDatabase("mytest.db",MODE_PRIVATE,null);

第二种

利用DBOpenHelper来创建
首先先写一个DBOpenHelper类
代码如下

import android.content.Context;
import android.database.sqlite.SQLiteDatabase;
import android.database.sqlite.SQLiteOpenHelper;

/**
 * Created by TR on 2016/11/11.
 */

public class DBOpenHelper extends SQLiteOpenHelper {
    private String name;
    public DBOpenHelper(Context context, String name) {
        super(context, name, null, 1);
        this.name=name;
    }
    public DBOpenHelper(Context context, String name, SQLiteDatabase.CursorFactory factory, int version) {
        super(context, name, factory, version);
    }

    @Override
    public void onCreate(SQLiteDatabase sqLiteDatabase) {
        //在这里写创建数据库语言,name就是数据名名字,(括号这里是属性)
        sqLiteDatabase.execSQL("create table if not exists "+this.name+"(_id integer primary key autoincrement,name text not null,age integer not null,sex text not null)");

       // super.getDatabaseName();
    }

    @Override
    public void onUpgrade(SQLiteDatabase sqLiteDatabase, int i, int i1) {

    }   
}

数据库操作

利用execSQL(sql);执行相应的sql语句进行操作
SQLiteDatabase db= openOrCreateDatabase("mytest.db",MODE_PRIVATE,null);
        db.execSQL("create table if not exists usertd(_id integer primary key autoincrement,name text not null,age integer not null,sex text not null)");
        db.execSQL("insert into usertd(name,age,sex)values('张三',20,'man')");
        db.execSQL("insert into usertd(name,age,sex)values('李四',20,'man')");
        db.execSQL("insert into usertd(name,age,sex)values('王五',20,'man')");
//查询
        Cursor cursor=db.rawQuery("select * from usertd",null);
        ContentValues values=new ContentValues();
        values.put("name","何华");
        values.put("sex","男");
        values.put("age",20);
        db.insert(TABLENAME,null,values);
        if(cursor!=null){
            while(cursor.moveToNext()){
                Log.i("info","_id"+cursor.getInt(cursor.getColumnIndex("_id")));
                Log.i("info","name"+cursor.getString(cursor.getColumnIndex("name")));
                Log.i("info","sex"+cursor.getString(cursor.getColumnIndex("sex")));
                Log.i("info","age"+cursor.getInt(cursor.getColumnIndex("age")));
                Log.i("info","!!!!!!!!!!!!!!!!1");
            }
            cursor.close();
    cursor.close();
  }

利用insert()、delete()、update()来执行相应的sql语句进行操作

values.clear();
values.put("sex","女");
db.update(TABLENAME,values,"_id>?",new String[]{"3"});
db.delete(TABLENAME,"name like ?",new String[]{"%三%"});
Cursor c= db.query(TABLENAME,null,"_id>?",new String[]{"0"},null,null,"name");
//db.query()
Log.i("info","lllllll-----------");
if(c!=null){
while(c.moveToNext()){
Log.i("info","_id"+c.getInt(c.getColumnIndex("_id")));
Log.i("info","name"+c.getString(c.getColumnIndex("name")));
Log.i("info","sex"+c.getString(c.getColumnIndex("sex")));
Log.i("info","age"+c.getInt(c.getColumnIndex("age")));
Log.i("info","!!!!!!!!!!!!!!!!1");
}
c.close();
}
DBOpenHelper helper =new DBOpenHelper(MainActivity.this,"stu_db");
SQLiteDatabase dbb= helper.getWritableDatabase();
db.close();
//db.isOpen();
Cursor cc= dbb.rawQuery("select * from stu_db",null);
if(cc!=null){
while (cc.moveToNext()){
Log.i("info","rrrrrrrrrrrrrrrrrrrrrrrrrrr");
Log.i("info","_id"+cc.getInt(cc.getColumnIndex("_id")));
Log.i("info","name"+cc.getString(cc.getColumnIndex("name")));
Log.i("info","sex"+cc.getString(cc.getColumnIndex("sex")));
Log.i("info","age"+cc.getInt(cc.getColumnIndex("age")));
Log.i("info","rrrrrrrrrrrrrrrrrrrrrrrrrrr");
}
}

完整代码

MainActivity.java

package com.example.tr.sqlite;
import android.content.ContentValues;
import android.database.Cursor;
import android.database.sqlite.SQLiteDatabase;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.util.Log;

public class MainActivity extends AppCompatActivity {
    public static final String TABLENAME ="usertd";
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        //每个程序都有一个数据,互不干扰
        //创建数据库并打开
        SQLiteDatabase db= openOrCreateDatabase("mytest.db",MODE_PRIVATE,null);
        db.execSQL("create table if not exists usertd(_id integer primary key autoincrement,name text not null,age integer not null,sex text not null)");
        db.execSQL("insert into usertd(name,age,sex)values('张三',20,'man')");
        db.execSQL("insert into usertd(name,age,sex)values('李四',20,'man')");
        db.execSQL("insert into usertd(name,age,sex)values('王五',20,'man')");
//查询
        Cursor cursor=db.rawQuery("select * from usertd",null);
        ContentValues values=new ContentValues();
        values.put("name","何华");
        values.put("sex","男");
        values.put("age",20);
        db.insert(TABLENAME,null,values);
        if(cursor!=null){
            while(cursor.moveToNext()){
                Log.i("info","_id"+cursor.getInt(cursor.getColumnIndex("_id")));
                Log.i("info","name"+cursor.getString(cursor.getColumnIndex("name")));
                Log.i("info","sex"+cursor.getString(cursor.getColumnIndex("sex")));
                Log.i("info","age"+cursor.getInt(cursor.getColumnIndex("age")));
                Log.i("info","!!!!!!!!!!!!!!!!1");
            }
            cursor.close();
        }
        values.clear();
        values.put("sex","女");
        db.update(TABLENAME,values,"_id>?",new String[]{"3"});
        db.delete(TABLENAME,"name like ?",new String[]{"%三%"});
        Cursor c= db.query(TABLENAME,null,"_id>?",new String[]{"0"},null,null,"name");
        //db.query()
        Log.i("info","lllllll-----------");
        if(c!=null){
            while(c.moveToNext()){
                Log.i("info","_id"+c.getInt(c.getColumnIndex("_id")));
                Log.i("info","name"+c.getString(c.getColumnIndex("name")));
                Log.i("info","sex"+c.getString(c.getColumnIndex("sex")));
                Log.i("info","age"+c.getInt(c.getColumnIndex("age")));
                Log.i("info","!!!!!!!!!!!!!!!!1");
            }
            c.close();
        }
        DBOpenHelper helper =new DBOpenHelper(MainActivity.this,"stu_db");
       SQLiteDatabase dbb= helper.getWritableDatabase();
        db.close();
        //db.isOpen();
       Cursor cc= dbb.rawQuery("select * from stu_db",null);
        if(cc!=null){
            while (cc.moveToNext()){
                Log.i("info","rrrrrrrrrrrrrrrrrrrrrrrrrrr");
                Log.i("info","_id"+cc.getInt(cc.getColumnIndex("_id")));
                Log.i("info","name"+cc.getString(cc.getColumnIndex("name")));
                Log.i("info","sex"+cc.getString(cc.getColumnIndex("sex")));
                Log.i("info","age"+cc.getInt(cc.getColumnIndex("age")));
                Log.i("info ","rrrrrrrrrrrrrrrrrrrrrrrrrrr");
            }
        }
    }
}
DBOpenHelper.java
package com.example.tr.sqlite;

import android.content.Context;
import android.database.sqlite.SQLiteDatabase;
import android.database.sqlite.SQLiteOpenHelper;

/**
 * Created by TR on 2016/11/11.
 */

public class DBOpenHelper extends SQLiteOpenHelper {
    private String name;
    public DBOpenHelper(Context context, String name) {
        super(context, name, null, 1);
        this.name=name;
    }
    public DBOpenHelper(Context context, String name, SQLiteDatabase.CursorFactory factory, int version) {
        super(context, name, factory, version);
    }

    @Override
 }

@Override
public void onCreate(SQLiteDatabase sqLiteDatabase) {
    sqLiteDatabase.execSQL("create table if not exists "+this.name+"(_id integer primary key autoincrement,name text not null,age integer not null,sex text not null)");
    sqLiteDatabase.execSQL("insert into "+this.name+"(name,age,sex)values('test',20,'notclear')");
   // super.getDatabaseName();
 @Override
    public void onUpgrade(SQLiteDatabase sqLiteDatabase, int i, int i1) {

    }
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值