Android课堂学习笔记————SQLite

什么是SQLite

SQLite数据库储存是Android系统提供的数据储存方式之一,是专门为嵌入式设备设计的一款轻量级数据库。SQLite占用的资源非常低,在嵌入式设备中,只需要几百K的内存。它支持标准的SQL语法,遵循数据库得到ACID事务。不予要安装,SQLite不需要安装,不需要用户名密码就可以使用。

SQLite的用法

1.创建一个类继新建一个类继承SQLiteOpenHelper
2.实现构造方法
3.重写onCreate方法
4.重写onUpgrade方法
5.实例化SQLiteOpenHelper的句子类对象
6.调用getReadableDatabase方法

创建数据库代码
布局

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:app="http://schemas.android.com/apk/res-auto"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:orientation="vertical"
    tools:context="com.example.zhang.sqlite.MainActivity">

    <Button
        android:id="@+id/bt"
        android:layout_width="match_parent"
        android:layout_height="100dp" />


</LinearLayout>
public class MainActivity extends AppCompatActivity {
    private ass as;
    private Button bt;
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        as = new ass(this, "de", null, 1);//版本号传入2时,表示升级才可调用更新,以此类推,每更新一次自加1
        bt = findViewById(R.id.bt);
        bt.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                as.getWritableDatbase();//创建数据库
            }

     });
    }
}
public class ass extends SQLiteOpenHelper {  //建一个数据库类,继承SQLiteOpenHelper抽象类

private Context context;
    public static  final String CREATE_BOOK="create table book("+"id integer primary key autoincrement," +
            "name text," +                        //创一个数据库表
            "ban text," +
            "nian integer4)";
    public ass(Context context, String name, SQLiteDatabase.CursorFactory factory, int version) {
        super(context, name, factory, version);
        this.context=context;         //通过构造方法引入Activity的类名,用于下面的Toast的提示
    }

    @Override
    public void onCreate(SQLiteDatabase db) {  //onCreate方法只在创建时会调用一次,且仅此一次,除非更
                                                                 //新数据库时会再次调用
        db.execSQL(CREATE_BOOK);              //在onCreate方法中将数据列表创建好
        Toast.makeText(context,"dsfsdsdgsg",Toast.LENGTH_LONG).show();                  
    }

    @Override
    public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {
           db.execSQL("drop table if exists book");   
           onCreate(db);        
           }    //此方法升用于数据库升级更新}

数据库增删改查

public class Main3Activity extends AppCompatActivity {
private EditText e1;
    private EditText e2;
    private EditText e3;
private jichu ji;
    private Button b1;
    private Button b2;
    private Button b3;
    private Button b4;
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main3);
        BinID();
        ji=new jichu(Main3Activity.this,"aqws",null,1);//调用构造方法向数据库传参
        ji.getWritableDatabase();       //创建数据库
        //从这开始实现数据增删改查,每个按钮,实现一个功能
        b1.setOnClickListener(new View.OnClickListener() {//****添加数据***
            @Override
            public void onClick(View v) {
                SQLiteDatabase as=ji.getWritableDatabase();//在这些功能中都要实现SQLiteDatabase对象
                ContentValues values=new ContentValues(); 
                //这里使用的ContentValues,也是可以用Map的,而且Map能用的数据类型更多,那为何还要用ContentValues呢,
                //其实不用Map是为了防止Map向数据库中随意添加各种类型的数据。
                values.put("name",e1.getText().toString());//利用键值向对应项中添加数据
                values.put("namew",e2.getText().toString());
                as.insert("aqws",null,values);     //将数据插入列表中
            //第一个参数为列表名,第三个是ContentValues的对象
            }
        });
        b2.setOnClickListener(new View.OnClickListener() {//*****删除数据***
            @Override
            public void onClick(View v) {
                SQLiteDatabase as=ji.getWritableDatabase();
                as.delete("aqws","name=?",new String[]{e1.getText().toString()});
//第一个参数是列表名,第二个参数是列表元素,可以用and添加多个来进行筛选,例如可写为"name=? and id>?"
//第三个是在new String[]{}的花括号里添加第二参数对应的值,添加顺序要相同

            }
        });
        b3.setOnClickListener(new View.OnClickListener() {//******更改数据*********
            @Override
            public void onClick(View v) {
                SQLiteDatabase as=ji.getWritableDatabase();
                ContentValues values=new ContentValues();
                values.put("name",e2.getText().toString());//获取用来替换的数据
                //    ("name"是数据库字段名
                as.update("aqws",values,"name=?",new String[]{e1.getText().toString()});
                // 第一个参数是列表名,第二个参数是ContentValues对象,第三个参数是列表元素,即字段名,与删除的方法一样可以
        //用and添加多个来进行筛选,例如可写为"name=? and id>?"

//第四个参数是在new String[]{}的花括号里添加第三参数对应的值,注意添加顺序要相同


            }
        });
        b4.setOnClickListener(new View.OnClickListener() {//*****查询数据************
            @Override
            public void onClick(View v) {
                SQLiteDatabase db=ji.getWritableDatabase();
                Cursor cursor=db.query("aqws",null,null,null,null,null,null);//用SQLiteDatabase对象调用游标
                if(cursor.moveToFirst()){          //用游标来浏览数据库里的数据
                    do{
                        String n=cursor.getString(cursor.getColumnIndex("name"));
                        e3.setText(n);

                        Toast.makeText(Main3Activity.this,"dfssgsgsg"+n,Toast.LENGTH_SHORT).show();//用Toast来显示
                        Log.e("hh111q", "onClick: "+n );//用log来显示
                    }while (cursor.moveToNext());//当游标还可以指向下一个时,执行循环
                }cursor.close();  //关掉游标
            }
        });
    }

    private void BinID() {     //绑定ID
        e1=findViewById(R.id.et1);
        e2=findViewById(R.id.et2);
        b1=findViewById(R.id.b1);
        b2=findViewById(R.id.b2);
        b3=findViewById(R.id.b3);
        e3=findViewById(R.id.et3);
        b4=findViewById(R.id.b4);
    }
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值