开始学习android 的sqlite
2023-09-11 14:21:06 时间
是一个嵌入式数据库,非常的小。适合移动开发。 http://www.sqlite.org/download.html
下载地址:
支持mac,windows,linux系统。直接安装就行了。
同时还有源代码,可以学习下。
文档: http://www.sqlite.org/docs.html
android下面的已经有支持了。 https:
import android.database.sqlite.SQLiteDatabase; import android.database.sqlite.SQLiteOpenHelper; import android.nfc.Tag; import android.util.Log; import java.util.ArrayList; import java.util.List; import java.util.Random;
public static final int DATABASE_VERSION = 1; public static final String DATABASE_NAME = "UserInfo.db"; public static final String TABLE_NAME = "user_info"; //创建数据库。 private static final String SQL_CREATE_ENTRIES = "CREATE TABLE IF NOT EXISTS " + TABLE_NAME + " (id INTEGER PRIMARY KEY,name TEXT,age INTEGER,sex INTEGER,city TEXT)"; //删除数据库。 private static final String SQL_DELETE_ENTRIES = "DROP TABLE IF EXISTS " + TABLE_NAME; public UserHelper(Context context) { super(context, DATABASE_NAME, null, DATABASE_VERSION); @Override public void onCreate(SQLiteDatabase db) { db.execSQL(SQL_CREATE_ENTRIES); @Override public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) { db.execSQL(SQL_DELETE_ENTRIES); onCreate(db); @Override public void close() { super.close(); Log.v("SQLite", "##################cloes db.##################"); public void save() { Random random = new Random(); ContentValues contentValues = new ContentValues(); contentValues.put("name", "zhangsan_" + random.nextInt()); contentValues.put("age", random.nextInt()); contentValues.put("sex", random.nextInt()); contentValues.put("city", "city_" + random.nextInt()); getWritableDatabase().insert(UserHelper.TABLE_NAME, "", contentValues); public List UserInfo queryAll() { List UserInfo list = new ArrayList UserInfo Cursor cursor = getReadableDatabase().rawQuery("select * from " + UserHelper.TABLE_NAME + " limit 5", null); while (cursor.moveToNext()) { UserInfo userInfo = new UserInfo(); userInfo.setId(cursor.getInt(cursor.getColumnIndex("id"))); userInfo.setName(cursor.getString(cursor.getColumnIndex("name"))); userInfo.setAge(cursor.getInt(cursor.getColumnIndex("age"))); userInfo.setSex(cursor.getInt(cursor.getColumnIndex("sex"))); userInfo.setCity(cursor.getString(cursor.getColumnIndex("city"))); //增加到数据中。 list.add(userInfo); if (cursor != null) { cursor.close(); return list; public void delete() { List UserInfo list = queryAll(); //只删除第一个。 if (list != null list.size() 0) { UserInfo userInfo = list.get(0); String[] whereArgs = {userInfo.getId() + ""}; getWritableDatabase().delete(UserHelper.TABLE_NAME, "id = ? ", whereArgs); public void update() { List UserInfo list = queryAll(); //只更新第一个。 if (list != null list.size() 0) { Random random = new Random(); UserInfo userInfo = list.get(0); ContentValues values = new ContentValues(); values.put("name", "lisi_" + random.nextInt()); String[] args = {String.valueOf(userInfo.getId())}; //更新数据。 getWritableDatabase().update(UserHelper.TABLE_NAME, values, "id = ? ", args);
protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_database_main); //c创建对象。 helper = new UserHelper(getBaseContext()); Button btn1 = (Button) findViewById(R.id.button1); btn1.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View view) { //保存。 for (int i = 0; i 10; i++) { helper.save(); //查询。 List UserInfo list = helper.queryAll(); for (UserInfo userInfo : list) { Log.v(TAG, userInfo.toString()); //更新 helper.update(); //删除 helper.delete(); //在每次注销的时候关闭。 @Override protected void onDestroy() { super.onDestroy(); if (helper != null) { helper.close(); Log.v(TAG, "############# close db ############"); }
Android数据库Sqlite的基本用法及升级策略 SQLite是一款轻型的数据库,是遵守ACID的关联式数据库管理系统,它的设计目标是嵌入 式的,而且目前已经在很多嵌入式产品中使用了它,它占用资源非常的低,在嵌入式设备中,可能只需要几百K的内存就够了。它能够支持 Windows/Linux/Unix等等主流的操作系统,同时能够跟很多程序语言相结合,比如Tcl、PHP、Java、C++、.Net等,还有ODBC接口,同样比起 Mysql、PostgreSQL这两款开源世界著名的数据库管理系统来讲,它的处理速度比他们都快。
Android Sqlite数据库升级——kotlin 对于android开发同学来说,数据库相关操作是我们日常操作之一,相应的数据库的升级操作就必不可少了。这里我总结下数据库升级时需要注意的事项。 Android中数据库操作的核心类是SqliteOpenHelper,这个类有两个方法,onCreate和onUpgrade。onCreate方法只会调用一次,onUpgrade方法会在版本号增加之后触发。 数据库升级的操作过程中,我们需要处理的情况有两种,第一种是数据库从低版本升级上来的,第二种是新安装app的用户。
【Android】7.0复杂数据的存储SQLite(内置数据库)Room框架 常用的数据库 sqlserver oracle mysql Android嵌入式数据库SQLite SQLite数据库支持SQL语法和ACID事务,适用于存储大量的关系型数据 eg:qq的聊天列表 学习强国的新闻
Android-SQLite数据库实例 使用SQLite保存数据 SQL的基本语法 数据库帮助器SQLiteOpenHelper 继承SQLiteOpenHelper类,重写onCreate、onUpgrade、onOpen方法 打开数据库表 关闭数据库 各参数说明 项目实例:SQLiteDemo.zip
import android.database.sqlite.SQLiteDatabase; import android.database.sqlite.SQLiteOpenHelper; import android.nfc.Tag; import android.util.Log; import java.util.ArrayList; import java.util.List; import java.util.Random;
public static final int DATABASE_VERSION = 1; public static final String DATABASE_NAME = "UserInfo.db"; public static final String TABLE_NAME = "user_info"; //创建数据库。 private static final String SQL_CREATE_ENTRIES = "CREATE TABLE IF NOT EXISTS " + TABLE_NAME + " (id INTEGER PRIMARY KEY,name TEXT,age INTEGER,sex INTEGER,city TEXT)"; //删除数据库。 private static final String SQL_DELETE_ENTRIES = "DROP TABLE IF EXISTS " + TABLE_NAME; public UserHelper(Context context) { super(context, DATABASE_NAME, null, DATABASE_VERSION); @Override public void onCreate(SQLiteDatabase db) { db.execSQL(SQL_CREATE_ENTRIES); @Override public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) { db.execSQL(SQL_DELETE_ENTRIES); onCreate(db); @Override public void close() { super.close(); Log.v("SQLite", "##################cloes db.##################"); public void save() { Random random = new Random(); ContentValues contentValues = new ContentValues(); contentValues.put("name", "zhangsan_" + random.nextInt()); contentValues.put("age", random.nextInt()); contentValues.put("sex", random.nextInt()); contentValues.put("city", "city_" + random.nextInt()); getWritableDatabase().insert(UserHelper.TABLE_NAME, "", contentValues); public List UserInfo queryAll() { List UserInfo list = new ArrayList UserInfo Cursor cursor = getReadableDatabase().rawQuery("select * from " + UserHelper.TABLE_NAME + " limit 5", null); while (cursor.moveToNext()) { UserInfo userInfo = new UserInfo(); userInfo.setId(cursor.getInt(cursor.getColumnIndex("id"))); userInfo.setName(cursor.getString(cursor.getColumnIndex("name"))); userInfo.setAge(cursor.getInt(cursor.getColumnIndex("age"))); userInfo.setSex(cursor.getInt(cursor.getColumnIndex("sex"))); userInfo.setCity(cursor.getString(cursor.getColumnIndex("city"))); //增加到数据中。 list.add(userInfo); if (cursor != null) { cursor.close(); return list; public void delete() { List UserInfo list = queryAll(); //只删除第一个。 if (list != null list.size() 0) { UserInfo userInfo = list.get(0); String[] whereArgs = {userInfo.getId() + ""}; getWritableDatabase().delete(UserHelper.TABLE_NAME, "id = ? ", whereArgs); public void update() { List UserInfo list = queryAll(); //只更新第一个。 if (list != null list.size() 0) { Random random = new Random(); UserInfo userInfo = list.get(0); ContentValues values = new ContentValues(); values.put("name", "lisi_" + random.nextInt()); String[] args = {String.valueOf(userInfo.getId())}; //更新数据。 getWritableDatabase().update(UserHelper.TABLE_NAME, values, "id = ? ", args);
mainActivity代码:
protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_database_main); //c创建对象。 helper = new UserHelper(getBaseContext()); Button btn1 = (Button) findViewById(R.id.button1); btn1.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View view) { //保存。 for (int i = 0; i 10; i++) { helper.save(); //查询。 List UserInfo list = helper.queryAll(); for (UserInfo userInfo : list) { Log.v(TAG, userInfo.toString()); //更新 helper.update(); //删除 helper.delete(); //在每次注销的时候关闭。 @Override protected void onDestroy() { super.onDestroy(); if (helper != null) { helper.close(); Log.v(TAG, "############# close db ############"); }
本文的原文连接是: http://blog.csdn.net/freewebsys/article/details/53319494
未经博主允许不得转载。
博主地址是:http://blog.csdn.net/freewebsys
作为对比,发现在android下面使用sqlite和mysql差不多。
但是使用sqliteHelper之后会方便很多。创建表和查询其实其实差不多。
就是调用函数和普通的jdbc不太一样。适应下就行了。
官方给的sqlite就已经不错了,不需要再使用orm了。自己做个对象转换就行了。
没有必要封装,比较作为android的客户端,大小也是很重要的。
Android数据库Sqlite的基本用法及升级策略 SQLite是一款轻型的数据库,是遵守ACID的关联式数据库管理系统,它的设计目标是嵌入 式的,而且目前已经在很多嵌入式产品中使用了它,它占用资源非常的低,在嵌入式设备中,可能只需要几百K的内存就够了。它能够支持 Windows/Linux/Unix等等主流的操作系统,同时能够跟很多程序语言相结合,比如Tcl、PHP、Java、C++、.Net等,还有ODBC接口,同样比起 Mysql、PostgreSQL这两款开源世界著名的数据库管理系统来讲,它的处理速度比他们都快。
Android Sqlite数据库升级——kotlin 对于android开发同学来说,数据库相关操作是我们日常操作之一,相应的数据库的升级操作就必不可少了。这里我总结下数据库升级时需要注意的事项。 Android中数据库操作的核心类是SqliteOpenHelper,这个类有两个方法,onCreate和onUpgrade。onCreate方法只会调用一次,onUpgrade方法会在版本号增加之后触发。 数据库升级的操作过程中,我们需要处理的情况有两种,第一种是数据库从低版本升级上来的,第二种是新安装app的用户。
【Android】7.0复杂数据的存储SQLite(内置数据库)Room框架 常用的数据库 sqlserver oracle mysql Android嵌入式数据库SQLite SQLite数据库支持SQL语法和ACID事务,适用于存储大量的关系型数据 eg:qq的聊天列表 学习强国的新闻
Android-SQLite数据库实例 使用SQLite保存数据 SQL的基本语法 数据库帮助器SQLiteOpenHelper 继承SQLiteOpenHelper类,重写onCreate、onUpgrade、onOpen方法 打开数据库表 关闭数据库 各参数说明 项目实例:SQLiteDemo.zip
相关文章
- android开发之sqlite数据库升级
- [Android Pro] android Flag介绍
- [Android Pro] Android学习——在线查看android源代码的3种方式
- Android中的SQLite使用学习
- Android learning Starting!
- 【黑马Android】(01)android简介/工程目录结构/拨号器/四种点击事件/后台偷偷发短信
- JAVA Eclipse开发Android程序会经常闪退是怎么回事
- Android Studio-解决Fetching android sdk component information加载过久问题
- Android开发学习---使用Intelij idea 13.1 进行android 开发
- Android开发学习---android下的数据持久化,保存数据到rom文件,android_data目录下文件访问的权限控制
- 【Android】android镜像翻转
- Android实战之app版本更新升级全文章(一)
- Android【报错】This class should be public (android.support.v7.internal.widget.ActionBarView.HomeView)
- Android SQLite数据库
- Android安全开发之ZIP文件目录遍历
- 【Android Gradle 插件】Gradle 依赖管理 ④ ( Android Gradle 插件中注册的依赖分组 | implementation | api | compileOnly )
- 【Android Gradle 插件】build.gradle 中的 android 配置 ( 配置项 | compileSdkVersion 配置 | buildToolsVersion 配置 )
- 【Android 逆向】使用 DB Browser 查看并修改 SQLite 数据库 ( 下载 DB Browser 安装包 | 安装 DB Browser 工具 )
- 【Android 性能优化】应用启动优化 ( Trace 文件分析 | 结合代码分析 Trace 文件 )
- android 不生成odex文件方法
- Android 10 适配攻略
- Android SD卡升级报错解决
- 实验六 Android Studio SQLite数据存储和访问【班级名单列表视图02】