貌似不可以,数据库里面存的是1的话,你怎么可能知道是boolean 还是integer,还是text。还有,不知道楼主试过没有,你这样能得到列名?应该是先指定了projection然后才能得到你指定的projection的列名吧。

解决方案 »

  1.   

    可以呀,不过我在这里只是大概列出几个语句而已,没有逻辑的,我的意图就是通过得到对应数据库表项的Cursor,然后再通过它来得到表项的其他信息,函数getColumnName(i)就是列出列名的,我试过的。
    具体如下:Cursor mCursor =mContext.getContentResolver().query(uri,null, null,null,null);
    int size = mCursor.getColumnCount();
    for (int i = 0; i < size; i++)
    {
    String  mColumnName=mtableInfo.mColumnName=mCursor.getColumnName(i);//获取列名
    }还有像其他的例如getColumnCount()可以得到数据库的列数一样,不知道怎样去得到列的类型。
    是否由于通过Content Provide提供的接口有限,取得数据类型是比较麻烦呀
    (意图:想通过这个方式得到某个应用程序的数据库信息,在不考虑它的表项信息变化,比如增加列,改变数据类型等情况下,在本应用程序重建一个一样的数据库。因为权限的关系,只好通过程序提供的Uri来操作。如果大家有好的其他建议可以提出来)
      

  2.   


    这个啊,不知道楼主的ContentProvider是不是自己写的,如果是的话,你的Provider里应该已经把projection都填好了。然后你的Cursor里才能得到。
      

  3.   

    projection  可以不指定
    就相当于select * 一样
      

  4.   


    ContentProvider不是自己写的,是其他程序提供的。ContentProvider提供的接口很有限,所以才会碰见这样的难题。
    projection我用的是空null,是要返回所有列的数据