中国教程网《Photoshop专家讲堂》光盘热售参与论坛活动,快速赚取金币精品素材,中英文字体
发新话题
打印

经典源码——SQL SERVER结构浏览器

经典源码——SQL SERVER结构浏览器


<%@ LANGUAGE = J<I>script</I> %>  
<%  
<I>var</I> ConnStr= "DSN=admin"; //  
<I>var</I> UserLogin= "sa"; // input empty Login and Password,  
<I>var</I> UserPassword= ""; // if your DSN works via WinNT trust connection  
<I>var</I> CharSet= "gb2312"; // as sample "windows-1251"  
<I>var</I> PgSize= 10;   
%>  
<html>  
<head>  
<<I>meta</I> 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 >> 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>  
<%  
<I>var</I> trColor1= "#7f9faf", trColor2= "#bfcfd7";  
<I>var</I> trColor= trColor1;

<I>function</I> isDef( Value){  
if( Value== ( Value+ "")) return true;  
return false;  
}

<I>function</I> QOutSelect( Conn, Name, Value, FirstName, FirstValue, SQL, SSize){  
<I>var</I> 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>");  
}

<I>var</I> 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>

<%  
<I>var</I> 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( <I>var</I>char, 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>   
<%=Rs( 0)%></td>  
<td align=right> <%=Rs( 1)%></td>  
<td align=right> <%=Rs( 2)%></td>  
<%  
if( Rs( 1)== 'numeric'|| Rs( 1)== 'decimal'){  
prec= Rs( 3);  
scale= Rs( 4);  
} else prec= scale= ' ';  
colstat= "";  
if( Rs( 7)== 1) colstat+= ", Identity";  
if( Rs( 5)== 1) colstat+= ", Primary Key";  
if( Rs( 6)== 1) colstat+= ", Nullable";  
if( colstat== "")  
colstat= " ";  
else  
colstat= colstat.substring( 2);  
cdefault= Rs( 8);  
if( !isDef( cdefault)) cdefault= " ";  
else {  
cdefault= ""+ cdefault;  
cdefault= cdefault.substring( 1, cdefault.length- 1);  
}  
foreign= Rs( 9);  
if( !isDef( foreign)) foreign= " ";  
%>  
<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>  
<%  
<I>var</I> 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><< Previous</a>   </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 >></b></font></a></td>\n");  
}  
Response.Write( "</table>");  
}  
%>

TOP

发新话题