프로그램의 기능에는 실제로 초기 데이터베이스 연결과 같은 일부 기능을 직접 추가할 수 있으며
INIT()<%를
통해 다양한 유형의 데이터베이스를 선택할
수 있습니다.
'오류 발생 시 다음 재개
클래스콘엑스
공개ConnEx
public DBpath '---------데이터베이스 경로
public DBtype '---------데이터베이스 유형 1(접속) 2(SqlServer) 3(확장 가능)
public ConnMethod '---------연결 방법(DSN, 비DSN)
공개 사용자
공공 패스
하위 클래스_초기화
End Sub
Sub Init()
ConnStr = "드라이버={Microsoft Access Driver(*.mdb)};dbq="&Server.MapPath("Date.mdb")
ConnEx = Server.Createobject("ADODB.CONNECTION") 설정
ConnEx.Open ConnStr
CatchError("Class_Terminate")
End Sub
Sub CatchError(Str)
오류가 발생한 경우
Err.Clear
클래스_종료()
Response.Write("오류가 발생하여 프로그램이 종료됩니다! "&Str&"에서"")
응답.끝()
종료 조건
끝 하위
'********************************************
'*SQL 문을 통해 레코드 존재를 검색하면 오류가 발생하기 쉽습니다'********************************** ** ******
함수 HasRecordBySql(Sql)
CheckSql(Sql,"R") 호출
희미한 Rs,HasR
Rs = ConnEx.Execute(Sql) 설정
CatchError("HasReordSql")
그렇지 않은 경우(Rs.eof 또는 Rs.bof)
HasR=거짓
또 다른
HasR=참
종료 조건
Rs.Close
Rs = 없음으로 설정
HasRecordBySql = HasR
종료 기능
'********************************************
'*ID로 레코드 존재 여부 확인'**********************************
Function HasRecordById(StrTableName, IntID )
'체크값(IntID, 1)
희미한 Rs,HasR
Sql = ""&StrTableName&"에서 상위 1 * 선택 여기서 Id = "&IntID
CheckSql(Sql,"R") 호출
Rs = ConnEx.Execute(Sql) 설정
CatchError("HasRecordByID")
그렇지 않은 경우(Rs.eof 또는 Rs.bof)
HasR=거짓
또 다른
HasR=참
종료 조건
Rs.close
Rs = 없음으로 설정
HasRecordById = HasR
종료 기능
'************************************************
'*SQL 문을 통해 설정된 레코드를 가져옵니다'**************************************** ** *****
함수 GetRsBySql(Sql)
CheckSql(Sql,"R") 호출
희미한 Rs
Rs = Server.CreateObject("Adodb.RecordSet") 설정
RS.Open SQL, ConnEx, 1,1
GetRsBySql = Rs로 설정
기능 종료
'************************************************ *
'*특정 필드의 값 가져오기'**************************************** ** ****
함수 GetValueBySql(Sql)
CheckSql(Sql,"R") 호출
희미한 Rs, 반환 값
Rs = ConnEx.Execute(Sql) 설정
CatchError("GetValueBySql")
그렇지 않은 경우( Rs.Eof 또는 Rs.Bof ) 그러면
반환값 = Rs(0)
또 다른
ReturnValue = "기록 없음"
종료 조건
Rs.Close
Rs = 없음으로 설정
GetValueBySql = 반환값
함수 종료
'============================업데이트,삽입================ ====
'************************************************ ***
'*SQL을 사용하여 데이터 수정'****************************************** **
함수 UpdateBySql(Sql)
CheckSql(Sql,"w") 호출
ConnEx.Execute(Sql)
CatchError("UpdateBySql")
UpdateBySql = 참
기능 종료
'************************************************ *
'*SQL 문을 사용하여 데이터 삽입'****************************************** **
함수 InsertBySql(Sql)
CheckSql(Sql,"w") 호출
ConnEx.Execute(Sql)
CatchError("InsertBySql")
InsertBySql = 참
함수 종료
'======================삭제=======================
'* ** *****************************************
'*SQL문으로 삭제'******************************************* ***** *
함수 삭제BySql(Sql)
CheckSql(Sql,"D") 호출
ConnEx.Execute(Sql)
CatchError("DeleteBySql")
삭제BySql = 참
기능 종료
'************************************************ *
'*SQL 문 권한을 확인하고 플래그에 따라 해당 문이 소유한 권한을 감지합니다'****************************** **** *************
하위 CheckSql(Sql, 플래그)
Dim StrSql,SinCounts,DouCounts,i
StrSql = Lcase(Sql)
죄수 = 0
두카운트 = 0
i = 1 ~ Len(StrSql)의 경우
Mid(StrSql,i,1) = "'"이면 SinCounts = SinCounts + 1
Mid(StrSql,i,1) = """"이면 DouConnts = DouCounts + 1
다음
If (SinCounts Mod 2) <> 0 Or (DouCounts Mod 2) <> 0 Or Instr(StrSql,";") > 0 Then
Class_Terminate() 호출
Response.Write("SQL 구문 오류입니다!")
응답.끝()
종료 조건
케이스 플래그 선택
사례 "R","r":
Instr(StrSql,"delete") > 0 또는 Instr(StrSql,"update") 또는 Instr(StrSql,"drop") > 0 또는 Instr(StrSql,"insert") > 0 그러면
클래스_종료()
Response.Write("권한이 부족합니다. 쓰기 작업을 수행할 권한이 없습니다.")
응답.끝()
종료 조건
케이스 "W","w":
Instr(StrSql,"delete") > 0 또는 Instr(StrSql,"drop") > 0 또는 Instr(StrSql,"select") > 0 그러면
클래스_종료()
Response.Write("권한이 부족합니다. 삭제 작업을 수행할 권한이 없습니다.")
응답.끝()
종료 조건
사례 "D","d":
그 밖의 경우:
Response.Write("함수 CheckSql 플래그 오류입니다!")
선택 종료
End Sub
Sub Class_Terminate
IsEmpty(FriendConn)가 아닌 경우
FriendConn.닫기
FriendConn = 없음 설정
오류 잡기()
종료 조건
서브 끝
수업 종료
%>