- 浏览: 91310 次
- 性别:
- 来自: 长沙
文章分类
最新评论
-
wangyudong:
家里是拨号上网,不行的,找到了一个Holer工具,只需要配置一 ...
【如何通过广域网访问局域网的服务器?】 -
叮咚可乐名:
大数据就是这么任性第一季数据结构和算法http://pan.b ...
数据结构与算法-简介 -
戢_时光:
...
【Java集合之二】Set集合 -
lzg406:
HTTP默认方式下,使用持久连接。 这个值得推敲
【应用层】之一:HTTP协议与FTP协议 -
mute_:
特别腻害呢
正则表达式1:概念
本文围绕以下两个部分展开:
一、SQLite数据库
二、案例:SQLite数据库实现增删改查
附 代码补充
一、SQLite数据库
二、案例:SQLite数据库实现增删改查
1. strings.xml。定义所需字符串。
2. activity_main.xml。写主界面。
3. menu_main.xml。写菜单。
4. MainActivity。声明控件、初始化控件。
5. MainActivity。写菜单被选中后的事件。
6. 在 java 下面的包名下,创建 数据库帮助类:DBOpenHelper,继承于 SQLiteOpenHelper。(继承之后,需要重写父类的两个方法:onCreate()和onUpgrade(),并写出构造方法。)
创建的构造方法如下:
由于数据库名和数据库版本是固定的,游标实例工厂类可以使用默认的,因此,构造方法原来需要传4个参数,现在只需要传1个参数:“上下文”,即可。写成如下的样子:
7. DBOpenHelper。写 onCreate()方法 和 onUpgrade()方法。
8. 在 java 下面的包名下,创建 一个类:DeptService,用来操作 Dept 表:增删改查。先写一个构造方法:
(1)增(插入数据):先在 DeptService 类中封装“增”的操作方法,然后去 MainActivity 中使用该方法进行“增”。
(2)更新:先在 DeptService 类中封装“更新”的操作方法,然后去 MainActivity 中使用该方法进行“更新”。
(3)删除:先在 DeptService 类中封装“删除”的操作方法,然后去 MainActivity 中使用该方法进行“删除”。
(4)查询所有记录:先在 DeptService 类中封装“查询所有记录”的操作方法,然后去 MainActivity 中使用该方法进行“查询所有记录”。(因为,查询要用到 实体类 Dept,因此要先创建 实体类 Dept 来封装 Dept表,见第9步)
(5)DeptService。其他查询方法。
9. 在 java 下面的包名下,创建 一个实体类:Dept,用来封装 Dept 表。
附 代码补充
1. DBOpenHelper
2. DeptService
3. MainActivity
一、SQLite数据库
二、案例:SQLite数据库实现增删改查
附 代码补充
一、SQLite数据库
二、案例:SQLite数据库实现增删改查
1. strings.xml。定义所需字符串。
<resources> <string name="app_name">DB</string> <string name="action_insert">C</string> <string name="action_read">R</string> <string name="action_update">U</string> <string name="action_delete">D</string> <string name="hint_id">编号</string> <string name="hint_name">部门名</string> <string name="hint_loc">地点</string> </resources>
2. activity_main.xml。写主界面。
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:tools="http://schemas.android.com/tools" android:layout_width="match_parent" android:layout_height="match_parent" android:paddingBottom="@dimen/activity_vertical_margin" android:paddingLeft="@dimen/activity_horizontal_margin" android:paddingRight="@dimen/activity_horizontal_margin" android:paddingTop="@dimen/activity_vertical_margin" tools:context=".MainActivity"> <EditText android:id="@+id/txtId" android:layout_width="match_parent" android:layout_height="wrap_content" android:hint="@string/hint_id" android:inputType="number" /> <EditText android:id="@+id/txtName" android:layout_width="match_parent" android:layout_height="wrap_content" android:layout_below="@+id/txtId" android:hint="@string/hint_name" /> <EditText android:id="@+id/txtLoc" android:layout_width="match_parent" android:layout_height="wrap_content" android:layout_below="@+id/txtName" android:hint="@string/hint_loc" /> <TextView android:id="@+id/tvResult" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_below="@+id/txtLoc" /> </RelativeLayout>
3. menu_main.xml。写菜单。
<menu xmlns:android="http://schemas.android.com/apk/res/android" xmlns:tools="http://schemas.android.com/tools" tools:context=".MainActivity"> <item android:id="@+id/action_insert" android:orderInCategory="100" android:showAsAction="always" android:title="@string/action_insert" /> <item android:id="@+id/action_read" android:orderInCategory="101" android:showAsAction="always" android:title="@string/action_read" /> <item android:id="@+id/action_update" android:orderInCategory="102" android:showAsAction="always" android:title="@string/action_update" /> <item android:id="@+id/action_delete" android:orderInCategory="103" android:showAsAction="always" android:title="@string/action_delete" /> </menu>
4. MainActivity。声明控件、初始化控件。
private EditText txtId; private EditText txtName; private EditText txtLoc; private TextView tvResult;
txtId = (EditText) findViewById(R.id.txtId); txtName = (EditText) findViewById(R.id.txtName); txtLoc = (EditText) findViewById(R.id.txtLoc); tvResult = (TextView) findViewById(R.id.tvResult);
5. MainActivity。写菜单被选中后的事件。
@Override public boolean onOptionsItemSelected(MenuItem item) { switch (item.getItemId()) { case R.id.action_insert: // 新增 break; case R.id.action_read: // 查询 break; case R.id.action_update: // 更新 break; case R.id.action_delete: // 删除 break; } return super.onOptionsItemSelected(item); }
6. 在 java 下面的包名下,创建 数据库帮助类:DBOpenHelper,继承于 SQLiteOpenHelper。(继承之后,需要重写父类的两个方法:onCreate()和onUpgrade(),并写出构造方法。)
/** * 在数据库第一次建立时被调用, 一般用来创建数据库中的表, * 并做适当的初始化工作 */ @Override public void onCreate(SQLiteDatabase db) { }
/** * 在数据库需要升级时被调用, 一般用来删除旧的数据库表, * 并将数据转移到新版本的数据库表中 */ @Override public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) { }
创建的构造方法如下:
public DBOpenHelper(Context context, String name, SQLiteDatabase.CursorFactory factory, int version) { // 参数1:context 上下文 // 参数2:name 数据库名 (对于一个项目,数据库名是固定的。) // 参数3:CursorFactory 指定在执行查询时获得一个游标实例的工厂类, // 设置为null,代表使用系统默认的工厂类 // 参数4:version 数据库版本 (必须>=1,否则抛异常) // (数据库版本,也是固定的。只有升级软件的时候,才改。) super(context, name, factory, version); }
由于数据库名和数据库版本是固定的,游标实例工厂类可以使用默认的,因此,构造方法原来需要传4个参数,现在只需要传1个参数:“上下文”,即可。写成如下的样子:
private final static String DB_NAME = "google.db"; private final static int VERSION = 2; public DBOpenHelper(Context context) { super(context, DB_NAME, null, VERSION); }
7. DBOpenHelper。写 onCreate()方法 和 onUpgrade()方法。
/** * 在数据库第一次建立时被调用, 一般用来创建数据库中的表, * 并做适当的初始化工作 */ @Override public void onCreate(SQLiteDatabase db) { // sql语句 String sql = "create table dept " + "(id integer primary key autoincrement," + "name text not null,loc text not null)"; // 执行 sql语句 db.execSQL(sql); }
/** * 在数据库需要升级时被调用, 一般用来删除旧的数据库表, * 并将数据转移到新版本的数据库表中 */ @Override public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) { //String sql = "drop table if exists dept"; // 把原来的表直接删掉 //db.execSQL(sql); // 执行 sql语句 //onCreate(db); // 创建新表 // 升级软件的步骤: // 1.修改数据版本 +1 // 2.修改表结构,尽量不删除原有数据,再重建表 String sql = "alter table dept "; sql += " add column sal integer default 0"; // 执行 sql语句 db.execSQL(sql); }
8. 在 java 下面的包名下,创建 一个类:DeptService,用来操作 Dept 表:增删改查。先写一个构造方法:
// 在构造函数中,传一个“上下文”的参数,通过数据库帮助类 创建数据库 public DeptService(Context context) { dbOpenHelper = new DBOpenHelper(context); }
(1)增(插入数据):先在 DeptService 类中封装“增”的操作方法,然后去 MainActivity 中使用该方法进行“增”。
/** * 插入 * @param values */ // ContentValues 相当于 Map 集合,用来存储 键值对数据 public void insert(ContentValues values) { // 通过数据库帮助类获得 数据库对象(可以写的操作) SQLiteDatabase db = dbOpenHelper.getWritableDatabase(); // 参数1:操作的表名 // 参数3为null /长度为0 // 参数2:为了满足SQL语句insert into dept () values()要求设置值 // db.insert("dept", "name", null); // sql:insert into dept (name) values(null) // insert into dept(null) values(null); // insert into dept(name,loc) values('sales','LA') db.insert("dept", null, values); }
case R.id.action_insert: // 新增 values.put("name", txtName.getText().toString()); values.put("loc", txtLoc.getText().toString()); service.insert(values); break;
(2)更新:先在 DeptService 类中封装“更新”的操作方法,然后去 MainActivity 中使用该方法进行“更新”。
/** * 更新 * @param values */ public void update(ContentValues values) { SQLiteDatabase db = dbOpenHelper.getWritableDatabase(); db.update("dept", values, "id=?", new String[]{String.valueOf(values.getAsInteger("id"))}); }
case R.id.action_update: // 更新 values.put("id", txtId.getText().toString()); values.put("name", txtName.getText().toString()); values.put("loc", txtLoc.getText().toString()); service.update(values); break;
(3)删除:先在 DeptService 类中封装“删除”的操作方法,然后去 MainActivity 中使用该方法进行“删除”。
/** * 删除 * @param id */ public void delete(Integer id) { SQLiteDatabase db = dbOpenHelper.getWritableDatabase(); db.delete("dept", "id=?", new String[]{String.valueOf(id)}); }
case R.id.action_delete: // 删除 service.delete(Integer.parseInt(txtId.getText().toString())); break;
(4)查询所有记录:先在 DeptService 类中封装“查询所有记录”的操作方法,然后去 MainActivity 中使用该方法进行“查询所有记录”。(因为,查询要用到 实体类 Dept,因此要先创建 实体类 Dept 来封装 Dept表,见第9步)
/** * 查询所有记录 * @return */ public List<Dept> find() { List<Dept> list = new ArrayList<>(); // 通过数据库帮助类获得 数据库对象(可以读的操作) SQLiteDatabase db = dbOpenHelper.getReadableDatabase(); Cursor cursor = db.query("dept", null, null, null, null, null, "id desc"); // query(表名,所有字段,where子句,where子句对应的值,groupBy子句,having子句,排序) while (cursor.moveToNext()) { int id = cursor.getInt(cursor.getColumnIndex("id")); String name = cursor.getString(cursor.getColumnIndex("name")); String loc = cursor.getString(cursor.getColumnIndex("loc")); list.add(new Dept(id, name, loc)); } cursor.close(); return list; }
case R.id.action_read: // 查询 String text = ""; for (Dept dept : service.find()) { text += dept + "\n"; } tvResult.setText(text); break;
(5)DeptService。其他查询方法。
/** * 通过 id 查询 * @param id * @return */ public Dept find(Integer id) { SQLiteDatabase db = dbOpenHelper.getReadableDatabase(); Cursor cursor = db.query("dept", new String[]{"id", "name", "loc"}, "id=?", new String[]{String.valueOf(id)}, null, null, null); if (cursor.moveToFirst()) { // int id=cursor.getInt(cursor.getColumnIndex("id")); String name = cursor.getString(cursor.getColumnIndex("name")); String loc = cursor.getString(cursor.getColumnIndex("loc")); return new Dept(id, name, loc); } return null; }
/** * 分页查询(用得非常少) * * @param offset 忽略前面指定的记录数 * @param maxResult 一页显示记录数 * @return */ public List<Dept> find(int offset, int maxResult) { List<Dept> list = new ArrayList<Dept>(); SQLiteDatabase db = dbOpenHelper.getReadableDatabase(); Cursor cursor = db.query("dept", null, null, null, null, null, null, offset + "," + maxResult); // limit 0,3 / 3,3 // query(表名,所有字段,where子句,where子句对应的值,groupBy子句,having子句,排序,分页) while (cursor.moveToNext()) { int id = cursor.getInt(cursor.getColumnIndex("id")); String name = cursor.getString(cursor.getColumnIndex("name")); String loc = cursor.getString(cursor.getColumnIndex("loc")); list.add(new Dept(id, name, loc)); } cursor.close(); return list; }
/** * 统计 * select count(*) from emp * @return */ public long getCount() { SQLiteDatabase db = dbOpenHelper.getReadableDatabase(); Cursor cursor = db.query("dept", new String[]{"count(*)"}, null, null, null, null, null); cursor.moveToFirst(); return cursor.getLong(0); }
/** * 转账(SQLite事务) */ public void trans(ContentValues fromValues, ContentValues toValues) { SQLiteDatabase db = dbOpenHelper.getWritableDatabase(); db.beginTransaction(); // 开启事务 try { db.update("dept", fromValues, "id=?", new String[]{String.valueOf(fromValues.getAsInteger("id"))}); db.update("dept", toValues, "id=?", new String[]{String.valueOf(toValues.getAsInteger("id"))}); // 设置事务标志为成功,当结束事务时就会提交事务 db.setTransactionSuccessful(); } finally { db.endTransaction(); // 结束事务 } }
9. 在 java 下面的包名下,创建 一个实体类:Dept,用来封装 Dept 表。
package com.android.db; public class Dept { private int id; private String name; private String loc; public Dept() { } public Dept(int id, String name, String loc) { this.id = id; this.name = name; this.loc = loc; } @Override public String toString() { return "Dept{" + "id=" + id + ", name='" + name + '\'' + ", loc='" + loc + '\'' + '}'; } public int getId() { return id; } public void setId(int id) { this.id = id; } public String getName() { return name; } public void setName(String name) { this.name = name; } public String getLoc() { return loc; } public void setLoc(String loc) { this.loc = loc; } }
附 代码补充
1. DBOpenHelper
package com.android.db; import android.content.Context; import android.database.sqlite.SQLiteDatabase; import android.database.sqlite.SQLiteOpenHelper; /** * 数据库帮助类 */ public class DBOpenHelper extends SQLiteOpenHelper { private final static String DB_NAME = "google.db"; private final static int VERSION = 2; public DBOpenHelper(Context context) { super(context, DB_NAME, null, VERSION); } /** * 在数据库第一次建立时被调用, 一般用来创建数据库中的表, * 并做适当的初始化工作 */ @Override public void onCreate(SQLiteDatabase db) { // sql语句 String sql = "create table dept " + "(id integer primary key autoincrement," + "name text not null,loc text not null)"; // 执行 sql语句 db.execSQL(sql); } /** * 在数据库需要升级时被调用, 一般用来删除旧的数据库表, * 并将数据转移到新版本的数据库表中 */ @Override public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) { //String sql = "drop table if exists dept"; // 把原来的表直接删掉 //db.execSQL(sql); // 执行 sql语句 //onCreate(db); // 创建新表 // 升级软件的步骤: // 1.修改数据版本 +1 // 2.修改表结构,尽量不删除原有数据,再重建表 String sql = "alter table dept "; sql += " add column sal integer default 0"; // 执行 sql语句 db.execSQL(sql); } }
2. DeptService
package com.android.db; import android.content.ContentValues; import android.content.Context; import android.database.Cursor; import android.database.sqlite.SQLiteDatabase; import java.util.ArrayList; import java.util.List; public class DeptService { private DBOpenHelper dbOpenHelper; // 在构造函数中,传一个“上下文”的参数,通过数据库帮助类 创建数据库 public DeptService(Context context) { dbOpenHelper = new DBOpenHelper(context); } /** * 插入 * @param values */ // ContentValues 相当于 Map 集合,用来存储 键值对数据 public void insert(ContentValues values) { // 通过数据库帮助类获得 数据库对象(可以写的操作) SQLiteDatabase db = dbOpenHelper.getWritableDatabase(); // 参数1:操作的表名 // 参数3为null /长度为0 // 参数2:为了满足SQL语句insert into dept () values()要求设置值 // db.insert("dept", "name", null); // sql:insert into dept (name) values(null) // insert into dept(null) values(null); // insert into dept(name,loc) values('sales','LA') db.insert("dept", null, values); } /** * 更新 * @param values */ public void update(ContentValues values) { SQLiteDatabase db = dbOpenHelper.getWritableDatabase(); db.update("dept", values, "id=?", new String[]{String.valueOf(values.getAsInteger("id"))}); } /** * 删除 * @param id */ public void delete(Integer id) { SQLiteDatabase db = dbOpenHelper.getWritableDatabase(); db.delete("dept", "id=?", new String[]{String.valueOf(id)}); } /** * 查询所有记录 * @return */ public List<Dept> find() { List<Dept> list = new ArrayList<>(); // 通过数据库帮助类获得 数据库对象(可以读的操作) SQLiteDatabase db = dbOpenHelper.getReadableDatabase(); Cursor cursor = db.query("dept", null, null, null, null, null, "id desc"); // query(表名,所有字段,where子句,where子句对应的值,groupBy子句,having子句,排序) while (cursor.moveToNext()) { int id = cursor.getInt(cursor.getColumnIndex("id")); String name = cursor.getString(cursor.getColumnIndex("name")); String loc = cursor.getString(cursor.getColumnIndex("loc")); list.add(new Dept(id, name, loc)); } cursor.close(); return list; } /** * 通过 id 查询 * @param id * @return */ public Dept find(Integer id) { SQLiteDatabase db = dbOpenHelper.getReadableDatabase(); Cursor cursor = db.query("dept", new String[]{"id", "name", "loc"}, "id=?", new String[]{String.valueOf(id)}, null, null, null); if (cursor.moveToFirst()) { // int id=cursor.getInt(cursor.getColumnIndex("id")); String name = cursor.getString(cursor.getColumnIndex("name")); String loc = cursor.getString(cursor.getColumnIndex("loc")); return new Dept(id, name, loc); } return null; } /** * 分页查询 * * @param offset 忽略前面指定的记录数 * @param maxResult 一页显示记录数 * @return */ public List<Dept> find(int offset, int maxResult) { List<Dept> list = new ArrayList<Dept>(); SQLiteDatabase db = dbOpenHelper.getReadableDatabase(); Cursor cursor = db.query("dept", null, null, null, null, null, null, offset + "," + maxResult); // limit 0,3 / 3,3 // query(表名,所有字段,where子句,where子句对应的值,groupBy子句,having子句,排序,分页) while (cursor.moveToNext()) { int id = cursor.getInt(cursor.getColumnIndex("id")); String name = cursor.getString(cursor.getColumnIndex("name")); String loc = cursor.getString(cursor.getColumnIndex("loc")); list.add(new Dept(id, name, loc)); } cursor.close(); return list; } /** * 统计 * select count(*) from emp * @return */ public long getCount() { SQLiteDatabase db = dbOpenHelper.getReadableDatabase(); Cursor cursor = db.query("dept", new String[]{"count(*)"}, null, null, null, null, null); cursor.moveToFirst(); return cursor.getLong(0); } /** * 转账(SQLite事务) */ public void trans(ContentValues fromValues, ContentValues toValues) { SQLiteDatabase db = dbOpenHelper.getWritableDatabase(); db.beginTransaction(); // 开启事务 try { db.update("dept", fromValues, "id=?", new String[]{String.valueOf(fromValues.getAsInteger("id"))}); db.update("dept", toValues, "id=?", new String[]{String.valueOf(toValues.getAsInteger("id"))}); // 设置事务标志为成功,当结束事务时就会提交事务 db.setTransactionSuccessful(); } finally { db.endTransaction(); // 结束事务 } } }
3. MainActivity
package com.android.db; import android.app.Activity; import android.content.ContentValues; import android.os.Bundle; import android.view.Menu; import android.view.MenuItem; import android.widget.EditText; import android.widget.TextView; public class MainActivity extends Activity { private EditText txtId; private EditText txtName; private EditText txtLoc; private TextView tvResult; private DeptService service; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); txtId = (EditText) findViewById(R.id.txtId); txtName = (EditText) findViewById(R.id.txtName); txtLoc = (EditText) findViewById(R.id.txtLoc); tvResult = (TextView) findViewById(R.id.tvResult); service = new DeptService(this); } @Override public boolean onOptionsItemSelected(MenuItem item) { ContentValues values = new ContentValues(); switch (item.getItemId()) { case R.id.action_insert: // 新增 values.put("name", txtName.getText().toString()); values.put("loc", txtLoc.getText().toString()); service.insert(values); break; case R.id.action_read: // 查询 String text = ""; for (Dept dept : service.find()) { text += dept + "\n"; } tvResult.setText(text); break; case R.id.action_update: // 更新 values.put("id", txtId.getText().toString()); values.put("name", txtName.getText().toString()); values.put("loc", txtLoc.getText().toString()); service.update(values); break; case R.id.action_delete: // 删除 service.delete(Integer.parseInt(txtId.getText().toString())); break; } return super.onOptionsItemSelected(item); } @Override public boolean onCreateOptionsMenu(Menu menu) { getMenuInflater().inflate(R.menu.menu_main, menu); return true; } }
发表评论
-
【攻克Android (43)】WebView (网络视图)
2015-09-09 22:15 1253本文围绕以下两个部分展开: 一、WebView WebVi ... -
WebView (网络视图)
2015-09-09 22:12 0本文围绕以下两个部分展开: 一、WebView WebVi ... -
【攻克Android (41)】HttpURLConnection
2015-09-08 17:43 1363本文围绕以下三个部分展开: 一、HttpURLConnec ... -
HttpURLConnection
2015-09-08 17:42 0本文围绕以下三个部分展开: 一、HttpURLConnec ... -
【攻克Android (40)】JSON解析
2015-09-07 20:49 1274本文围绕以下三个部分 ... -
JSON解析
2015-09-07 20:47 0本文围绕以下三个部分 ... -
【攻克Android (39):XML解析之四】Simple方式解析XML
2015-08-27 18:38 1750本文围绕以下三个部分 ... -
【攻克Android (38):XML解析之三】Pull方式解析XML
2015-08-27 09:25 1738本文围绕以下两个部分展开: 一、Pull解析 案例一:P ... -
【攻克Android (37):XML解析之二】SAX方式解析XML
2015-08-26 15:15 876本文围绕以下两个部分展开: 一、SAX解析 案例一 ... -
【XML解析之一】SAX方式解析XML
2015-08-26 02:58 0本文围绕以下四个部分展开: 一、SAX解析 案例一 ... -
【攻克Android (36):XML解析之一】DOM方式解析XML
2015-08-26 00:27 947本文围绕以下三个部分展开: 一、XML概述 二、DOM解析 ... -
DOM方式解析XML案例
2015-08-26 00:26 0本文围绕以下四个部分展开: 一、DOM解析 案例一 ... -
【XML解析之四】Simple方式解析XML
2015-08-27 18:36 0本文围绕以下三个部分 ... -
【XML解析之一】Pull方式解析XML
2015-08-26 02:56 0本文围绕以下四个部分展开: 一、Pull解析 案例一:P ... -
【攻克Android (22)】View/Tween Animation 视图动画(补间动画)
2015-08-25 21:22 885本文围绕以下四个部分 ... -
【攻克Android (22)】View/Tween Animation 视图动画(补间动画)
2015-08-25 21:21 0本文围绕以下四个部分 ... -
【攻克Android (45)】四大组件之 ContentProvider
2015-08-18 16:24 1118本文围绕以下两个部分展开: 一、ContentProvide ... -
【攻克Android (32)】Notification 通知
2015-08-17 19:57 952本文围绕以下两个部分展开: 一、通知 案例一 一 ... -
Notification 通知
2015-08-17 19:56 0本文围绕以下两个部分展开: 一、通知 案例一 一 ... -
BroadcastReceiver完整版
2015-08-17 13:15 0本文围绕以下四个部分展开: 一、广播 案例一:系统广播(属于 ...
相关推荐
SQLite是一个进程内的库,实现了自给自足的、无服务器的、零配置的、事务性的 SQL 数据库引擎。它是一个零配置的数据库,这意味着与其他数据库不一样,您不需要在系统中配置。 就像其他数据库,SQLite 引擎不是一个...
Android SQLite 数据库操作报告 一、实验目的 Android 实验报告的主要目的是熟悉 Android 平台的文件操作、掌握 Android SQLite 数据库的设计和应用、熟悉 XML 和 JSON 文件的读取。通过本实验,用户可以掌握 ...
在Android应用开发中,SQLite是一个常用的轻量级数据库,它为数据存储提供了便利。然而,随着数据安全性的日益重要,对SQLite数据库进行加密是必要的,以保护敏感信息免受未授权访问。本篇文章将深入探讨如何在...
Android Studio SQLite数据库使用 Android Studio 提供了SQLite数据库来存储应用程序的数据。在本文中,我们将介绍如何使用SQLite数据库在Android Studio中,并详细解释SQLiteOpenHelper和SQLiteDatabase的使用方法...
在Android开发中,SQLite数据库是默认的轻量级数据库,用于存储应用的数据。SQLite支持标准的关系型数据库特性,如SQL语法、事务处理等,且它体积小、无服务器、文件化,非常适合移动设备使用。本篇文章将深入探讨...
资源名称:android中sqlite数据库的创建以及增删改查 资源太大,传百度网盘了,链接在附件中,有需要的同学自取。
在Android开发中,SQLite是一个非常重要的组成部分,它是一个轻量级的、开源的、嵌入式的SQL数据库引擎,被广泛用于存储和管理应用程序中的数据。SQLite具有高效、可靠且易于集成的特点,使得它成为Android应用数据...
在Android开发中,SQLite是一个内置的轻量级数据库系统,用于存储应用程序的结构化数据。本教程将详述如何在Android应用中读取SQLite数据库的数据并利用ListView进行展示。 首先,我们需要创建SQLite数据库。在...
在Android应用开发中,SQLite是一个轻量级的数据库系统,常用于存储应用程序中的结构化数据。SQLite数据库的优势在于它不需要单独的服务进程,可以直接嵌入到应用程序中,支持基本的SQL语法,非常适合移动设备上的...
前情提要:Android 数据库(SQLite) 【简介、创建、使用(增删改查、事务、实战演练)、数据显示控件(ListView、Adapter、实战演练)】 https://blog.csdn.net/weixin_44949135/article/details/105955663 Android ...
在Android开发中,SQLite是一个重要的组成部分,它是一个轻量级的数据库系统,允许开发者在应用程序中存储、管理和处理数据。SQLite被广泛应用于Android应用,因为它具有高效、可靠且易于使用的特性。下面我们将深入...
【Android Studio 中 SQLite 数据库操作】 在 Android 开发中,SQLite 是一个常用的数据存储解决方案,尤其适合小型到中型的数据存储需求。SQLite 是一个轻量级的、嵌入式的关系型数据库,支持标准的 SQL 语法,...
在Android应用开发中,SQLite是一个轻量级的关系型数据库,常用于存储应用中的结构化数据。这个"Android操作SQLite数据库Demo"将展示如何在Android环境中有效地利用SQLite进行数据管理。以下是一些关键知识点: 1. ...
这个压缩包文件"Android源码——数据库SQLite.zip"可能包含了关于Android中SQLite数据库的源码分析、使用示例以及相关的图像资源,如1-120912223R80-L.png,可能用于解释或展示SQLite在Android中的工作原理。...
在本示例"android基本SQLite数据库操作的增删改查demo"中,开发者创建了一个用于管理停车位查询的应用,其中涉及到了对SQLite数据库的基础操作:增加数据(Add)、查询数据(Query)、删除数据(Delete)以及修改...
标题"安卓SQLite数据库相关-安卓Androidsqlite万能数据库.rar"暗示了这个压缩包包含了一系列与Android平台上SQLite数据库使用相关的资源,可能是源代码、教程、示例或者其他工具。由于描述中提到“太多无法一一验证...
SQLite是一款轻量级的数据库管理系统,它被广泛应用于Android应用程序中,因为它不需要独立的服务进程,而是内嵌在应用中,提供了高效、可靠的本地数据存储功能。"android SQLite数据库管理软件"是一个专为Android...
在Android开发中,SQLite是一个非常重要的组件,它是一个轻量级的、开源的、嵌入式的SQL数据库引擎,被广泛用于存储应用中的结构化数据。SQLite数据库的优势在于它不需要独立的服务器进程,而是直接集成在应用程序中...
Android下SQLite数据库安全机制的设计与实现,刘树杰,,Android 作为强大的智能终端操作系统,深受用户的喜爱,基于该平台的应用日益增多。Android平台下提供了SQLite 数据库作为数据存储的主��
在Android应用开发中,SQLite是一个轻量级的关系型数据库,常用于存储应用程序中的结构化数据。SQLite数据库的优势在于它不需要单独的服务进程,而是直接嵌入到应用程序中,提供了高效的本地数据存储解决方案。在这...