首先要用一个类来继承SQLiteOpenHelper,并必须实现

 public DatabaseHelper(Context context, String name, CursorFactory factory,
int version) {
super(context, name, factory, version);
}

具体类如下(关键地方我都加了注释):

package com.example.sqllitedemo;

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 = 2; // SQLiteOpenHelper子类必须有该构造函数
// 第一次参数Activity对象,第二个表名,第三个暂时空值,第四个数据库的版本号
public DatabaseHelper(Context context, String name, CursorFactory factory,
int version) {
super(context, name, factory, version);
// TODO Auto-generated constructor stub
} public DatabaseHelper(Context context, String name, int version) {
this(context, name, null, version);
} public DatabaseHelper(Context context, String name) {
this(context, name, VERSION);
} // 该函数第一次创建数据库的时候执行,实际上是在第一次得到SqliteDatabase对象的时候执行
@Override
public void onCreate(SQLiteDatabase db) {
// TODO Auto-generated method stub
System.out.println("create a database");
db.execSQL("create table user(id int,name verchar(20))");
} @Override
public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {
// TODO Auto-generated method stub
System.out.println("update a database");
}
}

调用代码如下:

package com.example.sqllitedemo;

import android.app.Activity;
import android.app.ActionBar;
import android.app.Fragment;
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.ArrayAdapter;
import android.widget.Button;
import android.widget.AutoCompleteTextView; public class MainActivity extends Activity implements OnClickListener { @Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main); Button btnCreate = (Button) findViewById(R.id.btnCreateDatabase);
btnCreate.setOnClickListener(this); Button btnUpdatDatabase = (Button) findViewById(R.id.btnUpdateDatabase);
btnUpdatDatabase.setOnClickListener(this); Button btnInsert = (Button) findViewById(R.id.btnInsert);
btnInsert.setOnClickListener(this); Button btnUpdate = (Button) findViewById(R.id.btnUpdate);
btnUpdate.setOnClickListener(this); Button btnQuery = (Button) findViewById(R.id.btnQuery);
btnQuery.setOnClickListener(this);
} @Override
public void onClick(View v) {
// TODO Auto-generated method stub
switch (v.getId()) {
case R.id.btnCreateDatabase:
DatabaseHelper helper = new DatabaseHelper(this, "School_db");
SQLiteDatabase db = helper.getReadableDatabase();
break;
case R.id.btnUpdateDatabase:
DatabaseHelper helper1 = new DatabaseHelper(this, "School_db", 2);
SQLiteDatabase db1 = helper1.getReadableDatabase();
break;
case R.id.btnInsert:
// 用于存储数据的键值对,键为列名
ContentValues values = new ContentValues();
values.put("name", "张山");
values.put("id", 1);
DatabaseHelper helper2=new DatabaseHelper(this,"School_db");
SQLiteDatabase db2=helper2.getWritableDatabase();
db2.insert("user", null, values);
//方法二、直接使用ExecSQL
db2.execSQL("insert into user(id,name) values(?,?)", new Object[]{2,"李四"});
break;
case R.id.btnUpdate:
DatabaseHelper helper3=new DatabaseHelper(this,"School_db");
SQLiteDatabase db3=helper3.getWritableDatabase();
ContentValues values1=new ContentValues();
values1.put("name", "zhangshan"); db3.update("user", values1, "id=?" , new String[]{"1"});
break;
case R.id.btnQuery:
DatabaseHelper helper4=new DatabaseHelper(this,"School_db");
SQLiteDatabase db4=helper4.getReadableDatabase();
Cursor cursor=db4.query("user",new String[]{"id","name"},"id=?",new String[]{"1"},
"","","");
while(cursor.moveToNext())
{
String name=cursor.getString(cursor.getColumnIndex("name"));
System.out.println(name);
}
break; default:
break;
}
}
}

除了上述的crud的方法,还可以使用下面的方式

DatabaseHelper myDBHelper=new DatabaseHelper(this,"School_db");
//增加
public void addPerson(String name) {
SQLiteDatabase database = myDBHelper.getWritableDatabase();
//先判断数据库是否可用
if (database.isOpen()) { database.execSQL("insert into user(name) values(?,?)", new Object[]{name});
database.close();
}
} //查找
public boolean findPerson(String name) {
boolean result = false;
SQLiteDatabase database = myDBHelper.getReadableDatabase();
if (database.isOpen()) {
Cursor cursor = database.rawQuery("select * from user where name=?", new String[]{name});
if (cursor.moveToFirst()) {//游标是否移动到下一行,如果是,那说明有数据返回
Log.d(tag, "count:" + cursor.getColumnCount());
int nameIndex = cursor.getColumnIndex("name");
Log.d(tag, "name:" + cursor.getString(nameIndex));
cursor.close();
result = true;
} else {
result = false; }
database.close();
}
return result;
} //删除一条数据
public void deletePerson(String name) {
SQLiteDatabase database = myDBHelper.getWritableDatabase();
if (database.isOpen()) {
database.execSQL("delete from user where name=?", new Object[]{name});
}
database.close();
} //更新一条数据
public void updatePerson( String newName,String name) {
SQLiteDatabase database = myDBHelper.getWritableDatabase();
if (database.isOpen()) {
database.execSQL("update user set name=? where name=?", new Object[]{newName, name});
}
database.close();
} //查找所有person
public List<user> findAllPerson(){
List<user> userList = new ArrayList<user>();
SQLiteDatabase database = myDBHelper.getReadableDatabase();
if(database.isOpen()){
Cursor cursor = database.rawQuery("select * from user", null);
while(cursor.moveToNext()){
int nameIndex = cursor.getColumnIndex("name"); Person person = new Person(name); personList.add(user);
} }
database.close();
return uerList;
}

Android 操作Sqlite的更多相关文章

  1. Android 操作SQLite基本用法

    一.SQLite的介绍 1.SQLite简介 SQLite是一款轻型的数据库,是遵守ACID的关联式数据库管理系统,它的设计目标是嵌入  式的,而且目前已经在很多嵌入式产品中使用了它,它占用资源非常的 ...

  2. android 操作sqlite的一点小技巧

    1.android 在sqlite插入数据时,是非常耗时的操作,原因是sqlite缺省会为每个插入操作开启一个事务,当数量变多的时候,自然时间就变得很慢,这时候可以考虑在插入等操作时先开启一个事务,再 ...

  3. android操作sqlite数据库及心得

    写这篇文章主要是网上的对sqlite的操作太多且太杂,非常多时候都不能非常好的运用到自己的项目中,结构不清晰,我自己写了一篇适合刚刚接触的人看的操作方法. 近来用android时要将一些数据保存起来, ...

  4. android操作SQLite

    一.SQLite SQLite是一种转为嵌入式设备设计的轻型数据库,其只有五种数据类型,分别是: NULL: 空值 INTEGER: 整数 REAL: 浮点数 TEXT: 字符串 BLOB: 大数据 ...

  5. android 对sqlite数据库的增删改查等各种操作

    转载:http://blog.csdn.net/vrix/article/details/6717090 package com.sqlite.main; import java.io.File; i ...

  6. 我的Android六章:Android中SQLite数据库操作

    今天学习的内容是Android中的SQLite数据库操作,在讲解这个内容之前小编在前面有一篇博客也是讲解了SQLite数据库的操作,而那篇博客的讲解是讲述了 如何在Window中通过DOM来操作数据库 ...

  7. 无废话Android之android下junit测试框架配置、保存文件到手机内存、android下文件访问的权限、保存文件到SD卡、获取SD卡大小、使用SharedPreferences进行数据存储、使用Pull解析器操作XML文件、android下操作sqlite数据库和事务(2)

    1.android下junit测试框架配置 单元测试需要在手机中进行安装测试 (1).在清单文件中manifest节点下配置如下节点 <instrumentation android:name= ...

  8. Android之操作SQLite

    一.SQLite的介绍 1.SQLite简介 SQLite是一款轻型的数据库,是遵守ACID的关联式数据库管理系统,它的设计目标是嵌入  式的,而且目前已经在很多嵌入式产品中使用了它,它占用资源非常的 ...

  9. Android多线程操作sqlite(Sqlite解决database locked问题)

    参考http://blog.csdn.net/sdsxleon/article/details/18259973  很好 https://github.com/2point0/Android-Data ...

随机推荐

  1. 在Docker中运行纸壳CMS并配置使用MySql

    纸壳CMS是基于ASP.Net Core开发的可视化内容管理系统,可以跨平台部署,可以在容器中运行.接下来看看如何在docker中运行纸壳CMS. GitHub:https://github.com/ ...

  2. 《Real Time Rendering》第四章 图形变换

    图形变换是一个将例如点.向量或者颜色等实体进行某种转换的操作.对于计算机图形学的先驱者,掌握图形变换是极为重要的.有了他们,你就可以对象.光源以及摄像机进行定位,变形以及动画添加.你也可以确认所有的计 ...

  3. Jmeter——参数化的9种方法

    本文由作者张迎贞授权网易云社区发布. 一.用户定义的变量 1.右键快捷菜单中选择 添加-配置元件-用户自定义变量. 用户自定义变量中的定义的所有参数的值在测试计划的执行过程中不能发生取值的改变,因此一 ...

  4. Android 创建自定义 View 的属性 (attrs) 时需要注意的问题

    自定义 View 的属性并不难,可以参照官方的文档 https://developer.android.com/training/custom-views/create-view.html 但是需要注 ...

  5. javar入门——基本数据类型

    Java中的数据类型分为两类: 基本数据类型(或者称为原生数据类型) 引用数据类型 基本数据类型 8种:6种基本数据类型,1种字符型,1种布尔型 byte,short,int,long,float,d ...

  6. fail2ban

    在 [DEFAULT] 全局配置中的ignoreip选项中添加被放行的ip地址:ignoreip = 127.0.0.1 172.17.1.218 网段可以加 127.0.0.1/8,用空格隔开就行. ...

  7. Swift 里字符串(九)UTF16View

    即以 UTF16 编码的格式来查看字符串. UTF16View 是一个结构体 @_fixed_layout public struct UTF16View { @usableFromInline in ...

  8. day 51 随机验证码, 验证登陆 ,以及 装饰器在函数中的应用

    前端很好的session 的例子 (随机验证码登陆) https://github.com/Endless-Clould/qianduan 参考: 验证码登录 https://www.cnblogs. ...

  9. day 33js 后续 函数.对象

    前情提要: 今天学习的是js的函数以及简单的类的使用 一:函数的初识别 <!DOCTYPE html> <html lang="en"> <head& ...

  10. 【BZOJ2127】happiness 最小割

    题目大意:有一个$n\times m$的矩阵,矩阵的每个位置上有一个同学,经过一个学期的相处,每个同学和前后左右相邻的同学互相成为了好朋友.这学期要分文理科了,每个同学对于选择文科与理科有着自己的喜悦 ...