学院首页>网络编程>ASP>SQL SERVER结构浏览器

SQL SERVER结构浏览器

作者: 来源:不详 添加时间:2006-5-25 19:03:53
  从老外那儿转帖过来的

很酷,只要修改几个参数就可以了,很有帮助

<%@ LANGUAGE = JScript %>
<%
  var ConnStr= "DSN=admin"; //
 var UserLogin= "sa";  // input empty Login and Password,
 var UserPassword= ""; // if your DSN works via WinNT trust connection
 var CharSet= "gb2312";  // as sample "windows-1251"
 var PgSize= 10; 
%>
<html>
<head>
<meta http-equiv="content-type" content="text/html; charset=<%=CharSet%>">
<title>MS SQL Structure Viewer Version 1.2</title>
</head>
<body bgcolor=#2f2f2f link=#000000 vlink=#000000 alink=#000000 topmargin=1 leftmargin=1>
<table width='100%' bgcolor=gray cellpadding=0 cellspacing=0><td>
<table width='100%' cellpadding=0 cellspacing=1>
<tr><td align=center>
 <font color=white size=+1><b>MS SQL WebTools &gt;&gt; Table Structure Viewer</b></font></td>
 <td align=right>
 <font color=black><small><b>written by
 <a href="mailto:little@ivc.tagmet.ru">
 <font color=black><small><b>Alexander Tkalich</b></small></a></b></small></font>
</td></tr>
</table>
</td>
</table>
<p>
<%
var trColor1= "#7f9faf", trColor2= "#bfcfd7";
var trColor= trColor1;

function isDef( Value){
 if( Value== ( Value+ "")) return true;
 return false;
}

function QOutSelect( Conn, Name, Value, FirstName, FirstValue, SQL, SSize){
 var Rs= Conn.Execute( SQL);
 Response.Write( "<select name='"+ Name+ "' size="+ SSize+ ">");
 if( FirstName!= "")
  Response.Write( "<option value='"+ FirstValue+ "'>"+ FirstName);
 for( ; !Rs.EOF; Rs.MoveNext()){
  Id= Rs( 0);
  Nm= Rs( 1);
  if( Value== ""+ Id) S= 'selected'; else S= '';
  Response.Write( "<option value='"+ Id+ "' "+ S+ ">"+ Nm+ "\n");
 }
 Response.Write( "</select>");
}

var S, DbName, TbName, Tbl, Row;
if( !isDef( DbName= Request.Form( "DbName")))
 DbName= Request.QueryString( "DbName");
if( !isDef( TbId= Request.Form( "TbId")))
 TbId= Request.QueryString( "TbId");
Tbl= Request.QueryString( "Tbl");
Row= Request.QueryString( "Row")/ 1;
%>

<center>

<%
var Conn= Server.CreateObject("ADODB.Connection");
Conn.Open( ConnStr, UserLogin, UserPassword);

if( !isDef( Tbl)){
%>

<form name='f' method=post action='TbStru.asp'>
<input type=hidden name=CurrentDb value='<%=DbName%>'>
<table border=1 bgcolor=#7f9faf cellpadding=0 cellspacing=0><td>
<table border=0 cellpadding=8 cellspacing=0><tr valign=bottom><td align=center><b>Databases</b><br>

<%
 QOutSelect( Conn, "DbName' onChange='document.f.submit();", DbName, "", "",
  "select name, name from master.dbo.sysdatabases Order by name", 10);
 Response.Write( '</td>');
 if( isDef( DbName)){
  Response.Write( '<td align=center><b>Tables & Views</b><br>');
  QOutSelect( Conn, "TbId' onChange='document.f.submit();", TbId, '', '',
"select id, name from "+ DbName+ ".dbo.sysobjects where type in ('U','V') and category<>2 Order By Name", 10);
  Response.Write( '</td>');
 }
 if( isDef( DbName)) S= 'Show structure';
 else S= 'Show list of tables';
 Response.Write(
  "\n<td><table height='100%' border=0>\n"+
  "<tr valign=bottom><td><input type=submit value='"+ S+ "'></td></tr>\n"+
  "</table></td></tr></table></td></table></form><p>\n"
 );
}

if( !isDef( CurrentDb= Request.Form( "CurrentDb")))
 CurrentDb= Request.QueryString( "CurrentDb");
if( !isDef( Tbl)&& isDef( DbName)&& DbName+ ""== CurrentDb+ ""&& isDef( TbId)){
 Rs= Conn.Execute(
"select O.name, U.name"+
" from "+ DbName+ ".dbo.sysobjects O, "+
DbName+ ".dbo.sysusers U"+
" where O.id="+ TbId+ " and U.uid=O.uid"
 );
 TbName= Rs( 0);
 TbOwner= Rs( 1);
 Response.Write(
  "<a target='_blank' href='TbStru.asp?Tbl=["+ DbName+ "].["+ TbOwner+ "].["+ TbName+ "]&TbId="+ TbId+
  "&DbName="+ DbName+ "'>"+
  "<font color=white><b>"+ DbName+ "."+ TbOwner+ "."+ TbName+ "</b></font></a>\n"
 );
 Response.Write( "<br>\n");
 Rs= Conn.Execute(
"select C.name, T.name, C.length, C.xprec, C.xscale,"+
" C.colstat, C.isnullable,"+
" case when C.autoval is null then 0 else 1 end,"+
" SC.text, "+
"( select CForgin.name+ ' of '+ '<a href=\"TbStru.asp?"+
 "DbName="+ DbName+ "&CurrentDb="+ DbName+
 "&TbName='+ O.name+ '&TbId='+ Convert( varchar, Sr.rkeyid)+ '"+
 "\"><b>'+ O.name+ '</b></a>'"+
 " from "+ DbName+ ".dbo.sysreferences Sr,"+
 DbName+ ".dbo.sysobjects O,"+
 DbName+ ".dbo.syscolumns CForgin"+
 " where Sr.fkeyid="+ TbId+ " and Sr.fkey1=C.colid and Sr.rkeyid=O.id"+
 " and CForgin.id=O.id and CForgin.colid=Sr.rkey1"+
") from "+ DbName+ ".dbo.syscolumns C, "+
DbName+ ".dbo.systypes T, "+
DbName+ ".dbo.syscomments SC "+
"where C.id="+ TbId+ " and C.xtype=T.xusertype and C.cdefault*=SC.id "+
"order by C.colid"
 );
%>
 <input type=hidden name=DbName value='<%=DbName%>'>
 <input type=hidden name=CurrentDb value='<%=DbName%>'>
 <input type=hidden name='TbId' value='<%=TbId%>'>
 <table border=1 bordercolor=#5f5f5f bgcolor=#cfcfcf cellpadding=3 cellspacing=0>
 <tr bgcolor=<%=trColor%>><th>Nn</th><th>Name</th><th>Type</th><th>length</th>
  <th>precision</th><th>scale</th><th>default value</th><th>properties</th><th>relation</th></tr>
<%
 for( TrColor= '', i= 1; !Rs.EOF; i++, Rs.MoveNext()){
  if( trColor== trColor1) trColor= trColor2;
  else trColor= trColor1;
%>
  <tr bgcolor=<%=trColor%>>
  <td bgcolor=<%=trColor2%> align=right><b><%=i%></b></td><td>&nbsp;
  <%=Rs( 0)%></td>
  <td align=right>&nbsp;<%=Rs( 1)%></td>
  <td align=right>&nbsp;<%=Rs( 2)%></td>
<%
  if( Rs( 1)== 'numeric'|| Rs( 1)== 'decimal'){
prec= Rs( 3);
scale= Rs( 4);
  } else prec= scale= '&nbsp;';
  colstat= "";
  if( Rs( 7)== 1) colstat+= ", Identity";
  if( Rs( 5)== 1) colstat+= ", Primary Key";
  if( Rs( 6)== 1) colstat+= ", Nullable";
  if( colstat== "")
colstat= "&nbsp;";
  else
colstat= colstat.substring( 2);
  cdefault= Rs( 8);
  if( !isDef( cdefault)) cdefault= "&nbsp;";
  else {
cdefault= ""+ cdefault;
cdefault= cdefault.substring( 1, cdefault.length- 1);
  }
  foreign= Rs( 9);
  if( !isDef( foreign)) foreign= "&nbsp;";
%>
  <td align=right><%=prec%></td><td><%=scale%></td>
  <td><%=cdefault%></td><td><%=colstat%></td><td><%=foreign%></td>
  </tr>
<%
 }
%>
 </table>
<%
}
if( isDef( Tbl)){
 Response.Write( "<font color=white><b>"+ Tbl+ "</b></font></a><br>\n");
 Rs= Conn.Execute( "select count( *) from "+ Tbl);
 RecordCount= Rs( 0);
 Response.Write( "<font color=white>"+ RecordCount+ " Records total</font><br>");
 Rs= Conn.Execute( "select * from "+ Tbl);
 if( !isDef( Row))
  Row= 0;
 if( !Rs.EOF)
  Rs.Move( Row);
%>
<table bgcolor=#9fbfcf border=1 cellpadding=1 cellspacing=0><tr bgcolor=#cfcfcf><th>N/n</th>
<%
 var ColCount= Rs.Fields.Count;
 for( i1= 0; i1< ColCount; i1++)
  Response.Write( "<th>"+ Rs.Fields( i1).Name+ "</th>");
 Response.Write( "</tr>\n");
 Prev= Row- PgSize;
 if( Prev< 0&& Row> 0) Prev= 0;
 for( i= Row+ 1, Cntr= 0;
Cntr< PgSize&& !Rs.EOF;
Rs.MoveNext(), i++, Cntr++
 ){
  if( trColor== trColor1) trColor= trColor2;
  else trColor= trColor1;
%>
  <tr bgcolor=<%=trColor%>>
  <td bgcolor=<%=trColor2%> align=right><b><%=i%></b></td>
<%
  for( i1= 0; i1< ColCount; i1++)
Response.Write( "<td>"+ Rs.Fields( i1).Value+ "</td>");
  Response.Write( "</tr>\n");
 }
 if( Cntr> 0){
  Response.Write( "<tr bgcolor=#cfcfcf><th>N/n</th>");
  for( i1= 0; i1< ColCount; i1++)
Response.Write( "<th>"+ Rs.Fields( i1).Name+ "</th>");
  Response.Write( "</tr>\n");
 }
 Response.Write( "</table>\n<table width='50%' border=0>");
 if( Prev>= 0){
  QS= new String( Request.QueryString);
  Prev= QS.substring( 0, QS.lastIndexOf( "=")+ 1)+ Prev;
  Response.Write( "<td><a href='TbStru.asp?"+ Prev+ "'><font color=white><b>&lt;&lt; Previous</a>&nbsp;&nbsp;&nbsp;</b></font></td>\n");
 }
 if( !Rs.EOF){
  QS= new String( Request.QueryString);
  if( QS.lastIndexOf( "&Row=")+ 1)
Next= QS.substring( 0, QS.lastIndexOf( "=")+ 1)+ ( i- 1);
  else
Next= QS+ "&Row="+ ( i- 1);
  Response.Write( "<td align=right><a href='TbStru.asp?"+ Next+ "'><font color=white><b>Next &gt;&gt;</b></font></a></td>\n");
 }
 Response.Write( "</table>");
}
%>

 
站内搜索