2011-02-23 34 views
0

我一直渴望了解Android和SQLite中的触发器。我发现了一个伟大的教程在:带触发器的Android SQLite教程调试

http://android-pro.blogspot.com/2010/10/using-sqlite-database-with-android.html

不过,在进口他们的项目到Eclipse中,并试图运行它,我得到的错误:

android.database.SQLiteException: no such column EmployeeName while compiling: SELECT _id,EmployeeName, Age, DeptName FROM ViewEmps WHERE DeptName=? 

试图从查看信息时,会出现此数据库选择一个项目外键后。例如将人员添加到IT部门。转到查看屏幕,选择IT并发生错误。

本教程的作者试图通过增加数据库版本来解决该问题,但这似乎不适用于任何人。这将导致错误代码的一部分似乎是这样的:

db.execSQL("CREATE VIEW "+viewEmps+ 
" AS SELECT "+employeeTable+"."+colID+" AS _id,"+ 
" "+employeeTable+"."+colName+","+ 
" "+employeeTable+"."+colAge+","+ 
" "+deptTable+"."+colDeptName+""+ 
" FROM "+employeeTable+" JOIN "+deptTable+ 
" ON "+employeeTable+"."+colDept+" ="+deptTable+"."+colDeptID 
); 

我试图变化无常位,并试图调试自己,但与它无处得到。如果有人有任何想法,那么将不胜感激。如果任何人都可以从上面的网站下载代码,并尝试看到他们的结果会非常有帮助,因为它似乎只发生在少数人身上。如果需要更多信息,请告诉我,我会尽力提供帮助。

编辑:如果有人想下载源,那么我也上传到MediaFire,因为有些人一直有其他镜像的问题。抓住它在:http://www.mediafire.com/?2ya4jsbcuiyq3m5

+0

的问题是,它应该与2.2编译,但该项目已被设置为使用2.1 - 更改为2.2它工作正常。 – user319940 2011-02-24 00:08:20

回答

0

尝试将其更改为:

db.execSQL("CREATE VIEW "+viewEmps+ 
" AS SELECT "+employeeTable+"."+colID+" AS _id,"+ 
" "+employeeTable+"."+colName+" AS "+colName+","+ 
" "+employeeTable+"."+colAge+" AS "+colAge+","+ 
" "+deptTable+"."+colDeptName+" AS "+colDeptName+ 
" FROM "+employeeTable+" JOIN "+deptTable+ 
" ON "+employeeTable+"."+colDept+" ="+deptTable+"."+colDeptID 
); 

中选择刚才添加的

AS .... 

到列。

+0

感谢您的答案,但不幸的是它仍然有相同的结果。如果其他人可以下载源代码并给出它 - 如果有人无法从网站下载它(使用一些可怕的文件主机),他们想尝试一下,然后让我知道,我会上传它给我的主人,因为这将很好地得到这个工作的全功能样本学习。 – user319940 2011-02-23 14:42:01

+0

已下载,并在Android 2.2模拟器上工作 – pawelzieba 2011-02-23 15:33:45

+0

啊,所以它 - 奇怪,因为它看起来像它是为2.1构建的,所以我的模拟器加载2.1版本,因此不加载此。也许这只是为了2.2+,并且在构建android项目时出现错误? – user319940 2011-02-23 16:44:21

2

我通过代码更改为得到它的2.1工作:

db.execSQL("CREATE VIEW "+viewEmps+ 
      " AS SELECT "+employeeTable+"."+colID+" AS _id,"+ 
      " "+employeeTable+"."+colName+" AS EmployeeName,"+ 
      " "+employeeTable+"."+colAge+" AS Age,"+ 
      " "+deptTable+"."+colDeptName+" AS DeptName"+ 
      " FROM "+employeeTable+" JOIN "+deptTable+ 
      " ON "+employeeTable+"."+colDept+" ="+deptTable+"."+colDeptID 
      ); 
+0

你改变了什么? – bahrep 2012-11-06 11:56:08