作者:tonny 转载请显示出处:http://www.weiw.com
数据库结构操作。适应于access,sql server等常见的数据库。
1。建立连接。 可以通过ODBC或OLEDB连接。 Set gObjDC = Server.CreateObject("ADODB.Connection") dim strconn,myDSN myDSN="test" strconn="DSN="&myDSN&";uid=sa;pwd=" 'strconn ="Provider=SQLOLEDB.1;Persist Security Info=True;User ID=sa;Initial Catalog=MeiSha;Data Source=tonny" gObjDC.ConnectionString=strconn gObjDC.Open
2。显示所有表 set gObjRS = gObjDC.OpenSchema(adSchemaTables) Do While Not gObjRS.EOF If gObjRS.Fields("TABLE_TYPE") = "TABLE" AND Left(gObjRS.Fields("TABLE_NAME"), 4) <> "MSys" Then '不必把系统表显示出来 Response.Write "<TR>" Response.Write "<TD>" & gObjRS.Fields("TABLE_NAME") & "</TD>" myPLink = "?DSN_NAME=" & myDSN & "&Table_Name=" & gObjRS.Fields("TABLE_NAME") Response.Write "<TD> <A HREF=tablestruct.asp" & myPLink & ">Structure</A> </TD>" Response.Write "<TD> <A HREF=tablecontent.asp" & myPLink & ">Content</A> </TD>" Response.Write "</TR>" & vbCrLf End If gObjRS.MoveNext Loop gObjRS.Close
3。新建表 <FORM METHOD=POST ACTION="definetable.asp?DSN_Name=<% =myDSN %>"> Table Name :<BR> <INPUT TYPE="text" NAME="Table_Name"><BR> Field Count :<BR> <INPUT TYPE="text" NAME="Field_Count"><BR> <BR> <INPUT TYPE="submit" VALUE="Create"> </FORM>
definetable.asp中主要源码 myFieldCount = Request.Form("Field_Count") <FORM METHOD=POST ACTION="createtable.asp?DSN_Name=<% =Request.Form("DSN_Name") %>&Table_Name=<% =Request.Form("Table_Name") %>&Field_Count=<%=myFieldCount %>" ID="Form1"> <TABLE ID="Table2"> <TR> <TD>Name</TD> <TD>Type</TD> <TD>Length</TD> <TD>Null</TD> <TD>Primary Key</TD> <TD>Unique Index</TD> </TR> <% For i=1 to myFieldCount%> <TR> <TD><INPUT TYPE="text" NAME=<% ="FieldName_" & i %> ></TD> <TD><SELECT SIZE=1 NAME=<% ="FieldType_" & i %> > <!-请注意:此处根据不同数据库填写字段类型-> <OPTION>BINARY <OPTION>BIT <OPTION>BYTE <OPTION>COUNTER <OPTION>CURRENCY <OPTION>DATETIME <OPTION>SINGLE <OPTION>DOUBLE <OPTION>SHORT <OPTION>LONG <OPTION>LONGTEXT <OPTION>LONGBINARY <OPTION>TEXT </SELECT> </TD> <TD><INPUT TYPE="text" SIZE=5 NAME=<% ="FieldLength_" & i %> ID="Text2"></TD> <TD> <SELECT SIZE=1 NAME=<% ="FieldNull_" & i %> ID="Select2"> <OPTION>not null <OPTION>null </SELECT> </TD> <TD><INPUT TYPE="checkbox" NAME=<% ="FieldPrimary_" & i %> ID="Checkbox1"></TD> <TD><INPUT TYPE="checkbox" NAME=<% ="FieldUnique_" & i %> ID="Checkbox2"></TD> </TR> <%Next%> </TABLE> <INPUT TYPE="reset" VALUE="Clear" ID="Reset1" NAME="Reset1"> <INPUT TYPE="submit" VALUE="Create" ID="Submit1" NAME="Submit1"> </FORM>
createtable.asp中主要源码 myPrimary = "" mySQLQueryString = "CREATE TABLE " & myTable &" (" myFieldCount = CInt(Request.QueryString("Field_Count")) For i = 1 to myFieldCount myFieldName = Request.Form("FieldName_"&i) mySQLQueryString = mySQLQueryString & Chr(34) & _ myFieldName & Chr(34) & " " &_ Request.Form("FieldType_"&i) myLength = Request.Form("FieldLength_"&i) If isNumeric(myLength) Then mySQLQueryString = mySQLQueryString & " (" & myLength & ") " End If mySQLQueryString = mySQLQueryString & " " & Request.Form("FieldNull_"&i) If Request.Form("FieldUnique_"&i) <> "" Then mySQLQueryString = mySQLQueryString & " CONSTRAINT pk" & myFieldName & " UNIQUE" End If mySQLQueryString = mySQLQueryString & ", " If Request.Form("FieldPrimary_"&i) <> "" Then myPrimary = myPrimary & Chr(34) & myFieldName & Chr(34) & ", " End If Next mySQLQueryString = Left(mySQLQueryString, Len(mySQLQueryString)-2) If myPrimary <> "" Then myPrimary = Left(myPrimary, Len(myPrimary)-2) mySQLQueryString = mySQLQueryString & ", " & "CONSTRAINT Contraint PRIMARY KEY(" & myPrimary & ")" End If mySQLQueryString = mySQLQueryString & ");" 'Response.Write mySQLQueryString gObjDC.execute mySQLQueryString
4。显示表结构 set gObjRS = Server.CreateObject("ADODB.Recordset") gObjRS.Open "[" & myTable & "]", gObjDC, adOpenForwardOnly, adLockReadOnly For i = 0 to gObjRS.Fields.Count - 1 Response.Write "<TR>" & vbCrlf Response.Write "<TD>" & gObjRS.Fields(i).Name & "</TD>" & vbCrlf myType = GetType(gObjRS.Fields(i).Type) Response.Write "<TD>" & myType & "</TD>"& vbCrlf myLength = " " If myType <> "LONGTEXT" AND myType <> "LONGBINARY" Then myLength = gObjRS.Fields(i).DefinedSize End If Response.Write "<TD>" & myLength & "</TD>"& vbCrlf Response.Write "<TD>"& vbCrlf myLink = "dropfield1.asp?DSN_Name=" & myDSN & "&Table_Name=" & myTable & "&Field_Name=" & gObjRS.Fields(i).Name Response.Write "<A HREF='" & myLink & "'><B> Drop " & gObjRS.Fields(i).Name & " field</B></A>" Response.Write "</TD>"& vbCrlf Response.Write "</TR>"& vbCrlf Next gObjRS.Close
Function GetType(pConstant) Select Case pConstant Case adBinary ’128 GetType = "BINARY" Case adBoolean ‘11 GetType = "BOOLEAN" Case adUnsignedTinyInt ’17 GetType = "BYTE" Case adInteger ‘3 GetType = "LONG" Case adCurrency ’6 GetType = "CURRENCY" Case adDBTimeStamp ‘135 GetType = "DATETIME" Case adSingle ’4 GetType = "SINGLE" Case adDouble ‘5 GetType = "DOUBLE" Case adSmallInt ’2 GetType = "SHORT" Case adLongVarChar ‘201 GetType = "LONGTEXT" Case adLongVarBinary ’205 GetType = "LONGBINARY" Case adVarChar ‘200 GetType = "TEXT" Case Else GetType = "UNKNOW(" & pConstant & ")" End Select End Function
5。添加一字段 mySQLQueryString = "ALTER TABLE " & myTable & " ADD COLUMN " & Request.Form("FieldName") & " " mySQLQueryString = mySQLQueryString & Request.Form("FieldType") & " " myLength = Request.Form("FieldLength") If isNumeric(myLength) Then mySQLQueryString = mySQLQueryString & "(" & myLength & ") " End If mySQLQueryString = mySQLQueryString & Request.Form("FieldNull") & " " If Request.Form("FieldUnique") <> "" Then mySQLQueryString = mySQLQueryString & " CONSTRAINT pk" & myFieldName & " UNIQUE" End If gObjDC.execute mySQLQueryString
6。删除一字段 mySQLQueryString = "ALTER TABLE " & myTable & " DROP COLUMN " & Request.QueryString("Field_Name") & ";" gObjDC.execute mySQLQueryString
7。删除一表 mySQLQueryString = "DROP TABLE " & myTable gObjDC.execute mySQLQueryString
附:'---- DataTypeEnum Values ---- Const adEmpty = 0 Const adTinyInt = 16 Const adSmallInt = 2 Const adInteger = 3 Const adBigInt = 20 Const adUnsignedTinyInt = 17 Const adUnsignedSmallInt = 18 Const adUnsignedInt = 19 Const adUnsignedBigInt = 21 Const adSingle = 4 Const adDouble = 5 Const adCurrency = 6 Const adDecimal = 14 Const adNumeric = 131 Const adBoolean = 11 Const adError = 10 Const adUserDefined = 132 Const adVariant = 12 Const adIDispatch = 9 Const adIUnknown = 13 Const adGUID = 72 Const adDate = 7 Const adDBDate = 133 Const adDBTime = 134 Const adDBTimeStamp = 135 Const adBSTR = 8 Const adChar = 129 Const adVarChar = 200 Const adLongVarChar = 201 Const adWChar = 130 Const adVarWChar = 202 Const adLongVarWChar = 203 Const adBinary = 128 Const adVarBinary = 204 Const adLongVarBinary = 205 Const adChapter = 136 Const adFileTime = 64 Const adDBFileTime = 137 Const adPropVariant = 138 Const adVarNumeric = 139
|