asp資料庫操作類

來源:互聯網
上載者:User
<%
Class QuickDb
Private Conn, ConnStr
Private SqlDatabaseName, SqlPassword, SqlUsername, SqlLocalName, SqlNowString
Public rs
Private Sub Class_Initialize()
        SqlDatabaseName = "db"
        SqlUsername = "sa"
        SqlPassword = "123456"
        SqlLocalName = "a01"
        SqlNowString = "GetDate()"
        OpenDb
End Sub
Private Sub OpenDb()
        On error resume next
    ConnStr = "Provider = Sqloledb; User ID = " & SqlUsername & "; Password = " & Replace(SqlPassword, Chr(0), "") & ";Initial Catalog = " & SqlDatabaseName & "; Data Source = " & SqlLocalName & ";"
    Set Conn = CreateObject("ADODB.Connection")
    Conn.Open ConnStr
    If Err Then
        Err.Clear
        Set Conn = Nothing
                On error goto 0
        Err.Raise 1, "MyClass", "資料庫連接出錯,請檢查串連字串。"
    End If
        Set rs = server.createobject("ADODB.Recordset")
End Sub

Public Sub SetRs(strsql,CursorAndLockType) '執行一個查詢 返回紀錄集
dim c,l
if CursorAndLockType="" then
        CursorAndLockType=13
end if
if CursorAndLockType<9 then
        CursorAndLockType=13
end if
c=left(CursorAndLockType,1)
l=right(CursorAndLockType,1)
rs.Open strsql, Conn, c,l
End Sub

public Sub Execute(sql,OutRs)
        if instr(Ucase(sql),Ucase("select"))>0 then
                Set OutRs = Conn.Execute(sql)
        else
                Call Conn.Execute(sql)
                OutRs=1
        end if
End Sub

Public Sub SelectDb(Table, Where,OutRs)
Dim sqlstr
sqlstr = "Select * from " & Table & " Where " & Where
Call Execute(sqlstr,OutRs)
End Sub

Public Function Delete(Table, Where)
Dim Flag, sqlstr,NullTmp
Flag = False
On Error Resume Next
sqlstr = "delete  from " & Table & " where " & Where
Execute sqlstr,NullTmp
If Err.Number = 0 Then
Flag = True
End If
Delete = Flag
End Function

Public Function Insert(Table, MyFields, Values)
        Dim sql,NullTmp
        Insert = False
        sql = "INSERT INTO Table1(fields) VALUES (values)"
        sql = Replace(sql, "Table1", Table)
        sql = Replace(sql, "fields", MyFields)
        sql = Replace(sql, "values", Values)
        On error Resume next
        Execute sql,NullTmp
        If Err.Number = 0 Then
                Insert = True
        End if
        On error goto 0
End Function

Public Function Update(Table,Field,Value,Where)
        Update=False
        Dim SqlStr
        If SqlInject(Table) or SqlInject(Field) then'因為Value和Where中可能包含',不對他們進行安全校正
                Response.write "參數中含有不安全因素,程式被終止"
                Exit Function
        end if
        SqlStr="Update [Table] Set [Field]=Value Where Where1"
        SqlStr=Replace(SqlStr,"Table",Table)
        SqlStr=Replace(SqlStr,"Field",Field)
        SqlStr=Replace(SqlStr,"Value",Value)
        SqlStr=Replace(SqlStr,"Where1",Where)
        On error resume next
        Dim QDb,TmpRs
        Set QDb=new QuickDb
        Call QDb.Execute(SqlStr,TmpRs)
        if err.number=0 then
                If TmpRs=1 then
                        Update=True
                End if
        end if
        Set QDb=Nothing
        On error goto 0
End Function

Function SqlInject(ByVal SqlStr) 'false 安全 True不安全
    SqlInject = True
    Dim TmpStr, ArrStr, OriginalLen
    TmpStr = "'',',or,not,and,--, ,chr,asc"
    OriginalLen = Len(SqlStr)
    ArrStr = Split(TmpStr, ",")
    TmpStr = UCase(TmpStr)
    For i = 0 To UBound(ArrStr)
    SqlStr = Replace(SqlStr, UCase(ArrStr(i)), "")
    Next
    If Len(SqlStr) = OriginalLen Then
    SqlInject = False
    End If
End Function

Private Sub Class_Terminate()
      If IsObject(Conn) Then
            If Conn.State <> 0 Then
                Conn.Close
                Set Conn = Nothing
           End If
      End If
          
      If IsObject(rs) Then
        If rs.State <> 0 Then
                rs.Close
                Set rs = Nothing
        End If
      End If
End Sub
End Class
%>

Ex.
set Qdb=new QuickDb
Call Qdb.SetRs("Select * from Remark","")
Qdb.Rs.AddNew
Qdb.Rs("ResId")= ResId
Qdb.Rs("UserIp")=Ip
Qdb.Rs("Title")=name
Qdb.Rs("Content")=Content
Qdb.Rs.Update
Qdb.Rs.Close

資料連線在類裡邊修改,這個類裡邊預設的是sql串連
如果需要串連access把字串換下就可以了

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.