Public Const BUFFERSIZE = 255
Public Const INTERNET_FLAG_PASSIVE = &H8000000
Public Const FTP_TRANSFER_TYPE_BINARY = &H2
Public Const FTP_TRANSFER_TYPE_ASCII = &H1
Public Const GENERIC_READ = &H80000000
Public Const GENERIC_WRITE = &H40000000
Public Const INTERNET_OPEN_TYPE_PRECONFIG = 0
Public Declare Function InternetConnect Lib "wininet.dll" Alias "InternetConnectA" (ByVal hInternetSession As Long, ByVal sServerName As String, ByVal nServerPort As Integer, ByVal sUsername As String, ByVal sPassword As String, ByVal lService As Long, ByVal lFlags As Long, ByVal lContext As Long) As Long
Public Declare Function InternetOpen Lib "wininet.dll" Alias "InternetOpenA" (ByVal sAgent As String, ByVal lAccessType As Long, ByVal sProxyName As String, ByVal sProxyBypass As String, ByVal lFlags As Long) As Long
Public Declare Function InternetCloseHandle Lib "wininet.dll" (ByVal hInet As Long) As Long
Public Declare Function FtpSetCurrentDirectory Lib "wininet.dll" Alias "FtpSetCurrentDirectoryA" (ByVal hFtpSession As Long, ByVal lpszDirectory As String) As Boolean
Public Declare Function FtpOpenFile Lib "wininet.dll" Alias "FtpOpenFileA" (ByVal hFtpSession As Long, ByVal sBuff As String, ByVal Access As Long, ByVal Flags As Long, ByVal Context As Long) As Long
Public Declare Function InternetReadFile Lib "wininet.dll" (ByVal hFile As Long, ByRef sBuffer As Byte, ByVal lNumBytesToRead As Long, dwNumberOfBytesRead As Long) As Integer
Public Declare Function InternetWriteFile Lib "wininet.dll" (ByVal hFile As Long, ByRef sBuffer As Byte, ByVal lNumBytesToWrite As Long, dwNumberOfBytesWritten As Long) As Integer
Public hOpen As Long
Public hConnection As Long
Public hFile As Long
Public dwType As Long
Public dwSeman As Long
' FTP서버 접속
Public Function FtpOpen(strIP As String, strPort As String, strUser As String, strPassword As String) As Boolean
'기존에 이미 접속되어 있으면 기존 접속 종료
If hConnection <> 0 Then InternetCloseHandle hConnection
If (InternetWriteFile(hFile, Data(0), BUFFERSIZE, Written) = 0) Then Exit Function
DoEvents
Sum = Sum + BUFFERSIZE
objTarget.PBar.Value = Sum
DoEvents
Next
Get #1, , Data
If (InternetWriteFile(hFile, Data(0), lonSize Mod BUFFERSIZE, Written) = 0) Then Exit Function
Sum = Sum + (lonSize Mod BUFFERSIZE)
lonSize = Sum
Close #1
InternetCloseHandle (hFile)
FTPUpload = True
End If
End Function
4. 접속 종료
'FTP접속종료
Public Sub FtpClose()
If hConnection <> 0 Then InternetCloseHandle hConnection
hConnection = 0
End Sub
5. 기능 사용예
If FtpOpen(FTP 접속 IP, FTP 접속 Port, FTP 접속 사용자 이름, FTP 접속 비밀번호) = False Then
MsgBox "FTP 서버접속 실패!", vbCritical, "확인"
Exit Sub
End If
If FTPUpload(업로드할 로컬 파일, 원격 서버 파일, ProgrssBar를 가지고 있는 폼 객체) = False Then
MsgBox "FTP 서버전송 실패!", vbCritical, "확인"
End If
Call FtpClose
MsgBox "전송 완료"
Unload frmProgress
※ 테스트시 유의할점
테스트를 위해서 기본 폼 외에 ProgressBar를 가지고 있는 폼을 따로 생성해두어야 합니다.
따로 폼 생성을 하기 싫으면 함수 모듈 중 FTPUoload 함수 마지막 인자를 없애고
FTPUpload 함수 내 objTarget 객체를 삭제를 하여 사용을 하시기 바랍니다.
With objDS.Tables("code")
For intCount = 0 To .Rows.Count - 1
cbRelate.Items.Add(.Rows(intCount).Item("c_code").ToString & " : " & .Rows(intCount).Item("c_value").ToString)
Next
End With
Call DB_DISCONNECT()
Else
MessageBox.Show("DB 연결을 확인하십시오!", "ERROR", MessageBoxButtons.OK, MessageBoxIcon.Error)
End If
Catch ex As Exception
MessageBox.Show(ex.Message, "ERROR", MessageBoxButtons.OK, MessageBoxIcon.Error)
- "Provider=PostgreSQL OLE DB Provider;Data Source=DB서버 주소;location=DB명;User ID=아이디;password=비밀번호"
2. DB 연결 함수
Private gOleDBConn As OleDb.OleDbConnection
Public objDA As OleDb.OleDbDataAdapter = New OleDb.OleDbDataAdapter()
Public objDS As DataSet = New DataSet()
Public strCmd As OleDb.OleDbCommand = New OleDb.OleDbCommand()
Public Function DB_CONNECT() As Boolean
Dim strConn As String = "Provider=PostgreSQL OLE DB Provider;Data Source=DB서버 주소;location=DB명;User ID=아이디;password=비밀번호"
Try
If gOleDBConn Is Nothing Then
gOleDBConn = New OleDb.OleDbConnection(strConn)
gOleDBConn.Open()
Else
If gOleDBConn.State = ConnectionState.Open Then
ElseIf gOleDBConn.State = ConnectionState.Closed Then
gOleDBConn = New OleDb.OleDbConnection(strConn)
gOleDBConn.Open()
End If
End If
Catch ex As Exception
Console.WriteLine(ex.Message)
If gOleDBConn.State = ConnectionState.Closed Then
DB_CONNECT = False
MsgBox("데이터베이스 접속 실패!", MsgBoxStyle.Critical, "Error")
Else
DB_CONNECT = True
End If
End Try
DB_CONNECT = True
End Function
3. DB 연결 해제 함수
Public Function DB_DISCONNECT() As Boolean
Try
If gOleDBConn.State = ConnectionState.Open Then
objDA.Dispose()
objDS.Dispose()
strCmd.Dispose()
gOleDBConn.Close()
ElseIf gOleDBConn.State = ConnectionState.Closed Then
MsgBox("데이터 베이스가 이미 연결 해제 상태입니다!", MsgBoxStyle.Critical, "Error")
End If
Catch ex As Exception
Console.WriteLine(ex.Message)
If gOleDBConn.State = ConnectionState.Open Then
objDA.Dispose()
objDS.Dispose()
strCmd.Dispose()
gOleDBConn.Close()
End If
End Try
If intCount = -1 Then
MessageBox.Show("데이터 입력 성공", "SUCCESS", MessageBoxButtons.OK, MessageBoxIcon.Information)
Else
MessageBox.Show("데이터 입력 실패!", "ERROR", MessageBoxButtons.OK, MessageBoxIcon.Error)
End If
Call DB_DISCONNECT()
Else
MessageBox.Show("DB 연결을 확인하십시오!", "ERROR", MessageBoxButtons.OK, MessageBoxIcon.Error)
End If
Catch ex As Exception
MessageBox.Show(ex.Message, "ERROR", MessageBoxButtons.OK, MessageBoxIcon.Error)
Recent Comments