Articles of sql

ActiveAndroid多对多的关系

我目前正在使用ActiveAndroid,并一直试图获得一个多对多的关系,在过去的几个小时工作,但我不能得到它的工作。 我希望你能帮助我 我有模型“学生”和“课程”,一个学生可以有很多课程,一个课程有很多学生。 基本上这就是我在模拟“学生课程”中所拥有的: @Column(name = COURSE) public Course course; @Column(name = STUDENT) public Student student; public StudentCourse(Student student, Course course) { super(); this.student = student; this.course = course; } // public StudentCourse(){ } public List<Course> courses(){ return getMany(Course.class, "StudentCourse"); } public List<Student> students(){ return getMany(Student.class, "StudentCourse"); } 现在我想要做的是得到“所有学生在课程X”,用下面的代码: ((Student) new Select().from(StudentCourse.class).where("course = ?",selectedCourse.getId()).executeSingle()).students(); 但是,我得到以下错误: […]

SQLite for Android定制表视图(SQL VIEW,不是Android视图)的差异?

我已经在Android应用程序的SQLite数据库中创build了一个自定义视图。 我在Ubuntu上使用Sqliteman来testing我的SQL语句,然后将其放入我的应用程序中。 我试图在我的观点上做一个简单的select陈述。 SELECT语句在SQLiteman中工作正常,但是当我在代码中放入相同的语句时,会引发错误。 该声明: select * from item_view where parent_item_id = 0; 视图(以Stringforms转换为Java): "create view if not exists item_view as select " + "item._id, item.status, item.name, item.position, " + "item.parent_item_id, item.note_id, item.other_id, " + "note.contents, other.priority " + "from item, note, other where item.note_id = note._id and item.other_id = other._id" 错误: 07-16 14:21:15.153: ERROR/AndroidRuntime(5054): […]

Android SQL:检查数据库中是否存在logging

我正在试图查询我的数据库基于一个特定的ID。 String sql = "SELECT * FROM mash WHERE recipe_id = '" + id + "'"; Cursor data = database.rawQuery(sql, null); 如果这是第一次运行活动,表将与id列一起存在,但是不会有具有特定id的logging。 如何检查特定logging是否存在,如果不存在,添加? 我已经find了很多有关检查是否存在特定的列,但没有关于检查是否存在特定的logging。 到目前为止,我已经尝试获取id列索引,并检查它是否返回-1,但实际上由于某种原因返回1。 我可以在if语句中使用什么来validationid列尚未创build?

Android内容提供者插入需要很多时间

我做了我自己的内容提供者,在一次插入大量数据的情况下, 该应用程序将从外部来源收到数据,在这一刻我收到约30项(插入30次)。 现在我注意到这花了很多宝贵的时间(大约3秒,每个插入100毫秒)。 我该如何提高内容提供者的速度? 我已经试过将它们全部一起插入,但是它们需要5秒。 提前致谢。

Android退出sqlite shell

我在MacOSX的adbshell上使用sqllite3来查看我的应用程序数据库: #sqlite3 mydb.db SQLite version 3.5.9 Enter ".help" for instructions sqlite> quit …> .quit …> 在我错误地键入了上面的quit命令.quit ,例如,而不是.quit ,shell会进入…>提示符,其中没有任何已知的命令似乎工作。 我甚至不能通过CTRL + C,CTRL + /,ESC等出去 我必须APPLE + Q即退出terminal实例重新启动。 我知道这不完全是一个编程问题,但我写在这里真的很烦人。 有没有人知道如何在没有重新启动terminal的情况下恢复到terminal的稳定性?

太多的绑定参数。 提供了5个参数,但声明需要4个参数

执行下面的函数时,我得到上面的IllegalArgumentExceptionexception。 我没有得到的是,当我运行debugging器, 值variables显然只包含4个参数,因为它应该。 所以… (1)这个神秘的第五个论点来自哪里? (2)如何find这个错误? db.update( UppdragEntry.TABLE_NAME, values, selection, selectionArgs);

android cursor.moveToNext()?

我试图查询表中的所有列到一个长文本视图和/或string。 我知道这可能不是正确的做法,但我必须这样做。 纠正我,如果我错了,我的印象是下一步会得到行中的下一列: Cursor c = db.get(); if(c.moveToFirst){ do{ string = c.getString(0); }while(c.moveToNext); 我以为这会得到第一列,并显示其所有内容,而我得到的第一列和第一行。 我究竟做错了什么? 有没有更好的或真正的方式来获得这些信息,而不使用ListView?

Android SQLite查询顺序问题

我怎样才能查询数据库显示一个数据表由两个不同的ID,但每行replace每个ID,但仍然按时间顺序。 例如。 数据库有ID1的10个元素和ID2的10个元素。 我需要它是: ID1 #data #2minutes ago ID2 #data #15minutes ago ID1 #data #4minutes ago ID2 #data #50minutes ago 有任何想法吗? 更新:ID的数量必须能够从1到n不同,也正在尝试通过SQLite.query()方法做到这一点。 更新2:#数据表示该行内的数据列,而不仅仅是一个,所以可能有5列。 另外,数据必须通过游标返回。 更新3:进一步详细说明,下面是我试图实现的表格和预期结果。 input表(按时间sorting) id | name | number | time 01 Tim 561481 2 minutes ago 02 Jon 951484 5 minutes ago 02 Jon 978284 7 minutes ago 04 Zen 171484 15 […]

主动Android多对多的关系

虽然这个问题是关于ActiveAndroid的,任何熟悉ORM的人都可以回答这个问题。 ActiveAndroid似乎没有给你一个方法来做多对多的开箱即用的关系。 我在search解决scheme时发现的是这个GitHub问题: https : //github.com/pardom/ActiveAndroid/issues/46 我明白,这是明确创build关系表,但我不明白如何下面的部分应该做任何有用的事情: public List<Foo> foos() { return getMany(Foo.class, "FooBar"); } public List<Bar> bars() { return getMany(Bar.class, "FooBar"); } 这将导致像SELECT * FROM Foo where Foo.FooBar = FooBar.Id;这样的查询SELECT * FROM Foo where Foo.FooBar = FooBar.Id; 。 这将最多返回一个Foo行。 我错过了什么吗? 你不需要一个涉及连接的查询吗?

Android的SQLite查询,插入,更新,删除,总是需要在后台线程?

我目前使用加载器从我的ContentProvider抓取数据(以启用自动更新我的游标)。 这种方法对于查询数据库是很直接的,但它似乎不适合其他数据库操作(如插入,更新,删除)。 我的问题是: 是否所有的SQLite操作都需要在后台线程上,或者在UI线程上执行简单的操作(如插入,更新或删除单个行)是否安全? 什么是一个很好的devise模式,以确保所有查询通过后台线程? 我想实现AsyncTask,我是否应该创build一个SuperTask来扩展AsyncTask并执行每个SQLite操作? (奖金:你能提供一个简单的例子吗?) 谢谢!