对腾讯api的学习已经告一段落,具体到时用的到再去研究,基本大体上已经能够运用了,今天突然心血来潮,想学习一下android数据库,看了mars老师的视频,大约花了一个小时的时间,我感觉已经接触到了门槛了,下面是我学习的内容:
1.通过SQLiteOpenHelper对数据库进行操作
看了一下api文档对其的描述:
(1)它是一个抽象类
public abstract class
SQLiteOpenHelper
extends Object
(2)A helper class to manage database creation and version management.
它是一个管理类,控制数据库的构建和版本更新
(3)You create a subclass implementing onCreate(SQLiteDatabase)
, onUpgrade(SQLiteDatabase, int, int)
and optionally onOpen(SQLiteDatabase)
, and this class takes care of opening the database if it exists, creating it if it does not, and upgrading it as necessary. Transactions are used to make sure the database is always in a sensible state.
This class makes it easy for ContentProvider
implementations to defer opening and upgrading the database until first use, to avoid blocking application startup with long-running database upgrades.
要继承这个类必须实现它的Oncreate()和OnUpgrade()方法
(4)下面来构造一个这样的类
public class SqliteDateBaseHelper extends SQLiteOpenHelper { public static final int VERSION = 1; /** * 构造方法 * * @param context * : 对应的上下文 * @param name * :数据库名字 * @param factory * : to use for creating cursor objects, or null for the default * @param version * : 版本 Create a helper object to create, open, and/or manage a * database. This method always returns very quickly. The * database is not actually created or opened until one of * getWritableDatabase() or getReadableDatabase() is called. */ public SqliteDateBaseHelper(Context context, String name, CursorFactory factory, int version) { super(context, name, null, version); // TODO Auto-generated constructor stub } public SqliteDateBaseHelper(Context context, String name, int version) { super(context, name, null, version); // TODO Auto-generated constructor stub } public SqliteDateBaseHelper(Context context, String name) { super(context, name, null, VERSION); // TODO Auto-generated constructor stub } /** * 创建数据库 */ @Override public void onCreate(SQLiteDatabase db) { // TODO Auto-generated method stub //创建一个表 db.execSQL("create table userinfo(id int,username varchar(20),userpass varchar(20))"); System.out.println("---->创建数据库"); } /** * 更新数据库版本 */ @Override public void onUpgrade(SQLiteDatabase arg0, int arg1, int arg2) { // TODO Auto-generated method stub System.out.println("---->更新数据库"); } }
(5)创建一个Activity来展示效果
public class SqliteActivity extends Activity implements OnClickListener {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
findViewById(R.id.button1).setOnClickListener(this);
findViewById(R.id.button2).setOnClickListener(this);
findViewById(R.id.button3).setOnClickListener(this);
findViewById(R.id.button4).setOnClickListener(this);
findViewById(R.id.button5).setOnClickListener(this);
}
@Override
public void onClick(View view) {
// TODO Auto-generated method stub
switch (view.getId()) {
case R.id.button1:// 创建数据库
SqliteDateBaseHelper dateBaseHelper = new SqliteDateBaseHelper(
SqliteActivity.this, "mydatebase");
// 创建数据库实例
SQLiteDatabase db = dateBaseHelper.getReadableDatabase();
break;
case R.id.button2:// 更新数据库版本
SqliteDateBaseHelper dateBaseHelper1 = new SqliteDateBaseHelper(
SqliteActivity.this, "mydatebase", 2);
SQLiteDatabase db1 = dateBaseHelper1.getReadableDatabase();
break;
case R.id.button3:// 插入数据
ContentValues contentValues = new ContentValues();
contentValues.put("id", 1);
contentValues.put("username", "AMB");
contentValues.put("userpass", "88520");
SqliteDateBaseHelper dateBaseHelper2 = new SqliteDateBaseHelper(
SqliteActivity.this, "mydatebase", 2);
SQLiteDatabase db2 = dateBaseHelper2.getWritableDatabase();
db2.insert("userinfo", null, contentValues);
break;
case R.id.button4:// 更新数据
SqliteDateBaseHelper dateBaseHelper3 = new SqliteDateBaseHelper(
SqliteActivity.this, "mydatebase", 2);
SQLiteDatabase db3 = dateBaseHelper3.getWritableDatabase();
ContentValues values = new ContentValues();
values.put("username", "再见_孙悟空");
db3.update("userinfo", values, "id=?", new String[] { "1" });
break;
case R.id.button5:// 查找数据
SqliteDateBaseHelper dateBaseHelper4 = new SqliteDateBaseHelper(
SqliteActivity.this, "mydatebase", 2);
SQLiteDatabase db4 = dateBaseHelper4.getReadableDatabase();
Cursor cursor = db4.query("userinfo", new String[] { "id",
"username", "userpass" }, "id=?", new String[] { "1" },
null, null, null);
while (cursor.moveToNext()) {
String username = cursor.getString(cursor
.getColumnIndex("username"));
System.out.println(username);
}
break;
}
}
}
这里要注意的就是The
* database is not actually created or opened until one of
* getWritableDatabase() or getReadableDatabase() is called.
要调用getWritableDatabase() or getReadableDatabase()后数据库才被真正的创建
从上往下依次按下这些按钮,得到
在底层操作数据库:
首先打开cmd
然后输入adb,如果显示是什么没找到之类的话,那就是还没配置adb
那么可以参考http://jingyan.baidu.com/article/17bd8e52f514d985ab2bb800.html
配置好了的话,输入adb shell进入根目录(必须要再开启模拟器之后)
然后 输入ls -l查看文件夹
会看到一大推的数据,找到data文件夹,切换进去
再通过ls -l查看,
再ls -l 查看一下:找到你这个项目的包名
cd com.example.sqldemo切进去
看到了databases,本来是没有的,按了第一个按钮后才创建的
切进去,看到了数据库contact 和 mydatebase
然后进入数据库 sqlite3 mydatebase
进去后调用.schema查看表信息
接下来的操作就是sql语言咯
相关推荐
学习SQLite源码,不仅可以帮助你深入理解数据库的工作原理,还能提升你在数据库设计和优化方面的技能。你可以从以下几个方面进行深入学习: 1. SQL解析:研究如何将SQL语句转换为解析树,了解词法分析和语法分析的...
作为新手学习SQLite的一个好例子,“学习SQLite的好例子”这个压缩包可能包含了一个基于SQLite的日记本应用,旨在帮助初学者理解SQLite的基本概念、操作和功能。 SQLite支持SQL语言,这是一门用于管理关系数据库的...
四、学习SQLite的资源 《The Definitive Guide to SQLite, 2nd Edition》是一本经典的SQLite教材,全面介绍了SQLite的原理、API使用、高级特性及最佳实践。阅读这本书,可以帮助开发者深入理解SQLite,提高数据库...
SQLite 是一个轻量级的、开源的嵌入式...其简单的安装过程和易于使用的命令行工具使得它成为一个快速学习和上手的选择。通过上述介绍,您可以在一小时内掌握 SQLite 的基本操作,为您的应用开发提供必要的数据库支持。
总的来说,SQLite的学习笔记涵盖了数据库管理的各个方面,对于初学者和开发者来说,这些都是理解SQLite并有效利用其功能的关键知识。通过深入学习和实践,你可以熟练掌握这个强大的数据库系统,无论是在小型项目还是...
这个压缩包集合了多个SQLite相关的项目,是学习SQLite数据库操作的理想资源。每个项目都涵盖了不同的应用场景和功能实现,下面将对这些项目逐一进行解析,以帮助你深入理解SQLite在Android中的应用。 1. **一个简单...
SQLite3在iOS开发中的应用详解 SQLite3是一种轻量级的、开源的、自包含的数据库引擎,广泛用于移动设备上的应用程序,特别是iOS平台。它允许开发者在应用程序中存储、检索和管理数据,无需依赖外部服务器或网络连接...
在学习SQLite时,了解其事务处理模型是非常重要的。SQLite支持ACID(原子性、一致性、隔离性、持久性)特性,确保数据在并发操作中的正确性。此外,它还提供了多种事务隔离级别,以适应不同的应用需求。学习这些内容...
总的来说,这个压缩包为学习SQLite3提供了一站式的解决方案,无论你是想了解基本概念,还是需要在实际项目中使用SQLite3,都能从中找到所需。通过图形界面工具进行直观操作,借助汉化包消除语言障碍,利用中文文档...
SQLite 是一个轻量级的、开源的嵌入式关系型数据库系统,被广泛应用于移动设备、嵌入式系统以及各种应用程序中。...无论是初学者还是经验丰富的开发者,都可以通过深入学习SQLite来提升自己的数据库技能。
SQLite是一种开源、轻量级的嵌入式数据库引擎,它不需要独立的服务进程,可以直接在应用程序中使用。SQLite具有跨平台性、高效性、...通过深入学习SQLite,开发者可以更好地掌握数据管理,提升应用的效率和用户体验。
这个CHM(Compiled Help Manual)文件是一种常见的Windows帮助文档格式,你可以通过它快速查找和学习SQLite的各种功能和命令。 其次,`SQLite语法备忘录.doc`文档提供了SQLite SQL语言的基本语法规则。SQL是...
学习SQLite时,你需要掌握SQL语言的基础语法,例如: - CREATE TABLE用于创建表。 - INSERT INTO用于添加数据。 - SELECT用于查询数据,可以结合WHERE、GROUP BY、HAVING和ORDER BY进行复杂查询。 - UPDATE用于更新...
这使得开发者可以使用熟悉的ADO对象和方法来执行CRUD(创建、读取、更新、删除)操作,而无需深入学习SQLite的特定API。 要使用SQLite ODBC驱动,你需要进行以下步骤: 1. **安装驱动**:这通常涉及下载并运行像`...
这对于数据库的调试、测试和学习SQLite3语法非常有用。 SQLite3的主要特点包括: 1. **事务性**:SQLite3支持ACID(原子性、一致性、隔离性、持久性)事务,保证了数据的完整性和一致性。 2. **跨平台**:SQLite3...
对于初学者来说,了解这些基本概念和操作是学习SQLite的第一步。通过实践,可以逐步掌握如何在实际项目中使用SQLite来存储和管理数据。记得多做练习,尝试创建自己的数据库,理解每个命令的作用,这样就能更好地理解...
学习SQLite,你需要理解如何创建数据库、表和索引,如何使用SQL语句进行数据操作,以及如何进行事务处理。手册会详细讲解每个命令和函数的用法,包括错误处理和性能优化策略。 此外,SQLite还具有跨平台性,可以在...
理解这些基本概念是学习SQLite的基础。 4. 表的创建与操作:CREATE TABLE语句用于定义表结构,包括字段名、数据类型和约束条件。INSERT语句用于向表中插入数据,UPDATE用于修改已存在的记录,而DELETE用于删除记录...
在本教程中,我们将会学习SQLite数据库的基本使用方法,包括如何创建新数据库,如何使用SQLite编程,以及SQLite适用的范围和最佳使用场合。 SQLite适用的范围很广,尤其是在需要快速开发、跨平台数据库应用的场景中...