• QQ
  • nahooten@sina.com
  • 常州市九洲新世界花苑15-2

Android

SQLite数据库存储(建、增、改、删查)

原创内容,转载请注明原文网址:http://homeqin.cn/a/wenzhangboke/jishutiandi/Android/2019/0802/590.html

 
甚么是SQLite?
SQLite是一款轻量级的关系型数据库
 
SQLite的内存?
运行速度最快,平时只必要几百kB的内存就足够了
 
建立数据库
为了让我们App开发培训可以或许加倍利便地经管数据库,特地供应了SQLiteOpenHelper 类 通过这个类,我们可以举行数据库的建立和晋级。
 
SQLiteOpenHelper是一个空洞类 以是我们要建立一个类 来继承它, 
在SQLiteOpenHelper中 ,有两个空洞要领。分别是Oncreate() 和OnUpgrade(), 
必须重写这些要领,去完成建立和晋级数据库的逻辑。
 
除此这两个要领,SQLiteOpenHelper 另有两个实例方:
getReadableDatabase()  getWritableDatabase()
1
2
这个两个都可以建立大概翻开一个现有的数据库,唯独差别的是 当磁盘满的时候:
 
getReadableDatabase() 回笼的工具是只读的方式。 
getWritableDatabase() 出现异常
 
在建立数据库之前,对数据库的数据类型也要简单打听一下:
integet: 整型 
real : 浮点型 
blob : 二进制 
text: 文本类型 
primary key 将id 列设为主键,并用autoincrement环节字显露id列是自增进的。
 
新建一个类 继承SQLiteOpenHelper 代码以下:
 
package com.example.myapplication15;import android.content.Context;import android.database.sqlite.SQLiteDatabase;import android.database.sqlite.SQLiteOpenHelper;import android.widget.Toast;public class MySQLiteHelper extends SQLiteOpenHelper {
    private String createSQL = "create table student(" +            "id integer primary key  autoincrement not null ," +            "age integer ," +            "name text not null ," +            "score real )";    private Context context;    public MySQLiteHelper(Context context, String name, SQLiteDatabase.CursorFactory factory, int version) {        super(context, name, factory, version);        this.context = context;
 
    }    @Override
    public void onCreate(SQLiteDatabase sqLiteDatabase) {
                  sqLiteDatabase.execSQL(createSQL);
                  Toast.makeText(context,"胜利",Toast.LENGTH_SHORT).show();
 
 
    }    @Override
    public void onUpgrade(SQLiteDatabase sqLiteDatabase, int i, int i1) {
 
    }
}
 
我们常州网站开发培训把建表语句定义成了一个字符串常量,而后在onCreate()要领中挪用execSQL()要领实行这条建表语句,并弹出一个Tost提示建立胜利。
 
结果图: 
这里写图片描述
 
建立胜利后 ,我举行增加内容,而后,举行盘问: 
代码演示:
 
package com.example.myapplication15;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;import android.view.View;import android.widget.Button;import android.widget.EditText;public class MainActivity extends AppCompatActivity implements View.OnClickListener {
    private    MySQLiteHelper myHelper;    private EditText ed;    private Button charu;    private Button chaxun;    private Button qqqq;    private SQLiteDatabase sqldb;    @Override
    protected void onCreate(Bundle savedInstanceState) {        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        binID();
        myHelper = new MySQLiteHelper(this, "student.db", null, 2);
    }    private void binID() {
        ed = findViewById(R.id.ed);
        qqqq=findViewById(R.id.mina_qqqq);
        charu = findViewById(R.id.button_charu);
        chaxun = findViewById(R.id.button_chaxun);
 
        charu.setOnClickListener(this);
        chaxun.setOnClickListener(this);
        qqqq.setOnClickListener(this);
    }    @Override
    public void onClick(View view) {        switch (view.getId()) {            case R.id.mina_qqqq:
                myHelper.getWritableDatabase();                break;            case R.id.button_charu:                //获取SQLiteDatabase工具,读写模式
                sqldb = myHelper.getWritableDatabase();                //ContentValues相似HashMap,差别是ContentValues只能存简单数据类型,不行存工具
                ContentValues values = new ContentValues();
                values.put("name", ed.getText().toString());
                sqldb.insert("student", null, values);                break;            case R.id.button_chaxun:
                SQLiteDatabase  sqldb = myHelper.getReadableDatabase();                //建立游标
                Cursor mcursor = sqldb.query("student",null,null,null, null, null, null);                //游标置顶
                if (mcursor.moveToFirst()) {                    //遍历
                    do {
                        String name = mcursor.getString(mcursor.getColumnIndex("name"));
                        Log.e("MainActivity", "onClick: " + name);
                    } while (mcursor.moveToNext());
                }
                mcursor.close();                break;
 
    }}
 
 
}
 
 
<?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.myapplication15.MainActivity"><Button    android:text="建立企业培训"
    android:id="@+id/mina_qqqq"
    android:layout_width="match_parent"
    android:layout_height="50dp" />
 
    <EditText        android:id="@+id/ed"
        android:layout_width="match_parent"
        android:layout_height="50dp" />
    <Button        android:layout_marginTop="25dp"
        android:text="插入"
        android:id="@+id/button_charu"
        android:layout_width="match_parent"
        android:layout_height="50dp" />
    <Button        android:id="@+id/button_chaxun"
        android:layout_marginTop="25dp"
        android:text="盘问"
        android:layout_width="match_parent"
        android:layout_height="50dp" /></LinearLayout>
 
`结果图“
 
这里写图片描述 
这里写图片描述
 
可以看到当我们输入“44444” 点击插入后,点击盘问。会发现 控制台打印了却果。
 
除增加和盘问以外。,我们常州软件技术培训还可以举行数据库的 点窜和删除:
 
 case  R.id.button_xiugai:
                String name=ed.getText().toString();
                String newname=ed_xiugai.getText().toString();
                SQLiteDatabase sqLiteDatabase4=myHelper.getWritableDatabase();
                ContentValues values1=new ContentValues();
                values1.put("name",newname);
                sqLiteDatabase4.update("student",values1,"name=? and id>?",new String[]{name,"5"});
                break;
 
 
            case  R.id.button_shanchu:
                SQLiteDatabase sqLiteDatabase3=myHelper.getReadableDatabase();
                String name1=ed.getText().toString();
                sqLiteDatabase3.delete("student","name=?",new String[]{name1});
                break;
 
一首先我增加两个123 后 举行点窜 
这里写图片描述
 
点窜的后果为这里写图片描述 
我们要是想要删除: 
这里写图片描述
点击删除 后盘问,发现惟有12 而123则消散了:
 

上篇:上一篇:Android Service_AlarmManager组合坑
下篇:下一篇:Java计较时差、日期差总结