Android学习笔记(SQLite的简单使用)
1.SQLite介绍
SQLite,是一款轻型的数据库,是遵守ACID的关系型数据库管理系统,它包含在一个相对小的C库中。它是D.RichardHipp建立的公有领域项目。它的设计目标是嵌入式的,而且目前已经在很多嵌入式产品中使用了它,它占用资源非常的低,在嵌入式设备中,可能只需要几百K的内存就够了
2.SQLiteOpenHelper的使用方法
常用方法
1.getReadableDatabase():得到可读的数据库,返回一个SQLiteDatabase对象,提供一些管理数据库的方法
2.getWritableDatabase():得到一个可写的数据库,返回一个SQLiteDataba
3.onCreate(SQLiteDatabase db):创建一个表
4.onOpen(SQLiteDatabase db):打开数据库
5.onUpgrade(SQLiteDatabase db,int oldVersion,int newVersion):修改数据库的表结构的方法
6.close()
当需要操作数据库的时候,必须先获得一个SQLiteOpenHelper,他是一个抽象类,我们必须写一个类,来继承他,继承之后,我们拥有了getReadableDatabase和getWritableDatabase两个方法,
3.使用adb访问SQLite
进入adb命令行,查询数据库表,和普通的sql语句完全一样(select * from user)
Adb为调试工具,进入命令行 /data/data 当我们创建应用程序的时候,只要应用运行,都会在此目录下生成
当点击创建数据库之后,会生成如下文件夹

进入Databases

链接数据库实例


4.SQLite实现增删改查的Demo
布局代码(线性水平布局,五个按钮)
<LinearLayout 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:orientation="vertical"
tools:context="com.example.sqlitedemo.MainActivity" > <Button
android:id="@+id/createBtn"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:text="创建数据库"/> <Button
android:id="@+id/updateBtn"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:text="更新数据库"/> <Button
android:id="@+id/insertDataBtn"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:text="插入数据"/> <Button
android:id="@+id/updateDataBtn"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:text="更新数据"/> <Button
android:id="@+id/queryDataBtn"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:text="查询数据"/>
</LinearLayout>
数据库工具类代码
package com.example.sqlitedemo.db; import android.content.Context;
import android.database.sqlite.SQLiteDatabase;
import android.database.sqlite.SQLiteDatabase.CursorFactory;
import android.database.sqlite.SQLiteOpenHelper; public class DatabaseHelper extends SQLiteOpenHelper{ private static final int VERSION = 1;
/**
* 在sqliteOpenHelper子类中必须有该构造函数,
* 第一个参数为activity
* 第二个参数:表的名字
* 第三个函数:null
* 第四个参数:数据库的版本
*/ public DatabaseHelper(Context context, String name, CursorFactory factory,
int version) {
super(context, name, factory, version);
// TODO Auto-generated constructor stub
} /**
* 构造函数2
* @param context
* @param name
*/
public DatabaseHelper(Context context, String name) {
// TODO Auto-generated constructor stub
this(context, name, VERSION);
} /**
* 构造函数3
* @param context
* @param name
* @param version
*/
public DatabaseHelper(Context context, String name,int version) {
// TODO Auto-generated constructor stub
this(context, name, null, version);
} /**
* 该函数在第一次创建数据库的时候执行,第一次得到SQLiteDatabase对象的时候,调用次方法
* @param db
*/
@Override
public void onCreate(SQLiteDatabase db) {
// TODO Auto-generated method stub
System.out.println("创建数据库");
String strCreateSQL = "create table user(id int,name varchar(20))";
db.execSQL(strCreateSQL);
} /**
* 执行更新数据库
* @param db
* @param oldVersion
* @param newVersion
*/
@Override
public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {
// TODO Auto-generated method stub
System.out.println("更新数据库");
} }
数据库操作类代码
package com.example.sqlitedemo; import com.example.sqlitedemo.db.DatabaseHelper; import android.app.Activity;
import android.content.ContentValues;
import android.database.Cursor;
import android.database.sqlite.SQLiteDatabase;
import android.os.Bundle;
import android.view.Menu;
import android.view.MenuItem;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.Button;
import android.widget.Toast; public class MainActivity extends Activity { private Button createBtn;
private Button updateBtn;
private Button insertDataBtn;
private Button updateDataBtn;
private Button queryDataBtn; @Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
createBtn = (Button) findViewById(R.id.createBtn);
updateBtn = (Button) findViewById(R.id.updateBtn);
insertDataBtn = (Button) findViewById(R.id.insertDataBtn);
updateDataBtn = (Button) findViewById(R.id.updateDataBtn);
queryDataBtn = (Button) findViewById(R.id.queryDataBtn); createBtn.setOnClickListener(new createListener());
updateBtn.setOnClickListener(new updateListener());
insertDataBtn.setOnClickListener(new insertDataListener());
updateDataBtn.setOnClickListener(new updateDataListener());
queryDataBtn.setOnClickListener(new queryDataListener());
} class createListener implements OnClickListener{ @Override
public void onClick(View v) {
// TODO Auto-generated method stub
DatabaseHelper dbHelper = new DatabaseHelper(MainActivity.this, "test_mzl");
SQLiteDatabase db = dbHelper.getWritableDatabase(); }
} class updateListener implements OnClickListener{ @Override
public void onClick(View v) {
// TODO Auto-generated method stub
//更改数据库实力的版本。默认就会执行onUpgrade方法
DatabaseHelper dbHelper = new DatabaseHelper(MainActivity.this, "test_mzl",2);
SQLiteDatabase db = dbHelper.getWritableDatabase();
} } class insertDataListener implements OnClickListener{ @Override
public void onClick(View v) {
// TODO Auto-generated method stub
//生成一个数据库写入时存放数据的对象,键为列名,值为值
ContentValues values = new ContentValues();
values.put("id", 1);
values.put("name", "mzl"); //更改数据库实力的版本。默认就会执行onUpgrade方法
DatabaseHelper dbHelper = new DatabaseHelper(MainActivity.this, "test_mzl",2);
SQLiteDatabase db = dbHelper.getWritableDatabase();
db.insert("user", null, values);
Toast.makeText(MainActivity.this, "插入成功", Toast.LENGTH_SHORT).show();
} } class updateDataListener implements OnClickListener{ @Override
public void onClick(View v) {
// TODO Auto-generated method stub
ContentValues values = new ContentValues();
values.put("name", "mzl修改");
//更改数据库实力的版本。默认就会执行onUpgrade方法
DatabaseHelper dbHelper = new DatabaseHelper(MainActivity.this, "test_mzl",2);
SQLiteDatabase db = dbHelper.getWritableDatabase();
db.update("user", values, "id=?", new String[]{"1"});
Toast.makeText(MainActivity.this, "更新成功", Toast.LENGTH_SHORT).show();
} } class queryDataListener implements OnClickListener{ @Override
public void onClick(View v) {
// TODO Auto-generated method stub
//更改数据库实力的版本。默认就会执行onUpgrade方法
DatabaseHelper dbHelper = new DatabaseHelper(MainActivity.this, "test_mzl",2);
SQLiteDatabase db = dbHelper.getReadableDatabase();
Cursor cursor = db.query("user", new String[]{"id","name"}, "id=?", new String[]{"1"}, null, null, null);
while(cursor.moveToNext()){
String name = cursor.getString(cursor.getColumnIndex("name"));
Toast.makeText(MainActivity.this, name, Toast.LENGTH_SHORT).show();
}
} }
@Override
public boolean onCreateOptionsMenu(Menu menu) {
// Inflate the menu; this adds items to the action bar if it is present.
getMenuInflater().inflate(R.menu.main, menu);
return true;
} @Override
public boolean onOptionsItemSelected(MenuItem item) {
// Handle action bar item clicks here. The action bar will
// automatically handle clicks on the Home/Up button, so long
// as you specify a parent activity in AndroidManifest.xml.
int id = item.getItemId();
if (id == R.id.action_settings) {
return true;
}
return super.onOptionsItemSelected(item);
}
}
Android学习笔记(SQLite的简单使用)的更多相关文章
- Android学习笔记--Sqlite数据库
前几天学习了Android中的数据存储,包括文件存储,SharedPreferences存储,还有就是Acndroid中的特色:SQLite数据库存储了.让我比较惊讶的是Android中竟然内嵌了一个 ...
- Android学习笔记——SQLite
该工程的功能是实现关于数据库的操作,即creat.update.insert.query.delete 调试的时候请用模拟器,用真机调试的时候进入cmd-adb shell,再进入cd data/da ...
- (转)Android学习笔记---SQLite介绍,以及使用Sqlite,进行数据库的创建,完成数据添删改查的理解
原文:http://blog.csdn.net/lidew521/article/details/8655229 1.SQLite介绍:最大特点是,无数据类型;除了可以使用文件或SharedPrefe ...
- Android学习笔记:ListView简单应用--显示文字列表
在activity中的编写如下代码: final List<String> items = new ArrayList<String>(); //设置要显示的数据,这里因为是例 ...
- Android学习笔记_46_fragment的简单应用
Fragments 诞生初衷 http://www.cnblogs.com/TerryBlog/archive/2012/02/17/2355753.html 自从Android 3.0中引入frag ...
- Android学习笔记36:使用SQLite方式存储数据
在Android中一共提供了5种数据存储方式,分别为: (1)Files:通过FileInputStream和FileOutputStream对文件进行操作.具体使用方法可以参阅博文<Andro ...
- 【转】 Pro Android学习笔记(五五):调试和分析(3):adb命令、模拟器控制台和StrictMode
目录(?)[-] adb命令 模拟器Console StrictMode adb命令 我们在学习SQLite的使用,介绍过部分adb命令的使用,见Pro Android学习笔记(五):了解Conten ...
- udacity android 学习笔记: lesson 4 part a
udacity android 学习笔记: lesson 4 part a 作者:干货店打杂的 /titer1 /Archimedes 出处:https://code.csdn.net/titer1 ...
- Android 学习笔记之Volley(七)实现Json数据加载和解析...
学习内容: 1.使用Volley实现异步加载Json数据... Volley的第二大请求就是通过发送请求异步实现Json数据信息的加载,加载Json数据有两种方式,一种是通过获取Json对象,然后 ...
- Android学习笔记之JSON数据解析
转载:Android学习笔记44:JSON数据解析 JSON(JavaScript Object Notation)是一种轻量级的数据交换格式,采用完全独立于语言的文本格式,为Web应用开发提供了一种 ...
随机推荐
- HDU-1395 2^x mod n = 1
http://acm.hdu.edu.cn/showproblem.php?pid=1395 怎样取余是关键.. 2^x mod n = 1 Time Limit: 2000/1000 MS (Jav ...
- Can't initialize OCI. Error -1
今天使用Toad连接Oracle时出现"Can't initialize OCI. Error -1" 解决方法 因为是刚做的windows 7系统,所以没有设置更改通知的时间 把 ...
- Cookie及Session文件在本机的存放位置
1. Cookie的存放位置 D:\Users\xlxiao\AppData\Roaming\Microsoft\Windows\Cookies 2. Session的存放位置(目前未解决)
- Linux 修改默认文件关联打开程序
从总体上讲 /etc/gnome/defaults.list 保存了全局的打开方式-/.local/share/applications/mimeapps.list 保存了个人的打开方式当这两个文件不 ...
- HDOJ/HDU 2087 剪花布条(indexOf()应用~~)
Problem Description 一块花布条,里面有些图案,另有一块直接可用的小饰条,里面也有一些图案.对于给定的花布条和小饰条,计算一下能从花布条中尽可能剪出几块小饰条来呢? Input 输入 ...
- 2013 ACM区域赛长沙 A Alice’s Print Service HDU 4791
题意:就是一个打印分段收费政策,印的越多,单张价格越低,输入需要印刷的数量,求最小印刷费用一个细节就是,比当前还小的状态可能是最后几个. #include<stdio.h> #includ ...
- 一步一步写一个简单通用的makefile(二)
这一篇源代码沿用上一篇的源代码hellomake.c hellofunc.c hellofunc.h makefile 但是代码内容和结构有变化,如下: . ├── include │ └── h ...
- 存储过程实例总结(开发中的错误与总结,调试,数据库函数DATEDIFF计算当前日期是否在本周内)
USE [POND] GO /****** Object: StoredProcedure [dbo].[OrderChargeList] Script Date: 04/16/2014 13:32: ...
- 交叉编译中的 --sysroot 等等在编译时的作用
--sysroot=dir 的作用 如果在编译时指定了-sysroot=dir 就是为编译时指定了逻辑目录.编译过程中需要引用的库,头文件,如果要到/usr/include目录下去找的情况下,则会在前 ...
- Qt 对象间的父子关系
C++中只要有一个new就必须要有一个delete与之对应 但是Qt中的对象之间有特殊的关系 Qt 对象间的父子关系 每一个对象都保存有它所有子对象的指针 每一个对象都有一个指向其父对象的指针 par ...