«

Android-SQLite商业化数据库操作

时间:2024-3-2 19:16     作者:韩俊     分类: Android


Android-SQLite商业化数据库操作
具体的数据操作

/**
* 插入用户实例
* @param pUser
* @return
*/
public long insertUser(User pUser)
{
if (mSqLiteDatabase != null && pUser != null)
{
//插入一条记录
ContentValues _contentValues = new ContentValues();
_contentValues.put(COLUMN_USERNAME, pUser.getmUserName());
_contentValues.put(COLUMN_USER_ADDRESS, pUser.getmUserAddress());

         return mSqLiteDatabase.insert(TABLE_NAME, null, _contentValues);

    }
    else
    {
        return -1;
    }
}


/**
* 删除用户实例
* @param id
* @return
*/
public int deleteUser(int id)
{
if (mSqLiteDatabase != null && id > 0)
{
return mSqLiteDatabase.delete(TABLE_NAME, “_id=?”, new String[]{String.valueOf(id)});

    }
    return -1;  
}


/**
* 更新用户的实例
* @param pUser
* @param id
* @return
*/
public int updataUser(User pUser, int id)
{
if (mSqLiteDatabase != null && pUser != null)
{
ContentValues _contenValues = new ContentValues();
_contenValues.put(COLUMN_USERNAME, pUser.getmUserName());
_contenValues.put(COLUMN_USER_ADDRESS, pUser.getmUserAddress());

        return mSqLiteDatabase.update(TABLE_NAME, _contenValues,"_id=?" , new String[]{String.valueOf(id)});

    } 
    return -1;
}


/**
* 查询所有记录
*/
public Cursor selectAll()
{
if (mSqLiteDatabase != null)
{
return mSqLiteDatabase.query(
TABLE_NAME,
new String[]{“_id”, COLUMN_USERNAME, COLUMN_USER_ADDRESS},
null,
null,
null,
null,
null);
}
return null;

}

/**
* 根据条件查询用户数据
* @param selection
* @param selectionArgs
* @param groupBy
* @param having
* @param orderBy
* @return
*/
public Cursor selectUser(String selection, String[] selectionArgs, String groupBy, String having, String orderBy)
{
if (mSqLiteDatabase != null)
{
return mSqLiteDatabase.query(
TABLE_NAME,
new String[]{“_id”, COLUMN_USERNAME, COLUMN_USER_ADDRESS},
selection,
selectionArgs,
groupBy,
having,
orderBy);
}
else
{
return null;
}
}

批量更新和删除
使用原生的数据库语句
exeSQL
rawSQL
queryWithFactory效率比较高

二 sqlite3数据库引擎
下载sqliter3的源代码,分析文件结构,再进行源码分析
结果是在android2.3.3externalsqlitedist文件夹下,所有的拓展的第三方类库都在external文件夹下,
系统统一编译

三 sqlite3连接方式
JDBC的方式
像jni的原生类库,底层还是靠C/C++实现
在android2.3.3libcoresqlite-jdbcsrcmainnative和java文件夹下,

四 表的主外键关系
商业项目要求严谨的主外键关系
使用的工具是SQLiteStudio

五 表的视图
但SQL语句不太熟悉的时候可以使用表的视图

六 导出数据库
将数据库导出,放到项目的exeSQL执行的代码处

七 事务
类似于原子提交的概念,即事务是一个整体的过程
尽量放到try-catch中
beginTransaction()
中间是业务逻辑,事务操作
endTransaction()
commit()

八 面试题
1 说说Android数据存储的几种形式
SharePreference,文件,网络,SQLite3数据库

2 sqlite能支持存储过程吗, 支持主外键关联吗
支持主外键关联

3 如何让自己的setting程序与系统的setting程序融合
在自己的setting程序的xml文件里面的PreferenceScreen标签下应用系统的intent


标签: android

热门推荐