目   录

(壹)SQLite数据库简介

67a29b37871d0d7cbc9ab94ab75e26a8.png

(贰)数据库的创建

ba7d754f43c0b8254ab257a3baf1c107.png

(叁)数据库的使用

3de315062e45770469068eca4cd26be0.png

3.1、SQlite的基本操作

3.1.1、添加数据

0f9837bc2b58857e236685d4c8ac5625.png

3.1.2、修改数据

aafd06b2ef1674d3a230c1085ee199d4.png

3.1.3、查询数据

39a424878b9ec3cd3c246374bb92fe2c.png

3.1.4、删除数据

67035c04f9a1552aaf43c494a4aac53c.png

3.2、SQLite中的事务

79176076dbab900282d2d50f1149192a.png

3.3、实战演练——绿豆通讯录

实现步骤 and 技术要点

ad2f31b223c1cdc4f4c0136ee05e03bb.png

可用 “Gitee” 直接 拷贝 到 “Android Studio” 中。

73f224e382d2e8e1ea5750d3d877efa5.png

注意:添加数据后,重新启动Android模拟器,数据会保留(数据仍可被查询到)。

activity_main.xml

xmlns:tools="http://schemas.android.com/tools"

android:layout_width="match_parent"

android:layout_height="match_parent"

android:background="@drawable/bg"

android:paddingLeft="16dp"

android:paddingTop="16dp"

android:paddingRight="16dp"

android:paddingBottom="16dp"

tools:context=".MainActivity">

android:id="@+id/ll_name"

android:layout_width="match_parent"

android:layout_height="wrap_content"

android:layout_above="@+id/ll_phone"

android:layout_alignStart="@+id/ll_btn"

android:layout_alignLeft="@+id/ll_btn">

android:layout_width="wrap_content"

android:layout_height="wrap_content"

android:text="姓 名 :"

android:textSize="18sp" />

android:id="@+id/et_name"

android:layout_width="match_parent"

android:layout_height="wrap_content"

android:hint="请输入姓名"

android:textSize="16sp" />

android:id="@+id/ll_phone"

android:layout_width="match_parent"

android:layout_height="wrap_content"

android:layout_above="@+id/ll_btn"

android:layout_alignStart="@+id/ll_name"

android:layout_alignLeft="@+id/ll_name"

android:layout_marginBottom="10dp">

android:layout_width="wrap_content"

android:layout_height="wrap_content"

android:text="电 话 :"

android:textSize="18sp" />

android:id="@+id/et_phone"

android:layout_width="match_parent"

android:layout_height="wrap_content"

android:hint="请输入手机号码"

android:textSize="16sp" />

android:id="@+id/ll_btn"

android:layout_width="match_parent"

android:layout_height="wrap_content"

android:layout_centerVertical="true">

android:id="@+id/btn_add"

android:layout_width="0dp"

android:layout_height="wrap_content"

android:layout_marginRight="2dp"

android:layout_weight="1"

android:background="#B9B9FF"

android:text="添加"

android:textSize="18sp" />

android:id="@+id/btn_query"

android:layout_width="0dp"

android:layout_height="wrap_content"

android:layout_marginRight="2dp"

android:layout_weight="1"

android:background="#DCB5FF"

android:text="查询"

android:textSize="18sp" />

android:id="@+id/btn_update"

android:layout_width="0dp"

android:layout_height="wrap_content"

android:layout_marginRight="2dp"

android:layout_weight="1"

android:background="#E6CAFF"

android:text="修改"

android:textSize="18sp" />

android:id="@+id/btn_delete"

android:layout_width="0dp"

android:layout_height="wrap_content"

android:layout_weight="1"

android:background="#ACD6FF"

android:text="删除"

android:textSize="18sp" />

android:id="@+id/tv_show"

android:layout_width="match_parent"

android:layout_height="wrap_content"

android:layout_below="@+id/ll_btn"

android:layout_marginTop="25dp"

android:textSize="20sp" />

MyHelper.java

a7226a03645f210ce52ae50971e9c2d5.png

package cn.lwx.directory;

import android.content.Context;

import android.database.sqlite.SQLiteDatabase;

import android.database.sqlite.SQLiteOpenHelper;

class MyHelper extends SQLiteOpenHelper {

public MyHelper(Context context) {

super(context, "itcast.db", null, 1);

}

@Override

public void onCreate(SQLiteDatabase db) {

db.execSQL("CREATE TABLE information(_id INTEGER PRIMARY KEY AUTOINCREMENT, name VARCHAR(20), phone VARCHAR(20))");

}

@Override

public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {

}

}

MainActivity.java

package cn.lwx.directory;

import androidx.appcompat.app.AppCompatActivity;

import android.content.ContentValues;

import android.database.Cursor;

import android.database.sqlite.SQLiteDatabase;

import android.os.Bundle;

import android.view.View;

import android.widget.Button;

import android.widget.EditText;

import android.widget.TextView;

import android.widget.Toast;

public class MainActivity extends AppCompatActivity implements View.OnClickListener {

MyHelper myHelper;

private EditText mEtName;

private EditText mEtPhone;

private TextView mTvShow;

private Button mBtnAdd;

private Button mBtnQuery;

private Button mBtnUpdate;

private Button mBtnDelete;

@Override

protected void onCreate(Bundle savedInstanceState) {

super.onCreate(savedInstanceState);

setContentView(R.layout.activity_main);

myHelper = new MyHelper(this);

init();//初始化控件

}

private void init() {

mEtName = (EditText) findViewById(R.id.et_name);

mEtPhone = (EditText) findViewById(R.id.et_phone);

mTvShow = (TextView) findViewById(R.id.tv_show);

mBtnAdd = (Button) findViewById(R.id.btn_add);

mBtnQuery = (Button) findViewById(R.id.btn_query);

mBtnUpdate = (Button) findViewById(R.id.btn_update);

mBtnDelete = (Button) findViewById(R.id.btn_delete);

mBtnAdd.setOnClickListener(this);

mBtnQuery.setOnClickListener(this);

mBtnUpdate.setOnClickListener(this);

mBtnDelete.setOnClickListener(this);

}

@Override

public void onClick(View v) {

String name;

String phone;

SQLiteDatabase db;

ContentValues values;

switch (v.getId()) {

case R.id.btn_add: //添加数据

name = mEtName.getText().toString();

phone = mEtPhone.getText().toString();

db = myHelper.getWritableDatabase();//获取可读写SQLiteDatabse对象

values = new ContentValues(); // 创建ContentValues对象

values.put("name", name); // 将数据添加到ContentValues对象

values.put("phone", phone);

db.insert("information", null, values);

Toast.makeText(this, "信息已添加", Toast.LENGTH_SHORT).show();

db.close();

break;

case R.id.btn_query: //查询数据

db = myHelper.getReadableDatabase();

Cursor cursor = db.query("information", null, null, null, null,

null, null);

if (cursor.getCount() == 0) {

mTvShow.setText("");

Toast.makeText(this, "没有数据", Toast.LENGTH_SHORT).show();

} else {

cursor.moveToFirst();

mTvShow.setText("Name : " + cursor.getString(1) +

" ;Tel : " + cursor.getString(2));

}

while (cursor.moveToNext()) {

mTvShow.append("\n" + "Name : " + cursor.getString(1) +

" ;Tel : " + cursor.getString(2));

}

cursor.close();

db.close();

break;

case R.id.btn_update: //修改数据

db = myHelper.getWritableDatabase();

values = new ContentValues(); // 要修改的数据

values.put("phone", phone = mEtPhone.getText().toString());//更新phone字段

//values.put("name", name = mEtName.getText().toString());//更新name字段

db.update("information", values, "name=?",

new String[]{mEtName.getText().toString()}); // 更新并得到行数

Toast.makeText(this, "信息已修改", Toast.LENGTH_SHORT).show();

db.close();

break;

case R.id.btn_delete: //删除数据

db = myHelper.getWritableDatabase();

db.delete("information", null, null);

Toast.makeText(this, "信息已删除", Toast.LENGTH_SHORT).show();

mTvShow.setText("");

db.close();

break;

}

}

}

运行截图

在 存在 数据的情况 下,修改name值---无效!!!

39908a6f5b6ac563115fde8358296f5e.gif

一共添加了 7条 数据。信息显示不全 !

dc5cba77527c7119fdcb7db5ea6a7236.png 信息显示不全!

(肆)数据显示控件

ListView控件

a5d19bdde3947853375eeac9cd447632.png

f16b0fd78f68f76ad0a2c4e00a3ebb8f.png

常用数据适配器(Adapter)

BaseAdapter

e48fc2d9136c43e75b42fad7dc22e05b.png

SimpleAdapter

478f5caf157a3d60be1a771ed2d32710.png

ArrayAdapter

726245349c1e57ca71c8f4d55e056916.png

实战演练——Android应用市场

14aa286b9f8e9d0a4125330925bdec55.png

(代码)工程文件

可用 Gitee 直接 拷贝 到 Android Studio 中。

运行截图

cf3a36f991f3c36c31f7b1bbb2d6611e.gif

两种优化方式

edcaacd7b78966ab2caa698aec34be46.png

d4637214d4b00370d17d81e2c2588cd9.png

d06edbb7b54bb1289038b1427c6b2f83.png

9a28ca2c104f754905661fd621649099.png

来源:oschina

链接:https://my.oschina.net/u/4401339/blog/4270581

Logo

DAMO开发者矩阵,由阿里巴巴达摩院和中国互联网协会联合发起,致力于探讨最前沿的技术趋势与应用成果,搭建高质量的交流与分享平台,推动技术创新与产业应用链接,围绕“人工智能与新型计算”构建开放共享的开发者生态。

更多推荐