首先要用一个类来继承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. [C#学习笔记]lock锁的解释与用法

    写在前面 前几时在写业务代码的时候,看到有用到lock这个方法的,而我竟然并不知道是做什么用的,所以查找了许多博客文章,弄懂了百分之七八十,在此做下笔记. 感谢博客 http://www.cnblog ...

  2. js url 参数 转换成 json 对象数据

    some=params&over=here => {"some":"params","over":"here&quo ...

  3. Map 综述(三):彻头彻尾理解 ConcurrentHashMap

    https://blog.csdn.net/justloveyou_/article/details/72783008

  4. RabbitMQ实现的RPC

    1.主要思路 1.生产者发布任务时,指定properties,告知消费者处理任务完毕之后,将结果存储到reply_to指定的Queue中,本次任务的id是correlation_id 2.消费者消费完 ...

  5. django 获取request请求对象及response响应对象中的各种属性值

    django request对象和HttpResponse对象 HttpRequest对象(除非特殊说明,所有属性都是只读,session属性是个例外) HttpRequest.scheme 请求方案 ...

  6. git install

    wget -O git-master.zip https://codeload.github.com/git/git/zip/master unzip git-master.zip cd git-ma ...

  7. hdoj1180 诡异的楼梯(bfs+奇偶判断)

    手癌!日常手癌!被自己气死! #include<iostream> #include<cstring> #include<queue> #include<al ...

  8. Mybatis的cache

    相关类:org.apache.ibatis.executor.CachingExecutor 相关代码: public <E> List<E> query(MappedStat ...

  9. Zookeeper之Curator(1)客户端基本的创建,删除,更新,查找操作api

    Curator Framework提供了简化使用zookeeper更高级的API接口.它包涵很多优秀的特性,主要包括以下三点: 自动连接管理:自动处理zookeeper的连接和重试存在一些潜在的问题: ...

  10. 使用sqlyog连接到服务器数据库,实现可视化数据操作。(完美解决版。)《亲测!!!!》

      服务器中的表 select Host ,User ,Select_priv ,Insert_priv ,Update_priv ,Delete_priv ,Create_priv ,Drop_pr ...