关于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)中的颜 ...
随机推荐
- 【POJ1226】Substrings(后缀数组,二分)
题意: n<=10,len<=100 思路: 只有一个字符串的时候特判一下 #include<cstdio> #include<cstring> #include& ...
- 使用 ftrace 调试 Linux 内核,第 2 部分
ftrace 操作概述 使用 ftrace 提供的跟踪器来调试或者分析内核时需要如下操作: 切换到目录 /sys/kernel/debug/tracing/ 下 查看 available_tracer ...
- jquery实现表单验证,所以的验证通过后方可提交
<html> <head> <meta http-equiv="content-type" content="tex ...
- Mysql Binlog日志文件介绍
一.Binlog简介 官方文档参考 https://dev.mysql.com/doc/refman/5.5/en/binary-log.html Binlog(Binary Log) 指数据库的表创 ...
- Debian9初始配置
1 进入root用户 su root 2 修改镜像源:编辑/etc/apt/sources.list文件 nano /etc/apt/sources.list 修改内容如下: deb http://m ...
- spring boot 添加mybatis,以及相关配置
首先在pom.xml文件里加入 <dependency> <groupId>org.mybatis.spring.boot</groupId> <artifa ...
- 实践与理解CMM体系
我的项目管理之路--5.实践与理解CMM体系 分类: 管理专辑(65) 过程改进(9) 软件工程(52) 版权声明:本文为博主原创文章,未经博主允许不得转载. 一个现代企业我们可以把它比作为自然界 ...
- openURL
在iOS开发中,经常需要调用其它App,如拨打电话.发送邮件等.UIApplication:openURL:方法是实现这一目的的 在iOS开发中,经常需要调用其它App,如拨打电话.发送邮件等.UIA ...
- 【Todo】Java8新特性学习
参考这篇文章吧: http://blog.csdn.net/vchen_hao/article/details/53301073 还有一个系列
- 安装 python 的 pip install fabric 库 问题
安装 pip install fabric 安装依赖需要 gcc 并且不能单独的安装gcc 还要安装完整的gcc依赖 yum -y install gcc gcc-c++ kernel-devel y ...