Files
sms_host20170829/common/lib/dbclass.asp
T
2026-02-23 10:01:00 +09:00

460 lines
9.8 KiB
Plaintext

<!--METADATA TYPE= "typelib" NAME= "ADODB Type Library" FILE="C:\Program Files\Common Files\SYSTEM\ADO\msado15.dll" -->
<%
Function getConnectString()
Dim strConnect
strConnect = "Provider=SQLOLEDB.1;Data Source="&Application("url")&";Initial catalog="&Application("DB")&";user ID="&Application("DB_id")&";Password="&Application("DB_pwd")
'strConnect = "Provider=OraOLEDB.Oracle;Data Source="&Application("url")&";User Id="&Application("DB_id")&";Password="&Application("DB_pwd")
getConnectString = strConnect
End function
'select
class SelectTable
public connectString
Private dbcon
Private rs
'클래스 초기화
Private Sub Class_Initialize
connectString = getConnectString()
Set dbcon = Server.CreateObject("ADODB.Connection")
End Sub
'select 쿼리(단일필드)
Public function selectQueryColumn( sql )
Dim ret_value : ret_value = null
selectQuery( sql )
If Not( rs.bof Or rs.eof ) Then
ret_value = rs(0)
If isnull(ret_value) Then ret_value = ""
ret_value = CStr( ret_value )
End if
dbClose()
selectQueryColumn = ret_value
End function
'select 쿼리(단일행,배열)
Public function selectQueryRecord( sql )
Dim ret_value : Set ret_value = Server.CreateObject("Scripting.Dictionary")
selectQuery( sql )
If Not( rs.bof Or rs.eof ) Then
For each k in rs.Fields
value = k.value
If isnull(value) Then value = ""
value = CStr( value )
ret_value(LCase(k.name)) = value
Next
End If
dbClose()
Set selectQueryRecord = ret_value
Set ret_value = nothing
End Function
'select 쿼리(2차원배열)
Public function selectQueryTable( sql )
Dim ret_value(), ret_null, i
selectQuery( sql )
If rs.bof Or rs.eof Then
selectQueryTable = null
else
redim ret_value(rs.recordcount-1)
i = 0
Do until rs.eof
Set ret_value(i) = Server.CreateObject("Scripting.Dictionary")
For each k in rs.Fields
value = k.value
If isnull(value) Then value = ""
value = CStr( value )
ret_value(i)( LCase(k.name) ) = value
Next
rs.movenext
i = i + 1
Loop
selectQueryTable = ret_value
End If
dbClose()
End function
Public sub arr2Value( rs )
For each item in rs
execute(item & " = rs(""" & item & """)")
next
End sub
Private sub selectQuery( sql )
dbcon.Open connectString
Set Rs = Server.CreateObject("ADODB.RecordSet")
rs.open sql, dbcon, 3
End sub
Private sub dbClose()
rs.close()
Set rs = Nothing
dbcon.close
End sub
' 클래스 종료
Private Sub Class_Terminate
Set dbcon = Nothing
End Sub
end Class
'insert
class InsertTable
public connectString
public tableName
Private dbcon
'db에 저장할 데이타 저장 리스트
private insertValues
private addValues
'클래스 초기화
Private Sub Class_Initialize
tableName = ""
Set insertValues = Server.CreateObject("Scripting.Dictionary")
Set addValues = Server.CreateObject("Scripting.Dictionary")
connectString = getConnectString()
Set dbcon = Server.CreateObject("ADODB.Connection")
End Sub
'세팅된 insertValues로 insert 쿼리 생성 실행
Public function execute()
Dim sql, i_fields, i_values, i
If tableName = "" then
respons.wirte "tableName is none."
Response.end
End if
sql = "insert into " & tableName & "("
i_fields = ""
If addValues.count > 0 Then
i = 0
For each k in addValues
If i > 0 Then i_fields = i_fields & ","
i_fields = i_fields & k
i = i + 1
next
End If
For each k in insertValues
If i_fields <> "" Then i_fields = i_fields & ","
i_fields = i_fields & k
next
sql = sql & i_fields & ") values("
i_values = ""
If addValues.count > 0 Then
i = 0
For each v in addValues
If i > 0 Then i_values = i_values & ","
i_values = i_values & addValues(v)
i = i + 1
next
End If
For each v in insertValues
If i_values <> "" Then i_values = i_values & ","
i_values = i_values & "'" & insertValues(v) & "'"
next
sql = sql & i_values & ")"
insertQuery(sql)
'연관배열 초기화
insertValues.removeall
addValues.removeall
execute = sql
End function
'insert 쿼리 직접받아서 실행
private sub insertQuery(sql)
dbcon.Open connectString
dbcon.execute sql
dbcon.close()
End sub
'연관배열 추가
sub setValues(keyname, value)
insertValues( keyname ) = value
End sub
'연관배열 추가
sub setAddValues(keyname, value)
addValues(keyname) = value
End sub
'필드명으로 연관배열 추가
sub setFieldsValues( str_fileds )
Dim str_fileds_arr, z
str_fileds = replace(str_fileds, " ", "")
str_fileds_arr = split(str_fileds, ",")
For z=0 To ubound( str_fileds_arr )
Call setValues(str_fileds_arr(z), eval(str_fileds_arr(z)))
next
End sub
' 클래스 종료
Private Sub Class_Terminate
Set dbcon = nothing
Set insertValues = Nothing
Set addValues = nothing
End Sub
end Class
'update
class UpdateTable
public connectString
public tableName
public whereQuery
Private dbcon
'db에 저장할 데이타 저장 리스트
private updateValues
private addValues
'클래스 초기화
Private Sub Class_Initialize
tableName = ""
whereQuery = ""
Set updateValues = Server.CreateObject("Scripting.Dictionary")
Set addValues = Server.CreateObject("Scripting.Dictionary")
connectString = getConnectString()
Set dbcon = Server.CreateObject("ADODB.Connection")
End Sub
'세팅된 updateValues로 insert 쿼리 생성 실행
Public function execute()
Dim sql, u_values, i
If tableName = "" then
respons.wirte "tableName is none."
Response.end
End if
sql = "update " & tableName & " set "
u_values = ""
If addValues.count > 0 Then
i = 0
For each k in addValues
If i > 0 Then u_values = u_values & ","
u_values = u_values & k & "=" & addValues(k)
i = i + 1
next
End If
If updateValues.count > 0 Then
i = 0
For each k in updateValues
If u_values <> "" Then u_values = u_values & ","
u_values = u_values & k & "= '" & updateValues(k) & "'"
i = i + 1
next
End If
sql = sql & u_values & " " & whereQuery
updateQuery( sql )
'연관배열 초기화
updateValues.removeall
addValues.removeall
execute = sql
End function
'update 쿼리 직접받아서 실행
private sub updateQuery(sql)
dbcon.Open connectString
dbcon.execute sql
dbcon.close()
End sub
'연관배열 추가
sub setValues(keyname, value)
updateValues( keyname ) = value
End sub
'연관배열 추가
sub setAddValues(keyname, value)
addValues(keyname) = value
End sub
'필드명으로 연관배열 추가
sub setFieldsValues( str_fileds )
Dim str_fileds_arr, z
str_fileds = replace(str_fileds, " ", "")
str_fileds_arr = split(str_fileds, ",")
For z=0 To ubound( str_fileds_arr )
Call setValues(str_fileds_arr(z), eval(str_fileds_arr(z)))
next
End sub
' 클래스 종료
Private Sub Class_Terminate
Set dbcon = nothing
Set updateValues = Nothing
Set addValues = nothing
End Sub
end Class
class UpdateClob
public connectString
public tableName
public whereQuery
public field
public value
Private dbcon
'db에 저장할 데이타 저장 리스트
private updateValues
'클래스 초기화
Private Sub Class_Initialize
tableName = ""
whereQuery = ""
Set updateValues = Server.CreateObject("Scripting.Dictionary")
connectString = getConnectString()
Set dbcon = Server.CreateObject("ADODB.Connection")
End Sub
'세팅된 updateValues로 insert 쿼리 생성 실행
Public function execute()
Dim sql, u_values, i, ocmd
If tableName = "" then
respons.wirte "tableName is none."
Response.end
End if
sql = "update " & tableName & " set "
u_values = ""
If updateValues.count > 0 Then
i = 0
For each k in updateValues
If u_values <> "" Then u_values = u_values & ","
u_values = u_values & k & "= empty_clob()"
i = i + 1
next
End If
If field <> "" And value <> "" Then
If u_values <> "" Then u_values = u_values & ","
u_values = u_values & field & " = empty_clob() "
End if
sql = sql & u_values & " " & whereQuery
updateQuery( sql )
sql = "UPDATE " & tableName & " SET "
u_values = ""
If updateValues.count > 0 Then
i = 0
For each k in updateValues
If u_values <> "" Then u_values = u_values & ","
u_values = u_values & k & "= ?"
i = i + 1
next
End If
If field <> "" And value <> "" Then
If u_values <> "" Then u_values = u_values & ","
u_values = u_values & field & " = ?"
End if
sql = sql & u_values & " " & whereQuery
set ocmd = Server.CreateObject("ADODB.Command")
With ocmd
.ActiveConnection = connectString
.CommandType = adCmdText
.CommandText = sql
For each k in updateValues
.Parameters.Append .CreateParameter("@"&field, adLongVarWChar, adParamInput, 40000, updateValues(k))
Next
If field <> "" And value <> "" Then
.Parameters.Append .CreateParameter("@"&field, adLongVarWChar, adParamInput, 40000, value)
End if
.Execute
End With
Set ocmd = nothing
'연관배열 초기화
updateValues.removeall
execute = sql
End function
'update 쿼리 직접받아서 실행
private sub updateQuery(sql)
dbcon.Open connectString
dbcon.execute sql
dbcon.close()
End sub
'연관배열 추가
sub setValues(keyname, value)
updateValues( keyname ) = value
End sub
'필드명으로 연관배열 추가
sub setFieldsValues( str_fileds )
Dim str_fileds_arr, z
str_fileds = replace(str_fileds, " ", "")
str_fileds_arr = split(str_fileds, ",")
For z=0 To ubound( str_fileds_arr )
Call setValues(str_fileds_arr(z), eval(str_fileds_arr(z)))
next
End sub
' 클래스 종료
Private Sub Class_Terminate
Set dbcon = nothing
Set updateValues = Nothing
End Sub
end Class
Sub executeQuery( sql )
Dim dbcon
Set dbcon = Server.CreateObject("ADODB.Connection")
dbcon.Open getConnectString()
dbcon.execute sql
dbcon.close
Set dbcon = nothing
End sub
%>