数据库结构我有所改变了。目前的关系图如下:
http://www.atxs.net/upload/yaoyao/my2.jpg
请问如何做跟新呢?

解决方案 »

  1.   

    得到一个字符串取得歌曲名字。检查歌曲表是否有这个名子
    如果有--则取得这个歌曲对应的id.并且直接把url添加到url表。id号使用获取的id号如果没有。则取得歌手名子。检查歌手表是否有这个名子。如果有取得歌手id,如果没有则加入后取得id
    在检查专辑表是否有这个专辑。如果有责取得id。如果没有就加入后取得id
    再在歌曲表中加入歌曲。并且专辑号。歌手号都使用前面获得的数据。在取得歌曲id用来操作url表
    在获得url地址。写入url表。id用歌曲id。这个是我的思路。不知道对不对?
    这个用存储过程如何写?
      

  2.   

    不好意思来晚了!
    最近太忙!
    先看看!!
    create procedure 名
    @标志 int
    as
    if @标志=1 
      按歌曲名查找..
    else if @标志=1 
      按歌手名子查找..
      

  3.   

    谢谢。大力。。但是可否不要用为代码?
    我是着急使用。摆脱了。我已经在china-pub定购了n本的sql书了。决心攻克难关。但是现在的时间不允许我等我慢慢学后在座这个库了。。
      

  4.   

    create procedure 名
    @标志 int,
    @参数 varchar(100)
    as
    if @标志=1 
      select * from 歌曲表 where 歌曲名 like '%'+@参数+'%'
    else if @标志=2
      select * from 歌手表 where 歌手名 like '%'+@参数+'%'
      

  5.   

    其中的名/参数。标志。等都是什么呢?我直接复制进取就可以么?我不用存储过程。直接用sql语句的为代码如下string 歌曲 = "歌曲名字";
    //这里检查数据库中是否有同名歌曲了。
    string strSQL查询歌曲 = "SELECT song_id FROM songs where song_name = " + 歌曲 + "\"";
    //如果这行返回有数据。则取得id号码到一个字符串中
    string 歌曲id = id ;
    string 歌曲url = url;
    string strInsert歌曲 = @"INSERT INTO songs_on_the_net ( song_id , url ) VALUES ( "" + 歌曲id + "" , ""  + 歌曲url + "")"; 
    //如果没有返回数据,则取得歌手名仔
    string 歌手 = 歌手名字;
    string strSQL查询歌手 = "SELECT singer_id FROM singers where singer_name = " + 歌手 + "\"";
    //如果有返回。则取得歌手id号码到一个字符串
    string 歌手id = id ;
    //如果没有返回数据/则加入这个歌手。并且返回id
    string 歌手名字 = 歌手名字;
    string 歌手地区 = 歌手地区;
    string 歌手介绍 = 歌手介绍;
    string strInsert歌手 = @"INSERT INTO singers ( singer_name , singer_zone , singer_intro ) VALUES ( "" + 歌手名字 + "" , ""  +歌手地区 + "" , "" +歌手介绍 + "")"; 
    //再取得这个歌手的id
    string 专辑 = 专辑;
    //查询专辑表。看是否有这个专辑。如果有。返回专辑id
    string strSQL查询专辑 = "SELECT album_id FROM album where album_name = " + 专辑 + "\"";
    string 专辑id = 专辑id;
    //如果没有,则加入专辑。返回id
    string 专辑 = 专辑名字;
    string 专辑语言 = 专辑语言;
    string strInsert专辑 = @"INSERT INTO album ( album_name , singer_id , 专辑语言 ) VALUES ( "" + 专辑名字 + "" , ""  +歌手id + "" , "" +专辑语言 + "")"; 
    //在取得专辑id
    //现在在歌曲表中加入歌曲
    string strInsert歌曲 = @"INSERT INTO songs ( singer_id , album_id , song_name ) VALUES ( "" + 歌手id + "" , ""  +专辑id + "" , "" +歌曲 + "")"; 
    //然后取得插入的id号码
    //最后执行一条语句
    string 最后的歌曲id = 歌曲id;
    string strInsert歌曲 = @"INSERT INTO songs_on_the_net ( song_id , url ) VALUES ( "" + 最后的歌曲id + "" , ""  + 歌曲url + "")"; 
    数据库中的表如下
    http://www.atxs.net/upload/yaoyao/my2.jpg其实这个存储过程的工作如下:
    得到一个或几个参数:
    有。歌曲名字 歌手名,专辑名字。url等字等等。
    1:先判断歌曲表中是否有歌曲名字。如果有就得倒对应的歌曲id。然后把参数中的url和歌曲id添加到歌曲url对应表上
    2:如果上一步不成立(歌曲表中没有这个歌曲名字),则获得参数歌手名字。然后查询歌手表是否有这个歌手,如果有则取回id.如果没有就添加歌手后取回id
    3: 得到参数专辑,查询专辑表中是否有这个专辑。有则取回id,没有就添加专辑后取回id
    4: 根据2和3得到的参数。在加上歌曲名字。添加歌曲表。然后取回添加的id
    5:得到参数歌曲url。在歌曲url对应表上添加相关条目。大概就这个过程。。但是实际上还有一些其他参数。比如参数中可能还有其他信息要添加到相应的表上。比如3的时后可能如果没有这个专辑。添加专辑的时后还要添加这个专辑的语言这类地参数。