SQLite数据库很小,占用内存只有几百K,安卓和IOS都是用的SQLite数据库。

页面:

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical"> <Button
android:id="@+id/btnInsertData"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:text="添加数据" />
<Button
android:id="@+id/btnDeleteData"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:text="删除数据" />
<Button
android:id="@+id/btnUpdateData"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:text="修改数据" />
<Button
android:id="@+id/btnQueryData"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:text="查询数据" /> </LinearLayout>

java

package com.sxt.day06_09;

import java.util.ArrayList;
import java.util.List; import com.sxt.day06_09.entity.StudentBean; import android.app.Activity;
import android.database.Cursor;
import android.database.sqlite.SQLiteDatabase;
import android.os.Bundle;
import android.util.Log;
import android.view.View;
import android.view.View.OnClickListener; public class MainActivity extends Activity { static final String DB_NAME="students.db";
static final String TABLE_NAME="student";
static final String ID="_id";//只能写下划线id
static final String NAME="name";
static final String SEX="sex";
static final String BIRTHDAY="birthday";
static final String HEIGHT="height"; @Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
creatDataBase();//创建数据库
setListener();
} private void setListener() {
setInsertClickListener();
setDeleteClickListener();
setQueryClickListener();
} private void setQueryClickListener() {
findViewById(R.id.btnQueryData).setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
SQLiteDatabase db = openOrCreateDatabase(DB_NAME, MODE_PRIVATE, null);
String sql="select * from "+TABLE_NAME+" where "+NAME+" like ?";
String sql1="select * from "+TABLE_NAME;
Cursor c = db.rawQuery(sql, new String[]{"'%菲%'"});
Cursor c = db.rawQuery(sql, null);//查询只能用rawQuery,返回游标就是查询结果集
List<StudentBean> students=new ArrayList<StudentBean>();
boolean flag = c.moveToFirst();
while(c.moveToNext()){//遍历每一行
int id=c.getInt(c.getColumnIndex(ID));//获取一行的id列
String name=c.getString(c.getColumnIndex(NAME));
String sex=c.getString(c.getColumnIndex(SEX));
String birthday=c.getString(c.getColumnIndex(BIRTHDAY));
double height=c.getDouble(c.getColumnIndex(HEIGHT));
StudentBean bean=new StudentBean(id, name, sex, birthday, height);
students.add(bean);
}
for(StudentBean bean:students){
Log.i("main",bean.toString());
}
c.close();//释放资源
}
});
} private void setDeleteClickListener() {
findViewById(R.id.btnDeleteData).setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
SQLiteDatabase db = openOrCreateDatabase(DB_NAME, MODE_PRIVATE, null);
String sql="delete from "+TABLE_NAME+" where "+NAME+" like '%菲%'";
db.execSQL(sql);
}
});
} private void setInsertClickListener() {
findViewById(R.id.btnInsertData).setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
SQLiteDatabase db=openOrCreateDatabase(DB_NAME, MODE_PRIVATE, null);
insertData(db);
//数据库路径为:data/data/com.ityw.exer15_1/databases/students.db
}
});
} //创建数据库
private void creatDataBase() {
SQLiteDatabase db = openOrCreateDatabase(DB_NAME, MODE_PRIVATE, null);//创建数据库
String sql="create table if not exists "+TABLE_NAME+"("
+ID+" integer primary key autoincrement,"
+NAME+" varchar(50),"
+SEX+" varchar(2),"
+BIRTHDAY+" datetext,"
+HEIGHT+" real)";
db.execSQL(sql);
} private void insertData(SQLiteDatabase db) {
String sql="insert into "+TABLE_NAME+"("+
NAME+","+SEX+","+BIRTHDAY+","+HEIGHT+")values("+
"'张飞','男','1990-5-5',1.99)";
db.execSQL(sql);
sql="insert into "+TABLE_NAME+"("+
NAME+","+SEX+","+BIRTHDAY+","+HEIGHT+")values("+
"'王菲','女','1990-8-5',1.69)";
db.execSQL(sql);
sql="insert into "+TABLE_NAME+"("+
NAME+","+SEX+","+BIRTHDAY+","+HEIGHT+")values("+
"'刘亦菲','女','1991-8-5',1.71)";
db.execSQL(sql);
} }

android 43 SQLite数据库的更多相关文章

  1. android 一个SQLite数据库多个数据表的基本使用框架 (带demo)

    android 一个SQLite数据库多个数据表(带demo) 前言        demo演示        一.搭建        二.建立实体类        三.建立数据库操作类        ...

  2. Qt for Android 打包 SQLite 数据库

    Qt for Android 调用 SQLite 数据库时, 怎样将已经存在的数据库附加到 APK 中? 直接在你项目里面的Android源码的根目录下新建一个文件夹assets, 数据库就可以放里面 ...

  3. Android实现SQLite数据库联系人列表

    Android实现SQLite数据库联系人列表 开发工具:Andorid Studio 1.3 运行环境:Android 4.4 KitKat 工程内容 实现一个通讯录查看程序: 要求使用SQLite ...

  4. Android中SQLite数据库操作(1)——使用SQL语句操作SQLite数据库

    下面是最原始的方法,用SQL语句操作数据库.后面的"Android中SQLite数据库操作(2)--SQLiteOpenHelper类"将介绍一种常用的android封装操作SQL ...

  5. android中sqlite数据库的基本使用和添加多张表

    看了很多关于android使用sqlite数据库的文章,很多都是介绍了数据库的建立和表的建立,而表通常都是只建立一张,而实际情况我们用到的表可能不止一张,那这种情况下我们又该怎么办呢,好了,下面我教大 ...

  6. Android中Sqlite数据库多线程并发问题

    最近在做一个Android项目, 为了改善用户体验,把原先必须让用户“等待”的过程改成在新线程中异步执行.但是这样做遇到了多个线程同时需要写Sqlite数据库,导致操作数据库失败. 本人对Java并不 ...

  7. Android之SQLite数据库篇

    一.SQLite简介 Google为Andriod的较大的数据处理提供了SQLite,他在数据存储.管理.维护等各方面都相当出色,功能也非常的强大. 二.SQLite的特点 1.轻量级使用 SQLit ...

  8. Android之SQLite数据库使用

    转载整理于:http://my.csdn.net/lmj623565791 我刚开始接触Android的时候甚至都不敢相信,Android系统竟然是内置了数据库的!好吧,是我太孤陋寡闻了.由于我之前是 ...

  9. android安卓Sqlite数据库实现用户登录注册

    看了很多别人写的安卓SQlite数据的操作代码,一点也不通俗易懂,我觉得我写的不错,而且安卓项目也用上了,所以在博客园里保存分享一下!建立一个类 并继承SQLiteOpenHelper public ...

随机推荐

  1. Android DropBoxManager Service

    Android DropBoxManager Service 什么是 DropBoxManager ? Enqueues chunks of data (from various sources – ...

  2. Android 开机过程PMS分析

    12-13 12:25:05.595 3253 3253 SystemServer !@Boot: Start PackageManagerService pm/PackageManagerServi ...

  3. ubuntu 14.04 安装preforce

    官网: http://www.perforce.com/ http://www.perforce.com/support-services 1. 下载相关文件 http://filehost.perf ...

  4. WPF后台访问XAML元素

    当我们需要从后台访问xaml文件时,我们可以通过这样的方式来操作: private void button1_Click(object sender, RoutedEventArgs e) { Sys ...

  5. keil对51单片机变量和函数的编译处理

    (1)初始值不是0的全局变量 在程序调到main()函数执行前,除了要进行内存清零.初始化堆栈外,还需要将全局变量的初始值加载到RAM的指定区域(编译过程中为全局变量分配的空间). (2)未初始化的局 ...

  6. base64的一个应用情景

    AddActivity.xml rushrank.xml 不过AddActivity.xml不也是通过二进制流就传过去了吗?      事实上是可以的,只要不将这些二进制的数据写下来,传播是可以的,只 ...

  7. go bytes缓冲区使用介绍

    缓冲区原理简介: go字节缓冲区底层以字节切片做存储,切片存在长度len与容量cap, 缓冲区写从长度len的位置开始写,当len>cap时,会自动扩容.缓冲区读会从内置标记off位置开始读(o ...

  8. Spring MVC和Struts2的区别

    1. 机制:spring mvc的入口是servlet,而struts2是filter,这样就导致了二者的机制不同. 2. 性能:spring会稍微比struts快.spring mvc是基于方法的设 ...

  9. hadoop 学习笔记 (十) mapreduce2.0

    MapReduce的特色---不擅长的方面 >实时计算 像mysql一样,在毫秒级或者秒级内返回结果 >流式计算 Mapreduce的输入数据时静态的,不能动态变化 MapReduce自身 ...

  10. C/C++ 中的0长数组(柔性数组)

    转自C/C++ 中的0长数组(柔性数组) 在标准C和C++中0长数组如charArray[0]是不允许使用的,因为这从语义逻辑上看,是完全没有意义的.但是,GUN中却允许使用,而且,很多时候,应用在了 ...