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应用开发提供了一种 ...
随机推荐
- 段错误调试神器 - Core Dump详解
一.前言: 有的程序可以通过编译, 但在运行时会出现Segment fault(段错误). 这通常都是指针错误引起的. 但这不像编译错误一样会提示到文件某一行, 而是没有任何信息, 使得我们的调试变得 ...
- devi into python 笔记(四)python的类
import 与 from ... import ...: #types只是一个包,FunctionType只是这个包里的一个函数.这里用它来演示 import types #如果要用Function ...
- Unity给力插件之LittleLocalization
从网上随便下载了一个多语言的插件,原理很简单,自己就可以写一个.不过本身插件做的算比较全面,拿来就能用,所以精简了一下,然后重新打了个包. 为了快速使用插件,在此把步骤列出来. 1.创建空物体,添加L ...
- JSP页面同时操作所有Input输入框
项目里要写个function,对页面上所有input输入框进行非空判断,对非空input全部置为readOnly,提交的时候判断是否有空白项目. var inputs=document.getElem ...
- LCD framebuffer驱动设计文档
内容提要:1. android display相关的名词2. 调试LCD驱动需要注意的步骤3. 关于帧缓冲区及I/O内存---------------------------------------- ...
- ajax_demo:GET POST发送数据
GET,通过url发送数据 <%@ page language="java" contentType="text/html; charset=UTF-8" ...
- iPhone 6出现后,如何将一份设计稿支持多个尺寸?
http://mp.weixin.qq.com/s?__biz=MzA4NTQzNTMwOA==&mid=201174413&idx=3&sn=c3fe5b3459bac288 ...
- .Net设计模式_工厂模式(1)
工厂模式有三个模式: 简单工厂(Simple Factory)模式 工厂方法(Factory Method)模式 抽象工厂(Abstract Factory)模式 1.简单工厂 引言: 我是消费者,我 ...
- Yii2 自动更新时间created_at updated_at
创建model之后,新建一条记录,结果设计的表中created_at 字段 updated_at 字段 都是datetime 类型的,却不能自动插入当前时间.查看了资料,解决如下: 1.在class ...
- 验证码 jsp生成
<%@ page contentType="image/jpeg" import="java.awt.*, java.awt.image.*,java.util.* ...