Android学习(24)SQLite_数据库的使用
SQLite数据库介绍:
- 轻量级:SQLite是进程内的数据库引擎,因此不存在数据库的客户端和服务器。使用SQLite一般只需要带上它的一个动态库,就可以享受它的全部功能。而且动态库的尺寸也相当小。
- 独立性:SQLite数据库的核心引擎本身不依赖第三方软件,使用它也不需要“安装”,所以在使用的时候能够省去不少麻烦
- 隔离性:SQLite数据库中所有的信息都包含在一个文件内,方便管理和维护
- 跨平台:SQLite数据库支持大部分操作系统,除了我们在电脑上使用的操作系统外,很多手机操作系统同样可以运行。
- 多语言接口:SQLite数据库支持很多语言编程接口,比如C\C++,JAVA,Python等。
- 安全性:SQLite数据库通过数据库级上的独占性和共享锁来实现独立事务处理。
1.新建一个MySql.java类,继承SQLiteOpenHelper
MySql.java
public class MySql extends SQLiteOpenHelper {
//表名
public static final String TABLE_NAME = "user";
//ID,固定的格式
public static final String _ID= "_id";
//姓名
public static final String NAME = "name";
//性别
public static final String SEX = "sex";
//构造函数
public MySql(Context context) {
super(context,"database",null,1 );
}
@Override
public void onCreate(SQLiteDatabase db) {
//创建表
db.execSQL("CREATE TABLE " + TABLE_NAME + " (" +
_ID + " INTEGER PRIMARY KEY AUTOINCREMENT," +
NAME + " TEXT NOT NULL,"+
SEX + " TEXT NOT NULL) ");
}
@Override
public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {
}
}
2.在xml文件中添加和显示数据
activity_main.xml
<?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">
<EditText
android:id="@+id/etName"
android:layout_width="match_parent"
android:layout_height="wrap_content" />
<EditText
android:id="@+id/etSex"
android:layout_width="match_parent"
android:layout_height="wrap_content" />
<Button
android:id="@+id/btnOk"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:text="提交"/>
<ListView
android:id="@android:id/list"
android:layout_width="match_parent"
android:layout_height="wrap_content">
</ListView>
</LinearLayout>
3.设置ListView的布局
call.xml
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical">
<TextView
android:id="@+id/name"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="NAME"/>
<TextView
android:id="@+id/sex"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="SEX"/>
</LinearLayout>
4.在MainAcitivity.java中使用数据库
MainAcitivity.java
public class MainActivity extends ListActivity implements AdapterView.OnItemLongClickListener,View.OnClickListener{
private EditText name,sex;
private Button btn;
//实例化MySql
private MySql mySql;
//通过SQLiteDatabase来读取和写入数据
private SQLiteDatabase dbRead,dbWrite;
//数据库适配器
private SimpleCursorAdapter adapter;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
btn = (Button)findViewById(R.id.btnOk);
name = (EditText)findViewById(R.id.etName);
sex = (EditText)findViewById(R.id.etSex);
mySql = new MySql(this);
//按钮点击监听
btn.setOnClickListener(this);
//实现数据库的读写
dbRead = mySql.getReadableDatabase();
dbWrite = mySql.getWritableDatabase();
//适配器加载视图
adapter = new SimpleCursorAdapter(this,R.layout.call,null,
new String[]{MySql.NAME,MySql.SEX},new int[] {R.id.name,R.id.sex});
//绑定适配器
setListAdapter(adapter);
//长按监听
getListView().setOnItemLongClickListener(this);
//添加数据
/*ContentValues cv = new ContentValues();
cv.put("name", "张三");
cv.put("sex", "男");
dbWrite.insert(MySql.TABLE_NAME,null,cv);*/
select();
}
//查询数据库方法
public void select() {
//读取数据
Cursor cursor = dbRead.query(MySql.TABLE_NAME,null,null,null,null,null,null);
//刷新UI
adapter.changeCursor(cursor);
}
//点击添加方法
@Override
public void onClick(View v) {
ContentValues cv = new ContentValues();
cv.put(MySql.NAME, name.getText().toString());
cv.put(MySql.SEX, sex.getText().toString());
//添加到数据库中
dbWrite.insert(MySql.TABLE_NAME, null,cv);
//查询数据
select();
}
//长按删除
@Override
public boolean onItemLongClick(AdapterView<?> parent, View view, int position, long id) {
//获取当前点击的视图
TextView tv = (TextView)view.findViewById(R.id.name);
//接受当前点击的视图的内容
String name = tv.getText().toString().trim();
System.out.print(name);
//从数据库中删除数据
dbWrite.execSQL("delete from user where name = ?",new String[] {name});
select();
return true;
}
}
声明:
1.知识点来源于《网易云课堂》——《Android基础视频教程》
2.本文只用于本人自身学习记录,如有侵权,请立即通知本人更改或删除