热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

asp实现的7xi音乐网的采集源代码

asp实现的7xi音乐网的采集源代码
共5个文件:
2个是配置文件:
配置文件:
cfg.txt '---保存检测ID信息的,第一次采集时设为1,从小到大检测
cfg.asp '---ASP的配置信息,内容如下:
代码如下:

<% 
''' 
'''╔=======================================╗ 
'''┆                                       ┆ 
'''┆ @系统: 7xi音乐采集系统 Version 2.0    ┆ 
'''┆ @模块: 配置文件                       ┆ 
'''┆ @创建: 2006/07/24                     ┆ 
'''┆ @作者: D.S.Fang                       ┆ 
'''┆ @联系: fangds@gmail.com QQ-3700909    ┆ 
'''┆ @版权: 源码公开,无任何版权问题,您可以 ┆ 
'''┆        放心使用!!!尊重作者劳动成果,请 ┆ 
'''┆        保留此信息!                    ┆ 
'''┆                                       ┆ 
'''╚=======================================╝ 
''' 

dim picc_FolderPath,mp3_FolderPath 
dim v_7xijs_url,v_7xipicc_url,v_7xiplay_url,v_7xialbum_url,v_7ximp3_url,cfg_name,cfg_line 
dim httpobj,str,str0,str1,str2,str3,str4,str5,str6,str7,str8,str9 
dim is_getrm 

'---音乐文件是否保存到本地,true-保存;false-不保存 
is_getrm = false 

'---保存路径 
picc_FolderPath = "H:\mp3data\images\" 
mp3_FolderPath = "H:\mp3data\rm\"  

'---7xi相关页面 
v_7xijs_url = "http://7xi.net/player/Js.js" 
v_7xipicc_url = "http://ww.7xi.net/picc/" 
v_7xiplay_url = "http://7xi.net/playsong/" 
v_7xialbum_url = "http://ww.7xi.net/Vo2/" 
v_7ximp3_url = "" '---实时读取 

'---检测ID 
cfg_name = "cfg.txt"  
cfg_line = 1  

'---读取播放js文件,获得rm文件路径 
set httpobj = server.createobject("paopao.http") 
str = httpobj.get(v_7xijs_url) 
str0 = split(str,"theurl2="&chr(34)) 
str1 = split(str0(1),chr(34)) 
v_7ximp3_url = str1(0) 
set httpobj = nothing 
str = "" 

'---数据库连接 
set Conn = Server.CreateObject("ADODB.Connection")  
Conn.Open "driver={SQL server};server=localhost;uid=mp3;pwd=mp3;database=mp3db"  

'---拼SQL语句execute时需要过滤一下 
Function IndbStr(str) 
        if isNull(str) or str = "" then 
                IndbStr = str 
        else 
                IndbStr = replace(replace(trim(str),"'","''"),"%","") 
        end if 
End Function 

'---关闭数据库连接 
Function CloseConn() 
        conn.close 
        set cOnn=nothing 
End Function 

'---取得远程文件并保存到本地 
Function GetRemoteFiles(RemotePath, LocalPath, FileName) 
  Dim strBody 
  Dim FilePath 
  On Error Resume Next 
  '---取得流 
  strBody = GetBody(RemotePath) 
  '---取得保存的文件名 
  if Right(LocalPath, 1) <> "\" then LocalPath = LocalPath & "\" 
  if not CheckDir(bkfolder) then MakeNewsDir bkfolder 
  FilePath = LocalPath & GetFileName(RemotePath, FileName) 
  '---保存文件 
  if SaveToFile(strBody, FilePath) = true and err.Number = 0 then 
   GetRemoteFiles = true 
  else 
    GetRemoteFiles = false 
  end if 
End Function 

'---远程获取内容 
Function GetBody(url)  
  Dim Retrieval 
  '---建立XMLHTTP对象 
  Set Retrieval = CreateObject("Microsoft.XMLHTTP")  
  With Retrieval  
  .Open "Get", url, False, "", ""  
  .Send  
  GetBody = .ResponseBody 
  End With  
  Set Retrieval = Nothing  
End Function 

'---重组文件名 
Function GetFileName(RemotePath, FileName) 
  Dim arrTmp 
  Dim strFileExt 
  arrTmp = Split(RemotePath, ".") 
  strFileExt = arrTmp(UBound(arrTmp)) 
  GetFileName = FileName & "." & strFileExt 
End Function 

'---将流内容保存为文件 
Function SaveToFile(Stream, FilePath) 
  Dim objStream 
  On Error Resume Next 
  '---建立ADODB.Stream对象,必须要ADO 2.5以上版本 
  Set objStream = Server.CreateObject("ADODB.Stream") 
  objStream.Type = 1 '以二进制模式打开 
  objStream.Open 
  objstream.write Stream 
  objstream.SaveToFile FilePath, 2 
  objstream.Close() 
  '---关闭对象,释放资源 
  Set objstream = Nothing 
  if err.Number <> 0 then 
    SaveToFile = false 
  else 
    SaveToFile = true 
  end if 
End Function 

'---读取文本文件 
Function FSOlinedit(filename,lineNum) 
  if linenum < 1 then exit function 
  dim fso,f,temparray,tempcnt 
  set fso = server.CreateObject("scripting.filesystemobject") 
  if not fso.fileExists(server.mappath(filename)) then exit function 
  set f = fso.opentextfile(server.mappath(filename),1) 
  if not f.AtEndofStream then 
    tempcnt = f.readall 
    f.close 
    set f = nothing 
    temparray = split(tempcnt,chr(13)&chr(10)) 
    if lineNum>ubound(temparray)+1 then 
      exit function 
    else 
      FSOlinedit = temparray(lineNum-1) 
    end if 
  end if 
End function 

'---检查绝对路径是否存在 
Function CheckFolder(FolderPath) 
  dim fso1 
  Set fso1 = CreateObject("Scripting.FileSystemObject") 
  If fso1.FolderExists(FolderPath) then 
     '存在 
     CheckFolder = True 
  Else 
     '不存在 
     CheckFolder = False 
  End if 
  Set fso1 = nothing 
End Function 

'---根据指定名称生成目录 
Function MakeNewsDir(foldername) 
  dim fso1,f 
  Set fso1 = CreateObject("Scripting.FileSystemObject") 
  Set f = fso1.CreateFolder(foldername) 
  MakeNewsDir = True 
  Set fso1 = nothing 
End Function 

''''''''编码(日文字符)'''''''' 
Function Jencode(byVal iStr) 
        if isnull(iStr) or isEmpty(iStr) then 
                Jencode="" 
                Exit function 
        end if 
        dim F,i,E 
        E=array("Jn0;","Jn1;","Jn2;","Jn3;","Jn4;","Jn5;","Jn6;","Jn7;","Jn8;","Jn9;","Jn10;","Jn11;","Jn12;","Jn13;","Jn14;","Jn15;","Jn16;","Jn17;","Jn18;","Jn19;","Jn20;","Jn21;","Jn22;","Jn23;","Jn24;","Jn25;") 
        F=array(chr(-23116),chr(-23124),chr(-23122),chr(-23120),_ 
        chr(-23118),chr(-23114),chr(-23112),chr(-23110),_ 
        chr(-23099),chr(-23097),chr(-23095),chr(-23075),_ 
        chr(-23079),chr(-23081),chr(-23085),chr(-23087),_ 
        chr(-23052),chr(-23076),chr(-23078),chr(-23082),_ 
        chr(-23084),chr(-23088),chr(-23102),chr(-23104),_ 
        chr(-23106),chr(-23108)) 
        Jencode=iStr 
        for i=0 to 25 
                Jencode=replace(Jencode,F(i),E(i)) 
        next 
End Function 

''''''''解码(日文字符)'''''''' 
Function Juncode(byVal iStr) 
        if isnull(iStr) or isEmpty(iStr) then 
                Juncode="" 
                Exit function 
        end if 
        dim F,i,E 
        E=array("Jn0;","Jn1;","Jn2;","Jn3;","Jn4;","Jn5;","Jn6;","Jn7;","Jn8;","Jn9;","Jn10;","Jn11;","Jn12;","Jn13;","Jn14;","Jn15;","Jn16;","Jn17;","Jn18;","Jn19;","Jn20;","Jn21;","Jn22;","Jn23;","Jn24;","Jn25;") 
        F=array(chr(-23116),chr(-23124),chr(-23122),chr(-23120),_ 
        chr(-23118),chr(-23114),chr(-23112),chr(-23110),_ 
        chr(-23099),chr(-23097),chr(-23095),chr(-23075),_ 
        chr(-23079),chr(-23081),chr(-23085),chr(-23087),_ 
        chr(-23052),chr(-23076),chr(-23078),chr(-23082),_ 
        chr(-23084),chr(-23088),chr(-23102),chr(-23104),_ 
        chr(-23106),chr(-23108)) 
        Juncode=iStr 
        for i=0 to 25 
                Juncode=replace(Juncode,E(i),F(i))'□ 
        next 
End Function 
%> 


1个是手动添加歌手: 
addsinger.asp '---手动添加歌手,内容如下: 

 程序代码 
<% 
''' 
'''╔=======================================╗ 
'''┆                                       ┆ 
'''┆ @系统: 7xi音乐采集系统 Version 2.0    ┆ 
'''┆ @模块: 手动添加歌手                   ┆ 
'''┆ @创建: 2006/07/24                     ┆ 
'''┆ @作者: D.S.Fang                       ┆ 
'''┆ @联系: fangds@gmail.com QQ-3700909    ┆ 
'''┆ @版权: 源码公开,无任何版权问题,您可以 ┆ 
'''┆        放心使用!!!尊重作者劳动成果,请 ┆ 
'''┆        保留此信息!                    ┆ 
'''┆                                       ┆ 
'''╚=======================================╝ 
''' 
'%> 
 
 
 
 
 
 
 
 

7xi音乐采集更新系统

 
<% 
dim sql 
dim singer_name,singer_first_name,singer_sort 

singer_name = IndbStr(request("singer_name")) 
singer_first_name = Ucase(IndbStr(request("singer_first_name"))) 
singer_sort = request("singer_sort") 

response.write "
歌手信息

姓名:"&singer_name&"
字母:"&singer_first_name&"
性质:"&singer_sort 

sql = "insert into d_singer (singer_name,singer_first_name,singer_sort,is_down) values ('"&singer_name&"','"&singer_first_name&"','"&singer_sort&"',0)" 
response.write "

"&sql 
conn.execute(sql) 
CloseConn() 

'---歌手添加完成后转入信息采集重新检测 
response.write "

歌手信息检查添加完成,正在准备检查获取更新...

response.write "" 
%> 
 
 


2个是采集程序: 
get.asp '---采集歌手专辑歌曲信息,内容如下 

 程序代码 
<% 
''' 
'''╔=======================================╗ 
'''┆                                       ┆ 
'''┆ @系统: 7xi音乐采集系统 Version 2.0    ┆ 
'''┆ @模块: 歌手、专辑、歌曲信息采集       ┆ 
'''┆ @创建: 2006/07/24                     ┆ 
'''┆ @作者: D.S.Fang                       ┆ 
'''┆ @联系: fangds@gmail.com QQ-3700909    ┆ 
'''┆ @版权: 源码公开,无任何版权问题,您可以 ┆ 
'''┆        放心使用!!!尊重作者劳动成果,请 ┆ 
'''┆        保留此信息!                    ┆ 
'''┆                                       ┆ 
'''╚=======================================╝ 
''' 
'%> 
 
 
 
 
 
 
 
 

7xi音乐采集更新系统

 
<% 
dim t7xiid,url,FolderPath,fso,fout 
dim songid(100),songname(100) 
dim strsinger,strlang,stralbum,strtime,strcorp,strcontent,strpicc,singerid,albumid 
dim rssort,rssinger,rsalbum,rssong,i,m,sql,okimg 

t7xiid = FSOlinedit(cfg_name,cfg_line) 

url = v_7xialbum_url&"v_"&t7xiid&".htm" 

set httpobj=server.createobject("paopao.http") 

Err.Clear 
'on error resume next 

str = "" 
str = httpobj.get(url) 

if str = "" then 
        CloseConn() 
  if t7xiid < 3198 then '---没有检测到时是否递增ID,继续检测 
    str = t7xiid + 1 
    FolderPath = Server.MapPath(".\") 
    Set fso = Server.CreateObject("Scripting.FileSystemObject") 
    Set fout = fso.CreateTextFile(FolderPath & "\cfg.txt")  
    fout.WriteLine str 
    fout.close  
    response.write "
当前ID号不存在,正在检查下一ID号 ...

    response.write "" 
  else  '---不需要递增ID检测时,转到歌曲信息采集 
    response.write "
歌手专辑信息检查完毕,正在准备检查获取歌曲信息 ...

    response.write "" 
    response.end 
  end if 
else 
  str0 = split(str,"歌 手 : ") 
  str1 = split(str0(1),"") 
  strsinger = IndbStr(str1(0)) 
  response.write "
歌手:"&strsinger 

  str0 = split(str,"语 种 : ") 
  str1 = split(str0(1),"") 
  strlang = str1(0) 
  response.write "
语种:"&strlang 

  str0 = split(str,"专 辑 : ") 
  str1 = split(str0(1),"") 
  str2 = split(str1(0),""">") 
  stralbum = IndbStr(str2(1)) 
  response.write "
专辑:"&stralbum 

  str0 = split(str,"时 间 : ") 
  str1 = split(str0(1),"") 
  strtime = str1(0) 
  response.write "
时间:"&strtime 

  str0 = split(str,"公 司 : ") 
  str1 = split(str0(1),"") 
  strcorp = str1(0) 
  response.write "
公司:"&strcorp 

  str0 = split(str,"") 
  str1 = split(str0(1),"") 
  strcontent = replace(replace(IndbStr(str1(0)),"
",chr(13))," "," ") 
  response.write "
简介:"&strcontent 

  str0 = split(str,"  str1 = split(str0(1),"""") 
  strpicc = str1(0) 
  response.write "
图片:"&strpicc 
  response.write "


  set rssinger = conn.execute("select * from d_singer where singer_name='"&strsinger&"'") 
  '---歌手信息不存在时需要手动添加歌手 
  if rssinger.eof then 
    response.write "
select * from d_singer where singer_name='"&strsinger&"'" 
    response.write "

歌手不存在,需要手动操作添加。

请按以下要求添加歌手:


%> 
 
"> 
 
<%'%> 
<% 
    set rssort = conn.execute("select * from s_sort ") 
    do while not rssort.eof and i < 10 
%> 
"><%=rssort("sort_name")%><%'%> 
<% 
      rssort.movenext 
    loop 
    rssort.close 
    set rssort = nothing 
%> 
 
 
<%  
    CloseConn() 
    response.end 
  else  '---歌手信息已存在,检查专辑信息是否需要入库 
    singerid = rssinger("id") 
    conn.execute("update d_singer set is_down=0 where id="&singerid) 
    response.write "

歌手信息正确,正在检查获取专辑信息 ...

    set rsalbum = conn.execute("select * from d_album where album_singer="&singerid&" and album_name='"&stralbum&"'") 
    if rsalbum.eof then 
      str1 = split(strpicc,".") 
      str2 = str1(0) 
      sql="insert into d_album (album_singer,file_img,album_name,album_lang,album_corp,album_time,album_intro,add_time,is_down,album_7xi) values ('"&singerid&"','"&strpicc&"','"&stralbum&"','"&strlang&"','"&strcorp&"','"&strtime&"','"&strcontent&"','"&now&"',0,"&t7xiid&")" 
      conn.execute(sql) 
      '---采集保存专辑缩略图 
      okimg = GetRemoteFiles(v_7xipicc_url&strpicc,picc_FolderPath,str2)                 
      response.write "
专辑信息检查添加完成,正在检查获取歌曲信息 ..."&"
SQL语句:"&sql 
    else 
      response.write "

专辑信息正确,正在准备检查获取歌曲信息 ..." 
    end if     
    rsalbum.close 
    set rsalbum = nothing 
  end if 
  rssinger.close 
  set rssinger = nothing 

  set rsalbum = conn.execute("select * from d_album where album_singer="&singerid&" and album_name='"&stralbum&"'") 
  albumid = rsalbum("id") 
  rsalbum.close 
  set rsalbum = nothing 

  response.write "

专辑歌曲信息


  '----歌曲ID 
  i = 1 
  str0 = split(str,"  response.write "
歌曲ID:" 
  do while i <= Ubound(str0) 
    str1 = split(str0(i),chr(34)) 
    songid(i-1) = str1(0) 
    response.write songid(i-1)&" - " 
    i = i + 1 
  loop 
  response.write "共"&i&"首。" 

  '---歌曲名称 
  m = 1 
  str0 = split(str,"
歌曲:" 
  do while m <= Ubound(str0) 
    str1 = split(str0(m),""" target=""_blank"">    songname(m-1) = Jencode(replace(str1(0),"'","''")) 
    response.write Juncode(songname(m-1))&" - " 
    m = m + 1 
  loop 
  response.write "共"&i&"首。" 

  '---歌曲ID数目和歌曲名数目不一致时需要检查是否有误 
  if i <> m then 
    response.write "

错误:歌曲ID数目与歌曲名数目不一致,请检查目标页面:"& url &"" 
    response.end 
  end if 

  '---检查歌曲是否需要入库 
  do while i > 1 
    set rssong = conn.execute("select * from d_mp3 where mp3_album="&albumid&" and mp3_singer="&singerid&" and mp3_name='"&songname(i-2)&"'") 
    if rssong.eof then 
      sql = "insert into d_mp3 (mp3_7xi,mp3_singer,mp3_album,mp3_name) values ('"&songid(i-2)&"','"&singerid&"','"&albumid&"','"&songname(i-2)&"')" 
      conn.execute(sql) 
      response.write "
添加:"&songname(i-2)&"" 
      response.write sql 
    else 
      response.write "
跳过:"&songname(i-2) 
    end if 
    rssong.close 
    set rssong = nothing 
    i = i-1 
  loop 

  CloseConn() 

  '---记录下一检测ID号 
  str = t7xiid + 1 
  FolderPath = Server.MapPath(".\") 
  Set fso = Server.CreateObject("Scripting.FileSystemObject") 
  Set fout = fso.CreateTextFile(FolderPath & "\cfg.txt")  
  fout.WriteLine str 
  fout.close 

  '---继续检测下一ID 
  response.write "
正在检测下一ID信息 ..." 
  response.write "" 
end if 
%> 
 
 


getrm.asp '---采集RM文件更新歌曲信息,内容如下: 

 程序代码 
<% 
''' 
'''╔=======================================╗ 
'''┆                                       ┆ 
'''┆ @系统: 7xi音乐采集系统 Version 2.0    ┆ 
'''┆ @模块: 歌曲文件、歌词等信息采集       ┆ 
'''┆ @创建: 2006/07/24                     ┆ 
'''┆ @作者: D.S.Fang                       ┆ 
'''┆ @联系: fangds@gmail.com QQ-3700909    ┆ 
'''┆ @版权: 源码公开,无任何版权问题,您可以 ┆ 
'''┆        放心使用!!!尊重作者劳动成果,请 ┆ 
'''┆        保留此信息!                    ┆ 
'''┆                                       ┆ 
'''╚=======================================╝ 
''' 
'%> 
 
 
 
 
 
 
 
 

7xi音乐采集更新系统

 
<% 
dim getcount,rssong,id,t7xiid,url,filerm,tmpurl,i,tmpfolder,okrm,singer,song,tmp_url,lyric,rs 

'---每次处理歌曲数量 
getcount = 5 
set rssong = conn.execute("select top " & getcount & " a.*,b.singer_name from d_mp3 a,d_singer b where a.mp3_singer=b.id and a.file_rm is null order by a.id desc") 

if rssong.eof then  '---歌曲信息处理完成 
  rssong.close 
  set rssong = nothing 
  CloseConn() 
        response.write "
歌曲文件信息检查采集完成!" 
        response.write "

采集完了,可以做垃圾站了!" 
        response.end 
else 
  do while not rssong.eof 
    id = rssong("id") 
    t7xiid = rssong("mp3_7xi") 
    singer = replace(rssong("singer_name")," ","%20") 
    song = replace(rssong("mp3_name")," ","%20") 
    response.write "

歌曲名 - "& singer & "-" &song 
    '---目标页面 
    url = v_7xiplay_url&t7xiid&".htm" 
    set httpobj = server.createobject("paopao.http") 
    Err.Clear 
    on error resume next 
    response.write "
"&url 
    str = httpobj.get(url) 
    if Err = 0 then '---读取目标页面正常时的处理 
      '----歌曲文件名及文件夹 
      str0 = split(str,"      str1 = split(str0(1),"'>") 
      filerm = str1(0) 
      response.write "
文件名 - "& filerm  
      tmpurl = v_7ximp3_url & filerm 
      response.write "
目标源 - "& tmpurl 
      '---需要保存音乐文件到本地时,采集保存音乐文件 
      if is_getrm then 
        str0 = split(filerm,"/") 
        i = 0 
        do while i < Ubound(str0) 
          tmpfolder = mp3_FolderPath & str0(i) 
          if not CheckFolder(tmpfolder) then MakeNewsDir tmpfolder 
          i = i + 1 
        loop 
        response.write "
保存为 - "& tmpfolder & "\" & str0(Ubound(str0)) 
        okrm = GetRemoteFiles(tmpurl,tmpfolder,replace(str0(Ubound(str0)),".rm","")) 
      else 
        response.write "
请注意 - RM文件配置为不保存!!!!!!!!!!" 
      end if 

      '---歌词采集 
      tmp_url = "http://www.7xi.net/showword.asp?id=" & t7xiid 
      response.write "
"&tmp_url 
      set httpobj = server.createobject("paopao.http") 
      str0 = httpobj.get(tmp_url) 
      Err.Clear 
      on error resume next 
      str1 = split(str0,""&chr(13)) 
      str2 = split(str1(1),"                ") 
      lyric = str2(0) 
      lyric = replace(lyric,"
",chr(13)) 
      lyric = replace(lyric," "," ") 
      lyric = replace(replace(lyric,"

",""),"

","") 
      lyric = IndbStr(trim(lyric)) 
      if Instr(lyric,"mp3.baidu.com") then lyric = "暂时还没歌词"         

      if len(lyric) < 20 or Err <> 0 then 
        lyric = "暂时还没歌词" 
        response.write "
7xi自带歌词不完整,将采集baidu歌词" 
      end if 

      if lyric = "暂时还没歌词" then 
        Err.Clear 
        tmp_url = "http://mp3.baidu.com/m?f=ms&rn=10&tn=baidump3lyric&ct=150994944&word="&singer&"+"&song 
        response.write "
"&tmp_url 
        str0 = httpobj.get(tmp_url) 
        str1 = split(str0,"") 
        if Ubound(str1) >= 1 then 
          str2 = split(str0,"") 
          str3 = split(str2(1),"
") 
          lyric = str3(0) 
          lyric = replace(lyric,"
",chr(13)) 
          lyric = replace(lyric," "," ") 
          lyric = replace(lyric,"          lyric = replace(lyric,"","") 
        else 
          lyric = "暂时还没歌词" 
        end if 
      end if 

      response.write "
歌词 - "&lyric 

      '---将采集到的信息更新到数据库 
      if is_getrm then 
        conn.execute("update d_mp3 set file_rm='"&filerm&"',mp3_lyric='"&lyric&"',is_down='1' where id="&id) 
      else 
        conn.execute("update d_mp3 set file_rm='"&filerm&"',mp3_lyric='"&lyric&"',is_down='0' where id="&id) 
      end if 
    else  '---读取目标页面出错时的处理 
      conn.execute("update d_mp3_t set file_rm='nourl',is_down='1' where id="&id) 
      response.write "

错误:获取目标页面错误,请检查:"& url &"" 
      response.end 
    end if 
    rssong.movenext 
  loop 
  rssong.close 
  set rssong = nothing 
  CloseConn() 

  '---继续检测采集下一批歌曲信息 
  response.write "
正在检测下一批歌曲信息 ...


  response.write "" 
end if 
%> 
 
 


数据库表的SQL脚本: 
数据库表 

 程序代码 
s_sort ----歌手分类表 

if exists (select * from dbo.sysobjects where id = object_id(N'[dbo].[s_sort]') and OBJECTPROPERTY(id, N'IsUserTable') = 1) 
drop table [dbo].[s_sort] 
GO 

Create TABLE [dbo].[s_sort] ( 
        [ID] [int] IDENTITY (1, 1) NOT NULL , 
        [sort_name] [nvarchar] (20) COLLATE Chinese_PRC_CI_AS NOT NULL  
) ON [PRIMARY] 
GO 

Alter TABLE [dbo].[s_sort] WITH NOCHECK ADD  
        CONSTRAINT [PK_s_sort] PRIMARY KEY  CLUSTERED  
        ( 
                [ID] 
        )  ON [PRIMARY]  
GO 




d_singer ----歌手信息表 

if exists (select * from dbo.sysobjects where id = object_id(N'[dbo].[d_singer]') and OBJECTPROPERTY(id, N'IsUserTable') = 1) 
drop table [dbo].[d_singer] 
GO 

Create TABLE [dbo].[d_singer] ( 
        [ID] [int] IDENTITY (1, 1) NOT NULL , 
        [singer_name] [nvarchar] (255) COLLATE Chinese_PRC_CI_AS NULL , 
        [singer_first_name] [nvarchar] (50) COLLATE Chinese_PRC_CI_AS NULL , 
        [singer_sort] [int] NULL , 
        [mp3_num] [int] NULL , 
        [is_putup] [bit] NULL , 
        [view_count] [int] NULL , 
        [is_down] [bit] NULL  
) ON [PRIMARY] 
GO 

Alter TABLE [dbo].[d_singer] WITH NOCHECK ADD  
        CONSTRAINT [PK_d_singer] PRIMARY KEY  CLUSTERED  
        ( 
                [ID] 
        )  ON [PRIMARY]  
GO 



d_album ----专辑信息表 

if exists (select * from dbo.sysobjects where id = object_id(N'[dbo].[d_album]') and OBJECTPROPERTY(id, N'IsUserTable') = 1) 
drop table [dbo].[d_album] 
GO 

Create TABLE [dbo].[d_album] ( 
        [ID] [int] IDENTITY (1, 1) NOT NULL , 
        [album_singer] [int] NULL , 
        [file_img] [nvarchar] (100) COLLATE Chinese_PRC_CI_AS NULL , 
        [album_name] [nvarchar] (100) COLLATE Chinese_PRC_CI_AS NULL , 
        [album_lang] [nvarchar] (100) COLLATE Chinese_PRC_CI_AS NULL , 
        [album_corp] [nvarchar] (100) COLLATE Chinese_PRC_CI_AS NULL , 
        [album_time] [nvarchar] (100) COLLATE Chinese_PRC_CI_AS NULL , 
        [album_intro] [ntext] COLLATE Chinese_PRC_CI_AS NULL , 
        [is_singer_album] [bit] NULL , 
        [view_count] [int] NULL , 
        [is_putup] [bit] NULL , 
        [add_time] [datetime] NULL , 
        [album_7xi] [int] NULL , 
        [is_down] [bit] NULL  
) ON [PRIMARY] TEXTIMAGE_ON [PRIMARY] 
GO 

Alter TABLE [dbo].[d_album] WITH NOCHECK ADD  
        CONSTRAINT [PK_d_album] PRIMARY KEY  CLUSTERED  
        ( 
                [ID] 
        )  ON [PRIMARY]  
GO 




d_mp3 ----歌曲信息表 

if exists (select * from dbo.sysobjects where id = object_id(N'[dbo].[d_mp3]') and OBJECTPROPERTY(id, N'IsUserTable') = 1) 
drop table [dbo].[d_mp3] 
GO 

Create TABLE [dbo].[d_mp3] ( 
        [ID] [int] IDENTITY (1, 1) NOT NULL , 
        [mp3_name] [varchar] (200) COLLATE Chinese_PRC_CI_AS NULL , 
        [mp3_album] [int] NULL , 
        [mp3_singer] [int] NULL , 
        [file_rm] [varchar] (100) COLLATE Chinese_PRC_CI_AS NULL , 
        [file_size] [varchar] (20) COLLATE Chinese_PRC_CI_AS NULL , 
        [is_putup] [bit] NULL , 
        [mp3_lyric] [varchar] (5000) COLLATE Chinese_PRC_CI_AS NULL , 
        [view_count] [int] NULL , 
        [down_count] [int] NULL , 
        [is_my] [bit] NULL , 
        [mp3_7xi] [int] NULL , 
        [is_down] [varchar] (2) COLLATE Chinese_PRC_CI_AS NULL  
) ON [PRIMARY] 
GO 

Alter TABLE [dbo].[d_mp3] WITH NOCHECK ADD  
        CONSTRAINT [PK_d_mp3] PRIMARY KEY  CLUSTERED  
        ( 
                [ID] 
        )  ON [PRIMARY]  
GO

推荐阅读
  • android listview OnItemClickListener失效原因
    最近在做listview时发现OnItemClickListener失效的问题,经过查找发现是因为button的原因。不仅listitem中存在button会影响OnItemClickListener事件的失效,还会导致单击后listview每个item的背景改变,使得item中的所有有关焦点的事件都失效。本文给出了一个范例来说明这种情况,并提供了解决方法。 ... [详细]
  • Iamtryingtomakeaclassthatwillreadatextfileofnamesintoanarray,thenreturnthatarra ... [详细]
  • 在Android开发中,使用Picasso库可以实现对网络图片的等比例缩放。本文介绍了使用Picasso库进行图片缩放的方法,并提供了具体的代码实现。通过获取图片的宽高,计算目标宽度和高度,并创建新图实现等比例缩放。 ... [详细]
  • 本文介绍了使用kotlin实现动画效果的方法,包括上下移动、放大缩小、旋转等功能。通过代码示例演示了如何使用ObjectAnimator和AnimatorSet来实现动画效果,并提供了实现抖动效果的代码。同时还介绍了如何使用translationY和translationX来实现上下和左右移动的效果。最后还提供了一个anim_small.xml文件的代码示例,可以用来实现放大缩小的效果。 ... [详细]
  • 向QTextEdit拖放文件的方法及实现步骤
    本文介绍了在使用QTextEdit时如何实现拖放文件的功能,包括相关的方法和实现步骤。通过重写dragEnterEvent和dropEvent函数,并结合QMimeData和QUrl等类,可以轻松实现向QTextEdit拖放文件的功能。详细的代码实现和说明可以参考本文提供的示例代码。 ... [详细]
  • Java序列化对象传给PHP的方法及原理解析
    本文介绍了Java序列化对象传给PHP的方法及原理,包括Java对象传递的方式、序列化的方式、PHP中的序列化用法介绍、Java是否能反序列化PHP的数据、Java序列化的原理以及解决Java序列化中的问题。同时还解释了序列化的概念和作用,以及代码执行序列化所需要的权限。最后指出,序列化会将对象实例的所有字段都进行序列化,使得数据能够被表示为实例的序列化数据,但只有能够解释该格式的代码才能够确定数据的内容。 ... [详细]
  • 本文介绍了OC学习笔记中的@property和@synthesize,包括属性的定义和合成的使用方法。通过示例代码详细讲解了@property和@synthesize的作用和用法。 ... [详细]
  • 本文讨论了一个关于cuowu类的问题,作者在使用cuowu类时遇到了错误提示和使用AdjustmentListener的问题。文章提供了16个解决方案,并给出了两个可能导致错误的原因。 ... [详细]
  • 后台获取视图对应的字符串
    1.帮助类后台获取视图对应的字符串publicclassViewHelper{将View输出为字符串(注:不会执行对应的ac ... [详细]
  • XML介绍与使用的概述及标签规则
    本文介绍了XML的基本概念和用途,包括XML的可扩展性和标签的自定义特性。同时还详细解释了XML标签的规则,包括标签的尖括号和合法标识符的组成,标签必须成对出现的原则以及特殊标签的使用方法。通过本文的阅读,读者可以对XML的基本知识有一个全面的了解。 ... [详细]
  • 前景:当UI一个查询条件为多项选择,或录入多个条件的时候,比如查询所有名称里面包含以下动态条件,需要模糊查询里面每一项时比如是这样一个数组条件:newstring[]{兴业银行, ... [详细]
  • Android开发实现的计时器功能示例
    本文分享了Android开发实现的计时器功能示例,包括效果图、布局和按钮的使用。通过使用Chronometer控件,可以实现计时器功能。该示例适用于Android平台,供开发者参考。 ... [详细]
  • 在Xamarin XAML语言中如何在页面级别构建ControlTemplate控件模板
    本文介绍了在Xamarin XAML语言中如何在页面级别构建ControlTemplate控件模板的方法和步骤,包括将ResourceDictionary添加到页面中以及在ResourceDictionary中实现模板的构建。通过本文的阅读,读者可以了解到在Xamarin XAML语言中构建控件模板的具体操作步骤和语法形式。 ... [详细]
  • HDU 2372 El Dorado(DP)的最长上升子序列长度求解方法
    本文介绍了解决HDU 2372 El Dorado问题的一种动态规划方法,通过循环k的方式求解最长上升子序列的长度。具体实现过程包括初始化dp数组、读取数列、计算最长上升子序列长度等步骤。 ... [详细]
  • 浏览器中的异常检测算法及其在深度学习中的应用
    本文介绍了在浏览器中进行异常检测的算法,包括统计学方法和机器学习方法,并探讨了异常检测在深度学习中的应用。异常检测在金融领域的信用卡欺诈、企业安全领域的非法入侵、IT运维中的设备维护时间点预测等方面具有广泛的应用。通过使用TensorFlow.js进行异常检测,可以实现对单变量和多变量异常的检测。统计学方法通过估计数据的分布概率来计算数据点的异常概率,而机器学习方法则通过训练数据来建立异常检测模型。 ... [详细]
author-avatar
mobiledu2502892377
这个家伙很懒,什么也没留下!
Tags | 热门标签
RankList | 热门文章
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有