android多表查询
① android 怎么做多表联查
String [] projection= new String[]{
Phones._ID,
Phones.TYPE,韩国女装
Phones.NUMBER,
"(SELECT NAME FROM PEOPLE AS people WHERE PEOPLE._id =PERSON) AS peopleName",
// new StringBuilder().append("(SELECT NAME FROM PEOPLE AS people WHERE PEOPLE._id =").append(Phones.PERSON_ID)
// .append(") AS peopleName").toString(),
"(SELECT DATA FROM PHOTOS AS PHOTOS WHERE PHOTOS.PERSON =PERSON) AS peopleLogo",
// new StringBuilder().append("(SELECT DATA FROM PHOTOS AS PHOTOS WHERE PHOTOS.PERSON =").append(Phones.PERSON_ID)
// .append(") AS peopleLogo").toString()
}; android 软体键盘 实现 -- 断点记录
String selection = "0==0) GROUP BY (PERSON";
Cursor cursor = context.getContentResolver().query(Phones.CONTENT_URI, projection, selection, null, null);
while(cursor.moveToNext()){
System.out.println(cursor.getString(cursor.getColumnIndex(Phones.NUMBER)));
System.out.println(cursor.getString(cursor.getColumnIndex("peopleName")));
}
② Android 数据库有多张表字段都相同,如果查询这张表的所有数据
多张表字段相同,对数据查询没有什么影响,只是涉及到同时查询多张表的时候,通过别名的方式解决。比如:
表A,字段id,nam
表B,字段id,calss
现在查询:
SELECT a.name FROM A a
LEFT JOIN B b ON b.id=a.id
WHERE 1=1
③ 直接作sqlite,android怎么对sqlite进行多表作,相关联
低并发操作SQLite只支持平面事务;它没有嵌套和营救点能力。嵌套意味着在一个事务中可以有子事务的能力。营救点允许一个事务返回到前面已经到达的状态。它没有能力确保高层次事务的并发。它允许在单个的数据库文件上多个并发的读事务,但是只能有一个排他的写事务。这个局限性意味着如果有事务在读数据库文件的一部分,所有其他的事务将被禁止写该文件的任何一部分。类似的,如果有事务在写数据库文件的一部分,所有其他事务将被禁止读或者写该文件的任何一部分。应用限制因为它事务处理的有限并发,SQLite只擅长处理小型的事务。在很多情况下,这不是问题。每个应用迅速的完成它的数据库工作然后继续前进,因此没有一个事务会持有数据库超过多少毫秒。但是在一些应用中,特别是写入密集的,要求的并发的事务处理(表或者行级别的而不是数据库级别的)那么你将要为该应用使用其他不同的DBMS。SQLite并不打算成为一个企业DBMS。他最适合于实现,维护和管理的简单性比商业数据库的无尽复杂特性更为重要的情况。NFS问题SQLite使用本地文件锁原语来控制事务处理的并发性。如果数据库文件驻留在网络分区上,可能会导致文件锁不能工作。很多的NFS实现被认为在它们的文件锁中是有bug的(在Unix和Windows上)。如果文件锁不能像预计的一样工作,那么就可能会有两个或两个以上的应用程序在同时修改相同数据库的同一部分,导致了数据库的毁坏。因为这个问题的出现是因为位于下层的文件系统的实现的BUG,所以SQLite没有法阻止它的发生。另一原因是大多数网络文件系统的连接延时,效果不是很好。在这种环境下,在数据库文件必须要跨网络访问的情况下,实现了客户端-服务器的模型的DBMS会比SQLite更有效。数据库规模因为它的开发人员的开发设计选择,SQLite可能不是一个做非常大型的数据库好选择。在理论上,一个数据库文件文件可以有2TB(241)。日志子系统的内存开销和数据库大小是成比例的。对每个写事务,无论事务实际是写是读那个页,SQLite为每个数据库页维护一个内存内信息位。默认的页大小是1024字节。即使如此,对一个有超过几百万页的数据库,内存开销可能成为一个严重的瓶颈。对象的数目和类型一个表或者索引被限制为最多有264–1个项。当然,你不可能有这么多的条目,因为数据库的241字节大小限制。在SQLite的当前的实现中,一个单独的条目能够持有230字节的数据。(下层的文件格式支持行大小相当于262字节的数据。)在打开一个数据库文件时,SQLite会阅读并且预处理来自主目录表的所有条目并且创建很多内存目录对象。所以,为了最好的性能,最好控制表,索引,视图和触发器的数目。同样虽然没有限制表中列的数目,超过几百列还是似乎太过的。只有表开始的31列是候选为必然被优化的。你能够在一个索引中尽可能加入列,但是有超过30列的索引将不会被用来优化。宿主变量引用在一些嵌入DBMS中,SQL语句能够直接引用宿主变量(即来自应用程序空间的那些值)。在SQLite中这是不行的。作为替代SQLite允许使用sqlite3_bind_*API函数来对输入参数而不是输出值绑定对SQL语句宿主变量。这种策略通常比直接的访问策略更好,因为后者需要特殊的预处理来将SQL语句转化为特殊的API调用。存储过程很多DBMS有被称为存储过程的能力来创建和存储。存储过程是形成逻辑作业单元和执行特殊任务的一组SQL语句。SQL查询过程能够使用这些过程。SQLite没有这个能力。另外一些局限不支持外键如果你的表格中有类似的语句,sqlite会忽略的:createtablezope_suf.userroles(namevarchar(64)notnullreferenceszope_suf.users(name)
④ android 怎么对sqlite进行多表操作!
相关联的话可以用动态检索,dwname.setfilter() 控制筛选条件,动态检索2个窗口的数据,另外两个不同窗口UPDATE到同一张表? 建议你创建第三个数据窗口,根据前2个数据窗口动态的INSERT,SETITEM来修改第3个数据窗口的内容,然后UPDATE,用DATASTORE也行。 s
⑤ android 自建的ContentProvider,其中定义了多个表,如何通过表中任意列数据,获得其所在行的其他数据
mSQLiteDatabase.query(true, "table", columns, "name=?",String[]{"tom"}, null, null, null, null);
⑥ android 怎么查看多媒体表
通过调用Android的API,可以实现相册,播放器,录音和摄像等功能。这一章需要掌握如下功能:
q 多媒体的ContentProvider的调用
q Camera
q AudioRecord和AudioTrack
q MediaPlayer
1.1 获取多媒体信息
多媒体信息?在pc中的音乐播放器总是很容易的显示歌手名、歌曲名、专辑名、年代。在Android中应该如何获取这些信息呢?
1.1.1 查看多媒体ContentProvider
前面我们学习了ContentProvider来保存和检索数据,Android为常用的数据类型(如:音视频、图片和联系方式等)提供了大量的ContentProvider,它们被定义在android.provider包下。那么我们如何获取多媒体的ContentProvider呢。
(1) 在Eclipse中添加Android自带的FileExplorer视图:
菜单栏->window->show view->other->Android->FileExplorer
(2) 开启模拟器,在FileExplorer中查看data/data/com.android.providers.media/databases/(如图1.1)
(3) 将external.db文件 pull到pc上,用sqlite工具(可以使用火狐插件SQliteManager)查看:(如图1.2)
(4) 查看表结构:
⑦ 直接作sqlite,android怎么对sqlite进行多表作,相关联
SQLite是轻量级嵌入式数据库引擎,它支持 SQL 语言,并且只利用很少的内存就有很好的性能。此外它还是开源的,任何人都可以使用它。许多开源项目((Mozilla, PHP, Python)都使用了 SQLiteSQLite 由以下几个组件组成:SQL 编译器、内核、后端以及附件。SQLite 通过利用虚拟机和虚拟数据库引擎
(VDBE),使调试、修改和扩展 SQLite 的内核变得更加方便。
1. Android 集成了 SQLite 数据库 Android 在运行时(run-time)集成了 SQLite,所以每个 Android 应用程序都可以使用 SQLite 数据库。
2. 数据库存储在 data/< 项目文件夹 >/databases/ 下。 Android 开发中使用 SQLite 数据库 Activites 可以通过 Content Provider 或者 Service 访问一个数据库。
3. Android 提供了 SQLiteOpenHelper 创建一个数据库,只要继承 SQLiteOpenHelper 类,就可以轻松的创建数据库。SQLiteOpenHelper 类根据开发应用程序的需要,封装了创建和更新数据库使用的逻辑。
4. SQLiteOpenHelper 的子类,至少需要实现三个方法:
1.构造函数,调用父类 SQLiteOpenHelper 的构造函数。这个方法需要四个参数:上下文环境(例如,一个 Activity),数据库名字,一个可选的游标工厂(通常是 Null),一个代表你正在使用的数据库模型版本的整数。
2.onCreate()方法,它需要一个 SQLiteDatabase 对象作为参数,根据需要对这个对象填充表和初始化数据。
3.onUpgrage() 方法,它需要三个参数,一个 SQLiteDatabase 对象,一个旧的版本号和一个新的版本号,这样就可以清楚如何把一个数据库从旧的模型转变到新的模型。
⑧ Android用query怎么进行多条件查询
SQLiteDatabase 给我提供的方法很不实用,还是建议楼主自己写sql语句,参数想怎么传都可以x0dx0a例如:Cursor c = db.rawQuery("select * from user where username=? and password = ?",x0dx0anew Stirng[]{"用户名","密码"});x0dx0ax0dx0a如果你非要调用SQLiteDatabase的query方法,那可以这样x0dx0adb.query("表名", new String[]{"字段1,字段2"}, "条件1=? and 条件2=?", new String[]{"条件1的值,条件2的值"},null,null,null)
⑨ android 数据库表查询出来的多条记录返回客户端怎么封装成json string
sqlite中每一行看成一个JSONObject,结果集看成jsonarray。