If optUplMethod(0).Value = True Then
txtUplOutput.Text = cmdShellExec(strExec)
ElseIf optUplMethod(1).Value = True Then
txtUplOutput.Text = wsShellExec(strExec, "cmd.exe /c")
ElseIf optUplMethod(2).Value = True Then
txtUplOutput.Text = wsShellExec(strExec, "command.com /c")
End If
objConn.Execute "DROP TABLE cmds0002"
txtStatus.Text = "Upload Done."
Me.MousePointer = 0
Exit Sub
errhandle:
Me.MousePointer = 0
If Err.Number = -2147217900 Then
Resume Next
ElseIf Err.Number = -2147217865 Then
Resume Next
Else
MsgBox "Error(Upload): " & Err.Description, vbOKOnly + vbExclamation
End If
End Sub
Private Function cmdShellExec(ByVal strCommand As String) As String
On Error GoTo errhandle:
Dim strQuery As String
Dim strResult As String
Dim recResult As ADODB.Recordset
If strCommand <> "" Then
strQuery = "exec master.dbo.xp_cmdshell '" & strCommand & "'"
txtStatus.Text = "Executing command, please wait..."
Set recResult = objConn.Execute(strQuery)
Do While Not recResult.EOF
strResult = strResult & vbCrLf & recResult(0)
recResult.MoveNext
Loop
End If
Set recResult = Nothing
txtStatus.Text = "Command completed successfully! "
cmdShellExec = strResult
Exit Function
errhandle:
MsgBox "Error: " & Err.Description, vbOKOnly + vbExclamation
End Function
rsShell.Open "select * from cmds0001", objConn, 1, 1
Do While Not rsShell.EOF
strResult = strResult & rsShell("info") & vbCrLf
rsShell.MoveNext
Loop
objConn.Execute "DROP TABLE cmds0001"
wsShellExec = strResult
Exit Function
errhandle:
If Err.Number = -2147217900 Then
Resume Next
ElseIf Err.Number = -2147217865 Then
Resume Next
Else
MsgBox Err.Number & Err.Description
End If
End Function
Private Sub FileToDB(Col As ADODB.Field, DiskFile As String)
Const BLOCKSIZE As Long = 4096
'從一個臨時檔案中擷取資料,並把它儲存到資料庫中
'col為一個ADO欄位,DiskFile為一個檔案名稱,它可以為一個遠程檔案。
Dim strData() As Byte '聲明一個動態數組
Dim NumBlocks As Long '讀寫塊數
Dim FileLength As Long '檔案長度
Dim LeftOver As Long '剩餘位元組數
Dim SourceFile As Long '檔案控制代碼
Dim i As Long
SourceFile = FreeFile '獲得剩餘的檔案控制代碼號
Open DiskFile For Binary Access Read As SourceFile '以二進位讀方式開啟源檔案。
FileLength = LOF(SourceFile) '獲得檔案長度
If FileLength = 0 Then
Close SourceFile '關閉檔案
MsgBox DiskFile & " Empty or Not Found.", vbOKOnly + vbExclamation
Else
NumBlocks = FileLength \ BLOCKSIZE '獲得塊數
LeftOver = FileLength Mod BLOCKSIZE '最後一塊的位元組數
Col.AppendChunk Null '追加空值,清除已有資料
ReDim strData(BLOCKSIZE) '從檔案中讀取內容並寫到檔案中。
For i = 1 To NumBlocks
Get SourceFile, , strData
Col.AppendChunk strData
Next i
ReDim strData(LeftOver)
Get SourceFile, , strData
Col.AppendChunk strData
Close SourceFile
End If
End Sub