做了个断点下载的demo;
大概思路是:
将下载进度保存到数据库中;
1.每次开始前先查询当前文件的下载进度,
2.有记录,就从断点处开始下载,
3.没有,就从头开始下载,
4.在下载过程中不断的向数据库更新当前进度
5.只要下载完成就删除记录,断点下载手动调试是没问题了,
现在移植到android下,配合数据库就出现了问题,如图:
1.只要是完整下载,就没有问题
2.只要出现了断点的情况,再续传时写数据库就会出现这个问题,读没问题.
3.SQLiteOpenHelper经过验证为 "非空"请问怎么解决???

解决方案 »

  1.   

    可能是并发的时候出的问题吧。上面写得是空指针啊。你还是看看怎么出现null吧。
      

  2.   

    去看一下doSql那句谁是null,后面不是有文件和行号
      

  3.   

    用insert XXX  where   XXX
      

  4.   

    public void doSql(String sql) {
    try {
    db = helper.getWritableDatabase();//这句报错,但是 helper != null
    db.beginTransaction();
    db.execSQL(sql);
    db.setTransactionSuccessful();
    }catch(Exception e){
    e.printStackTrace();
    } finally {
    db.endTransaction();
    db.close();
    }
    }
      

  5.   

    但是log里说null,你说不是null。要相信谁?
      

  6.   

    public void doSql(String sql) {
    try {
    System.out.println(helper == null?"helper = null":"helper = not null");
    db = helper.getWritableDatabase();
    db.beginTransaction();
    db.execSQL(sql);
    db.setTransactionSuccessful();
    }catch(Exception e){
    e.printStackTrace();
    } finally {
    db.endTransaction();
    db.close();
    }
    }
    我现在不知道怎么办了...
      

  7.   

    这是两个错误。第一个是SqliteOpenHelper.getWrite...的null,但是被你catch了,然后打印了一把。所以db是空的,接着finally里db是null
      

  8.   

    源码98行:  db = mContext.openOrCreateDatabase(mName, 0, mFactory);
    找到问题了: mContext = null原来在续传前,获取下载日志后,没有保存context....谢谢各位了...