有谁帮我看看这些代码哪里错了。。。。。。。。。。非常感谢

很好 发布于 2012/07/09 18:09
阅读 256
收藏 0

怎么都不能创建主外键关联那。。。。。。。

db.execSQL("create table "+OnlineTable+
    "("+videoId +" integer primary key autoincrement,"
    +name+" text,"+type+" text,"+region+" text,"+year+
    " text,"+actor+" text,"
    +television+" text,"+introduction +" text,"+
    collection+" text ,"
    +number+" integer not null,"

    +"foreign key ("+number+") references "+JujiTable+"("+number+"))");

  db.execSQL("create table "+JujiTable+
    "("+videoId+" integer ,"
    +webside+" text,"+link+" text,"+number+" integer primary key)");

  //创建添加的触发器
  db.execSQL("create trigger fk_Movie_deptid " +
    "before insert on "+OnlineTable+" for each row begin " +
    "select case when ((select "+number+" from "+JujiTable+
    " where "+number+"=new."+number+")is null) then raise " +
  "(abort,'foreign key violation') end;end");

  //创建触发器
  db.execSQL("create trigger fk_Movie_deptid " +
    "after insert on "+OnlineTable+" for each row begin " +
    "select case when ((select "+number+" from "+JujiTable+
    " where "+number+"=new."+number+")is null) then raise " +
  "(ABORT,'Foreign Key Violation') end;end");


  //创建视图
  db.execSQL("create view "+ viewEmps+" as select "+OnlineTable+"."+videoId+" as _id,"
    +
    ""+OnlineTable+"."+type+","+
    OnlineTable+"."+actor+","
    +OnlineTable+"."+name+","
    +OnlineTable+"."+number+","
    +OnlineTable+"."+television+","
    +OnlineTable+"."+year+","
    +OnlineTable+"."+introduction+","
    +OnlineTable+"."+collection+","
    +OnlineTable+"."+region+","+
    ""+JujiTable+"."+webside+","+JujiTable+"."+videoId+","
    +JujiTable+"."+number+","
    +JujiTable+"."+link+""
    +" from "+OnlineTable+
    " join "+JujiTable+" on "+OnlineTable+"."+number+"="+JujiTable+"."+number+"");
加载中
0
sxgkwei
sxgkwei
...眼晕,闪人
很好
很好
非常感谢我的问题已经出来了。。。现在又有一个问题。。。在帮我看看吧:假如我有2个spinner下拉框的按钮。。一个是类型下拉框。。一个是演员的下拉框。。当我点击类型:戏剧的时候就会出现喜剧的视频,,当我在点击演员里的:成龙的时候就会出现成龙的所有戏剧电影。。。我想实现这个功能该怎么实现。。。。
很好
很好
所有应该还是代码的问题但是我看了好多遍都找不到那的错。。。所以你就帮我找找吧。。。看那的错。。。
很好
很好
回复 @sxgkwei : 都是添加不进去。。 我知道问题出在那 就是没有创建主外键的连接。。。如果要是创建了主外键的连接肯定能添加进去。。。因为他报的是没有 jujitable里面的 定义的名字。。。
sxgkwei
sxgkwei
回复 @fanni : 使用 executeUpdate试试
很好
很好
不是的。。。我先创建了jujitable还是报同样的错 他没有建立主外键的关联。。。。。。。
0
红薯
红薯
你应该贴出来异常
很好
很好
我把错误信息贴上去了 帮我看看吧。。。非常感谢。。。
0
逝水fox
逝水fox

是不是应该先创建表JujiTable 然后再创建 OnlineTable外键引用 JujiTable的列?

不过没见过给应用程序修改表结构权限的。

很好
很好
回复 @逝水fox : 是在添加语句的时候抛出来异常 是因为没有创建成功主外键的关联。。所以才会添加不进去的
逝水fox
逝水fox
回复 @fanni : 建议你把execSQL执行的SQL 在外面用String sql = ... 拼接一下 log出来看下实际执行的是什么语句,这个确实看着很晕,连字段名字都是变量拼的不知道对不对。另外你这个异常怎么看起来不是这个地方抛的而是实际操作数据的时候抛的?
很好
很好
但是好像还是不行。。。我先创建了JujiTable 还是报了同样的错。。。。还是没有主外键的关联。。。
sxgkwei
sxgkwei
正解。。。
0
很好
很好

引用来自“逝水fox”的答案

是不是应该先创建表JujiTable 然后再创建 OnlineTable外键引用 JujiTable的列?

不过没见过给应用程序修改表结构权限的。

恩是在添加的时候报的错。。。因为他没有创建成功主外键关联所以OnlineTable 没有jujitable 里的命名,所以才会添加失败。。
下面的和上面的的一样  这些代码我看了好多篇了都不知道那的错。。。
CREATE TABLE OnlineTable(videoId integer primary key autoincrement,name text,type text,region text,year text,actor text,television

text,Introduction text,collection text ,number integer not null,foreign key (number) references JujiTable(number))

CREATE TABLE JujiTable(number integer primary key,webside text,link text)

逝水fox
逝水fox
你异常截图那里断了一截 不过从table OnlineTable has no column link...这个和你表结构看,好像和外键没关系,是你什么地方要访问 OnlineTable的link字段而你这个字段实际是在JujiTable里面。再检查一下 link相关的地方是不是引用的表有问题吧
0
sxgkwei
sxgkwei

看来你建表的代码,貌似没问题的啊。看你的错误截图:

我就不知道你要insert into到哪个表里面去了,你如果是望OnlineTable里插数据,那就没有link字段啊;你如果往JujiTable里插数据,那就没有电影和台湾对应的那2个字段啊。你这个Error inserting是往哪个表里插数据呢?

0
sxgkwei
sxgkwei
看你意思,类型和人员 是分开独立查询的吧。那下拉框的onchang事件可以让你获得选择项的ID(比如类型ID),用这个ID通过ajax调用去查视频表,视频也有自己的类型ID,就会返回一个视频列表,然后展示在要展现的DIV里面就可以了,如果用jquery,典型的onchang后事件就是:$("div").load("/shipin?typeId="+typeId);"/shipin?typeId="+typeId 会返回到一个展示视频的HTML页面上,这个页面就会被拉到你上面的div里面来。
sxgkwei
sxgkwei
回复 @fanni : 没做过安卓,帮不了你了。。
很好
很好
下拉框的onchang。。。不是的 我说的是安卓的。。。
返回顶部
顶部