原创内容,转载请注明原文网址: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计较时差、日期差总结