关于android的DB操作
package com.metoo.girls;
import android.content.ContentValues;
import android.content.Context;
import android.database.Cursor;
import android.database.sqlite.SQLiteDatabase;
import android.database.sqlite.SQLiteOpenHelper;
import android.util.Log;
/**
* @author wbhuang
* @time 20130912
* @description 数据库操作封装
*/
public class GirlsDbHelper {
private static String TAG = "GirlsDbHelper";
private static GirlsDbHelper girlsDbHelper = null;
private static DatabaseHelper dbHelper;
private static SQLiteDatabase db;
private static final String GRILS_DB_NAME = "girls.db";
private static final int GIRLS_DB_VERSION = 1;
private Context context;
private GirlsDbHelper(Context c) {
context = c;
}
private static class DatabaseHelper extends SQLiteOpenHelper {
public DatabaseHelper(Context c) {
super(c, GRILS_DB_NAME, null, GIRLS_DB_VERSION);
}
@Override
public void onCreate(SQLiteDatabase arg0) {
}
@Override
public void onUpgrade(SQLiteDatabase arg0, int arg1, int arg2) {
}
}
public static GirlsDbHelper getInstance(Context c) {
if (null == girlsDbHelper) {
girlsDbHelper = new GirlsDbHelper(c);
}
return girlsDbHelper;
}
/**
* 打开数据库
*/
public void open() {
Log.v(TAG, "open");
dbHelper = new DatabaseHelper(context);
db = dbHelper.getWritableDatabase();
}
/**
* 关闭数据库
*/
public void close() {
Log.v(TAG, "close");
db.close();
dbHelper.close();
}
/**
* 插入数据
* @param tblName 表名
* @param values 要插入的列对应值
* @return
*/
public long insert(String tblName, ContentValues values) {
return db.insert(tblName, null, values);
}
/**
* 删除数据
* @param tblName 表名
* @param deleteCondition 删除条件
* @param deleteArgs 如果deleteCondition中有"?"号,将用次数组替换
* @return
*/
public long delete(String tblName, String deleteCondition, String[] deleteArgs) {
return db.delete(tblName, deleteCondition, deleteArgs);
}
/**
* 更新数据
* @param tblName 表名
* @param values 要更新的列
* @param selection 更新的条件
* @param selectArgs 如果selection中有"?"将由此数组中的值替换
* @return
*/
public long update(String tblName, ContentValues values, String selection, String[] selectArgs) {
return db.update(tblName, values, selection, selectArgs);
}
/**
* 查询多行数据
* @param tblName 表名
* @param columns 查询的列
* @param selection 查询条件
* @param selectionArgs 如果selection中有"?"将由此数组中的值替换
* @return
*/
public Cursor queryList(String tblName, String[] columns, String selection, String[] selectionArgs, String groupBy, String having, String orderBy) {
return db.query(tblName, columns, selection, selectionArgs, groupBy, having, orderBy);
}
/**
* 查询单行数据
* @param tblName 表名
* @param columns 查询的列
* @param selection 查询条件
* @param selectionArgs 如果selection中有"?"将由此数组中的值替换
* @return
*/
public Cursor queryOne(String tblName, String[] columns, String selection, String[] selectionArgs, String groupBy, String having, String orderBy) {
Cursor cursor = db.query(tblName, columns, selection, selectionArgs, groupBy, having, orderBy);
if (cursor != null) {
cursor.moveToFirst();
}
return cursor;
}
/**
* 执行SQL语句
* @param sql
*/
public void execSQL(String sql){
db.execSQL(sql);
}
/**
* 判断表是否存在
* @param tableName
* @return
*/
public boolean isTableExist(String tableName){
boolean result = false;
if(tableName == null){
return false;
}
try {
Cursor cursor = null;
String sql = "select count(1) as c from sqlite_master where type ='table' and name ='"+tableName.trim()+"' ";
cursor = db.rawQuery(sql, null);
if(cursor.moveToNext()){
int count = cursor.getInt(0);
if(count > 0){
result = true;
}
}
cursor.close();
} catch (Exception e) {
Log.e(TAG, "isTableExist exception");
}
return result;
}
/**
* 判断是否存在某字段(要先判断表是否存在)
* @param tabName 表名
* @return
*/
public boolean isColumnExist(String tableName,String columnName){
boolean result = false;
if(tableName == null) {
return false;
}
try {
Cursor cursor = null;
String sql = "select count(1) as c from sqlite_master where type ='table' and name ='"+tableName.trim()+"' and sql like '%"+ columnName.trim() +"%'" ;
cursor = db.rawQuery(sql, null);
if(cursor.moveToNext()){
int count = cursor.getInt(0);
if(count > 0){
result = true;
}
}
cursor.close();
} catch (Exception e) {
Log.e(TAG, "isColumnExist exception");
}
return result;
}
}
package com.metoo.girls;
import android.content.ContentValues;
import android.database.Cursor;
import android.test.AndroidTestCase;
import android.util.Log;
/**
* 单元测试操作sqlLite的各种sql
*/
public class GirlsDbHelperTest extends AndroidTestCase{
/**
* 创建表
* @throws Exception
*/
public void createTable() throws Exception{
GirlsDbHelper dbHelper = GirlsDbHelper.getInstance(this.getContext());
dbHelper.open();
String deleteSql = "drop table if exists user ";
dbHelper.execSQL(deleteSql);
//id是自动增长的主键,username和 password为字段名, text为字段的类型
String sql = "CREATE TABLE user (id integer primary key autoincrement, username text, password text)";
dbHelper.execSQL(sql);
dbHelper.close();
}
/**
* 插入数据
* @throws Exception
*/
public void insert() throws Exception{
GirlsDbHelper dbHelper = GirlsDbHelper.getInstance(this.getContext());
dbHelper.open();
ContentValues values = new ContentValues(); //相当于map
values.put("username", "test");
values.put("password", "123456");
dbHelper.insert("user", values);
dbHelper.close();
}
/**
* 更新数据
* @throws Exception
*/
public void update() throws Exception{
GirlsDbHelper dbHelper = GirlsDbHelper.getInstance(this.getContext());
dbHelper.open();
ContentValues initialValues = new ContentValues();
initialValues.put("username", "changename"); //更新的字段和值
dbHelper.update("user", initialValues, "id = '1'", null); //第三个参数为 条件语句
dbHelper.close();
}
/**
* 删除数据
* @throws Exception
*/
public void delete() throws Exception{
GirlsDbHelper dbHelper = GirlsDbHelper.getInstance(this.getContext());
dbHelper.open();
String testId = "1";
dbHelper.delete("user", "id = '"+ testId +"'", null);
dbHelper.close();
}
/**
* 增加字段
* @throws Exception
*/
public void addColumn() throws Exception{
GirlsDbHelper dbHelper = GirlsDbHelper.getInstance(this.getContext());
dbHelper.open();
String updateSql = "alter table user add company text";
dbHelper.execSQL(updateSql);
}
/**
* 查询列表
* @throws Exception
*/
public void selectList() throws Exception{
GirlsDbHelper dbHelper = GirlsDbHelper.getInstance(this.getContext());
dbHelper.open();
Cursor returnCursor = dbHelper.queryList("tbl_sexy_state", new String[] {"id", "index", "unlocked"}, "index = ", null,null, null, "id desc");
while(returnCursor.moveToNext()){
String id = returnCursor.getString(returnCursor.getColumnIndexOrThrow("id"));
String username = returnCursor.getString(returnCursor.getColumnIndexOrThrow("username"));
String password = returnCursor.getString(returnCursor.getColumnIndexOrThrow("password"));
}
}
/**
* 某条信息
* @throws Exception
*/
public void selectInfo() throws Exception{
GirlsDbHelper dbHelper = GirlsDbHelper.getInstance(this.getContext());
dbHelper.open();
Cursor returnCursor = dbHelper.queryList("user",new String[] {"id","username", "password"}, "id = '1'", null,null, null, "id desc");
if (returnCursor.getCount() > 0) {
returnCursor.moveToFirst();
String id = returnCursor.getString(returnCursor.getColumnIndexOrThrow("id"));
String username = returnCursor.getString(returnCursor.getColumnIndexOrThrow("username"));
String password = returnCursor.getString(returnCursor.getColumnIndexOrThrow("password"));
}
}
}
关于android的DB操作的更多相关文章
- [Android] Android 使用 Greendao 操作 db sqlite(2)-- 封装DaoUtils类
继续接上文: Android 使用 Greendao 操作 db sqlite(1)-- 直接在MainActivity中调用 布局文件同上文一致,这里就不贴了. 一.封装DaoUtils类 User ...
- [Android] Android 使用 Greendao 操作 db sqlite(1)-- 直接在MainActivity中调用
继续接上文: Android 使用 Greendao 操作 db sqlite 布局文件: activity_test_green.xml <?xml version="1.0&quo ...
- [Android] Android 使用 Greendao 操作 db sqlite
Android 使用 Greendao 操作 db sqlite GreenDAO是一个开源的安卓ORM框架,能够使SQLite数据库的开发再次变得有趣.它减轻开发人员处理低级数据库需求,同时节省开发 ...
- android管理联系人操作
ContentProvider扩展之管理系统联系人 我们都知道ContentProvider是用来共享数据的,然而android本身就提供了大量的ContentProvider,例如联系人信息,系统的 ...
- [转]Android - 文件读写操作 总结
转自:http://blog.csdn.net/ztp800201/article/details/7322110 Android - 文件读写操作 总结 分类: Android2012-03-05 ...
- 【转】Android 使用ORMLite 操作数据库
Android 使用ORMLite 操作数据库 用过ssh,s2sh的肯定不会陌生 ,应该一学就会 第一步: 下载ormlite-android-4.41.jar和ormlite-core-4.4 ...
- Android开发---如何操作资源目录中的资源文件4 ---访问xml的配置资源文件的内容
Android开发---如何操作资源目录中的资源文件4 XML,位于res/xml/,这些静态的XML文件用于保存程序的数据和结构. XmlPullParser可以用于解释xml文件 效果图: 描述: ...
- Android开发---如何操作资源目录中的资源文件3--圆角边框、背景颜色渐变效果、边框颜色
Android开发---如何操作资源目录中的资源文件3 效果图 1.圆角边框 2.背景颜色渐变效果 1.activity_main.xml 描述: 定义了一个shape资源管理按钮 <?xml ...
- Android开发 ---如何操作资源目录中的资源文件2
Android开发 ---如何操作资源目录中的资源文件2 一.颜色资源管理 效果图: 描述: 1.改变字体的背景颜色 2.改变字体颜色 3.改变按钮颜色 4.图像颜色切换 操作描述: 点击(1)中的颜 ...
随机推荐
- 刷题总结——系列维护(ssoi)
题目: 题解: 题解如上图,至于计算大于s的数字的数量和小于s数字的和用权值线段树或者树状数组维护就行了···注意离散化 另外发现cout和puts比printf快好多····· 代码: #inclu ...
- 转载:CMarkUp使用简介
转载地址:http://blog.csdn.net/jonathandj/article/details/4320725 最近正在研究C++下的XML分析工具CMarkup.初次和XML相遇是基于C# ...
- .Net Core下使用RabbitMQ比较完备的两种方案(虽然代码有点惨淡,不过我会完善)
一.前言 上篇说给大家来写C#和Java的方案,最近工作也比较忙,迟到了一些,我先给大家补上C#的方案,另外如果没看我上篇博客的人最好看一下,否则你可能看的云里雾里的,这里我就不进行具体的方案 ...
- linux下查看隐藏文件
linux下查看隐藏文件的快捷键:Ctrl+H 命令:ls -a
- windows安装RabbitMQ注意事项
1.首先下载好ERLANG.RabbitMQ安装包,先安装erlang,设置好环境变量,然后再去安装MQ; 2.别人有两个报错: 一:RabbitMQ安装目录中不允许有空格; 二:安装rabbitmq ...
- [转] sql 删除表数据的drop、truncate和delete用法
删除表数据的关键字,大家记得最多的可能就是delete.然而,我们做数据库开发,读取数据库数据.对另外的drop.truncate用得就比较少了. 1 drop 出没场合:drop table ta ...
- 国内可用的SVN和Git代码托管网站汇总
Coding https://coding.NET/help/ 支持Git,每个项目免费1G空间,私人. http://www.svn999.com/ [推荐] 国内的,免费的,申请很方便,而且访问速 ...
- 出现异常时直接把e输出比输出e.getMessage()好得多
之前研究态度不好,出异常时处理草草了事,今天出现问题才觉得该认真对待每个分支.
- 紫书p199 八数码(BFS,hash)
八数码问题 紫书上的简单搜索 渣渣好久才弄懂 #include<cstdio> #include<cstring> using namespace std; const i ...
- 【Nutch基础教程之七】Nutch的2种执行模式:local及deploy
在对nutch源码执行ant runtime后,会创建一个runtime的文件夹.在runtime文件夹下有deploy和local 2个文件夹. [jediael@jediael runtime]$ ...