private void saveSteps(int step) {        Cursor cursor = getContentResolver().query(Downloads.CONTENT_URI,                new String[]{Downloads._ID, Downloads.COLUMN_VID, Downloads.COLUMN_STATUS, Downloads._DATA},                getQueryWhere(),                null,                null);                if (null == cursor)            return;        if (cursor.moveToNext()) {            int status = cursor.getInt(cursor.getColumnIndexOrThrow(Downloads.COLUMN_STATUS));            if (step != status) {                ContentValues values = new ContentValues();                values.put(Downloads.COLUMN_STATUS, step);                int id = cursor.getInt(cursor.getColumnIndexOrThrow(Downloads._ID));                getContentResolver().update(ContentUris.withAppendedId(Downloads.CONTENT_URI, id), values, null, null);                String filePath = cursor.getString(cursor.getColumnIndexOrThrow(Downloads._DATA));                File file = new File(filePath);                if (file.exists())                    file.delete();                                //xlh_add 删除数据库中本条数据                getContentResolver().delete(ContentUris.withAppendedId(Downloads.CONTENT_URI, id), "(" + Downloads.COLUMN_VID + " = ' " + appDetail.getAppID() + "')", null);
</pre><pre name="code" class="java">}<p class="p1"> <span class="s1">private</span> String getQueryWhere() {</p><p class="p2">//  <span></span>String w="(" + Downloads.COLUMN_VID + " = ' " + appDetail.getAppID() + "')";</p><p class="p1">    <span class="s1">return</span> <span class="s2">"("</span> + Downloads.<span class="s3">COLUMN_VID</span> + <span class="s2">" = ' "</span> + <span class="s3">appDetail</span>.getAppID() + <span class="s2">"') AND ("</span> + Downloads.<span class="s3">COLUMN_STATUS</span> + <span class="s2">" <= '200')"</span>;</p><p class="p3"> </p>

这段时间一直在做android系统级开发,google的Email,也就是增加手机Email的易用性,增加一些新的功能来满足用户的需求。


之前的blog写过cursor的一些东西,今天作为开始就先写一些cursor查询、更新本地数据库的操作吧。先举个例子:


Cursor c = getContentResolver.query(uri , String[ ] , where , String[ ] , sort)


这条语句相信大家一定经常看到用到,查看sdk帮助文档也很容易找到其中五个参数的意思


第一个参数:是一个URI,指向需要查询的表;


第二个参数:需要查询的列名,是一个数组,可以返回多个列;


第三个参数:需要查询的行,where表示需要满足的查询条件,where语句里面可以有?号;


第四个参数:是一个数组,用来替代上面where语句里面的问号;(如果第三个参数没有?有查询wher变量,第四个参数可以设为空)


第五个参数:表示排序方式;


下面还是用一段代码来加强下印象:

  <pre name="code" class="java">Cursor c = getContentResolver.query(Message.Content_URI ,   new String[]{SyncColumns.Server_Id} , SyncColumns.Id+"=?" ,  new String[]{Long.toString(MessageId)} , null);
  <pre name="code" class="java">Cursor c = getContentResolver.query(Message.Content_URI ,   new String[]{SyncColumns.Server_Id} , <span style="font-family: Arial, Helvetica, sans-serif;">"("+</span><span style="font-family: Arial, Helvetica, sans-serif;">SyncColumns.Id+"=' "+</span><span style="font-family: Arial, Helvetica, sans-serif;">Long.toString(MessageId)+ </span><span style="font-family: Arial, Helvetica, sans-serif;">" ')" ,null, null);</span>

try { if(c.moveToFirst()) { return c.getString(0);//0表示返回的行数 } else { return null; } } finally { c.close(); }
  
  



下面再来看一段更新数据库的操作

ContentValues cv = new ContentValues();  cv.put(Body.HTML_Content, newHtmlBody);//第一个参数是列名,第二个参数是要放入的值  String where = Body.Message_Key + "=" + mMessageId;  getContentResolver().update(uri , cv , where , null);   //这里的四个参数应该很清楚了,uri是表,cv上面要更新的值,where是搜索行的语句,null是历史记录可以为空


更多相关文章

  1. Bmob中的几种查询方法
  2. 播放记录的SQLite数据库实现
  3. 用Android(安卓)写休闲拼图游戏(一)
  4. 自定义对话框 位置 大小等
  5. Html容器机制说明
  6. 布局参数说明及长按某区域出现菜单
  7. Android(安卓)使用Room 生成不了数据库文件
  8. Android使用getIdentifier()获取资源Id
  9. android sql语句大全

随机推荐

  1. Doze和App Standby的优化(API23)
  2. Android(安卓)NDK r5 windows系统上安装
  3. 【ADT】亲测、有图goagent解决ADT下载过
  4. android——代码实现在指定位置显示View
  5. Android开发周报:Android(安卓)Studio2.0
  6. java获取页面输入的值
  7. EditText 的setKeyListener()方法的用法
  8. Android(安卓)JNI 学习笔记
  9. 电脑导出文件到手机 adb push
  10. Android(安卓)使用NDK R5开发JNI应用详解