Imports System.IO Imports System.Text Imports System.Xml Imports DevModeFirmwareInfo.UTSModule Imports FlexCell Imports MySql.Data.MySqlClient Public Class Form1 Public DbConnString As String = "Server=blv-cloud-db.mysql.rds.aliyuncs.com;Port=3307;Database=blv_rcu_db;Uid=blv_rcu;Pwd=fnadiaJDIJ7546;charset=utf8;" '固件量 Public GFirmwareli As Dictionary(Of String, String) '主机数量 Public GHostli As Dictionary(Of String, String) '设备数量 Public GDevli As Dictionary(Of String, String) Public FtpHost As String = "blv-oa.com" Public FtpPort As Integer = 50 Public FtpUser As String = "BLV_Studio" Public FtpPwd As String = "37f5675t6R&5*" Private Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click Dim xmlFilePath As String = SelectXmlFile() If String.IsNullOrEmpty(xmlFilePath) Then Return End If Dim strValue As String = XmlFieldExistsf(xmlFilePath, "DEV_NAME") If strValue.Trim.ToLower.Equals("blv_c12") Then ToolStripLabel2.Text = xmlFilePath.Substring(xmlFilePath.LastIndexOf("\") + 1) ToolStripLabel2.Tag = 1 ToolStripLabel1.Tag = xmlFilePath Dim Hostli = New Dictionary(Of String, String)() Dim intValue As Integer = XmlFieldExists(xmlFilePath, "DEV_DATA_MODEL_VER") Hostli.Add(ToolStripLabel2.Text, intValue.ToString()) LoadData(GFirmwareli, Hostli, GDevli) Else MessageBox.Show("请选择正确的xml文件") End If '将文件路径截取文件名称设置到ToolStripLabel2文本中 End Sub Public Function XmlFieldExists(xmlFile As String, fieldName As String) As Integer Try Dim doc As New XmlDocument() doc.Load(xmlFile) ' 任意深度查找第一个匹配节点 Dim node As XmlNode = doc.SelectSingleNode($"//{fieldName}") If node IsNot Nothing Then '取到该节点的值 Dim value As String = node.InnerText.Trim() '将其转int Dim intValue As Integer = 0 Dim d As Double = 0 Double.TryParse(value, d) Integer.TryParse(d, intValue) Return intValue Else Return 0 End If Catch ex As Exception ' 文件不存在、XML 格式错误、权限问题等都算“找不到” Return 0 End Try End Function Public Function XmlFieldExistsf(xmlFile As String, fieldName As String) As String Try Dim doc As New XmlDocument() doc.Load(xmlFile) ' 任意深度查找第一个匹配节点 Dim node As XmlNode = doc.SelectSingleNode($"//{fieldName}") If node IsNot Nothing Then '取到该节点的值 Dim value As String = node.InnerText '将其转int Return value Else Return "" End If Catch ex As Exception ' 文件不存在、XML 格式错误、权限问题等都算“找不到” Return "" End Try End Function '加载Grid1数据 Public Sub LoadData(Firmwareli As Dictionary(Of String, String), Hostli As Dictionary(Of String, String), Devli As Dictionary(Of String, String)) '嵌套遍历三个列表 initdevmodefirmware() For Each Firmware In Firmwareli For Each Host In Hostli For Each Dev In Devli Grid1.AddItem("") Grid1.Cell(Grid1.Rows - 1, 0).Text = Grid1.Rows - 1 Grid1.Cell(Grid1.Rows - 1, 1).Text = Host.Value Grid1.Cell(Grid1.Rows - 1, 2).Text = Host.Key Grid1.Cell(Grid1.Rows - 1, 3).Text = Firmware.Value Grid1.Cell(Grid1.Rows - 1, 4).Text = Firmware.Key Grid1.Cell(Grid1.Rows - 1, 5).Text = Dev.Value Grid1.Cell(Grid1.Rows - 1, 6).Text = Dev.Key Grid1.Cell(Grid1.Rows - 1, 7).Text = "1" Next Next Next End Sub Public Sub initdevmodefirmware() With Grid1 .NewFile() .ExtendLastCol = True .DisplayRowNumber = True .Rows = 1 .Cols = 8 For i As Integer = 0 To .Cols - 1 .Column(i).Alignment = AlignmentEnum.CenterCenter .Column(i).Locked = True Next .Cell(0, 0).Text = "序号" .Column(0).Width = 30 .Cell(0, 1).Text = "主机版本" .Column(1).Width = 30 .Cell(0, 2).Text = "主机" .Column(2).Width = 200 .Cell(0, 3).Text = "固件版本" .Column(3).Width = 30 .Cell(0, 4).Text = "固件" .Column(4).Width = 200 .Cell(0, 5).Text = "设备版本" .Column(5).Width = 30 .Cell(0, 6).Text = "设备" .Column(6).Width = 200 .Cell(0, 7).Text = "是否有效" .Column(7).CellType = CellTypeEnum.CheckBox .Column(7).Locked = False End With End Sub ''' ''' 弹出文件选择对话框,只允许选择 .xml 文件。 ''' ''' 选中的 .xml 文件的完整路径;如果用户取消,则返回 Nothing。 Public Function SelectXmlFile() As String Using ofd As New OpenFileDialog() ofd.Title = "请选择 XML 文件" ofd.Filter = "XML 文件 (*.xml)|*.xml" ofd.Multiselect = False ofd.CheckFileExists = True ofd.CheckPathExists = True If ofd.ShowDialog() = DialogResult.OK Then Return ofd.FileName Else Return Nothing End If End Using End Function Public Function SelecthexFile() As String 'C1F_A_L4_42_251110_NM Using ofd As New OpenFileDialog() ofd.Title = "请选择 XML 文件" ofd.Filter = "XML 文件 (*.hex)|*.HEX" ofd.Multiselect = False ofd.CheckFileExists = True ofd.CheckPathExists = True If ofd.ShowDialog() = DialogResult.OK Then Return ofd.FileName Else Return Nothing End If End Using End Function '查询主机、固件、设备 数量函数 Public Sub QueryCount() GFirmwareli = New Dictionary(Of String, String)() GHostli = New Dictionary(Of String, String)() GDevli = New Dictionary(Of String, String)() Dim ExecText As String = "SELECT HostVersion, HostName FROM ( SELECT HostVersion, HostName, ROW_NUMBER() OVER (PARTITION BY HostName ORDER BY ID) AS rn FROM tbl_devmode_firmware_info ) t WHERE rn = 1;" Dim dt As DataTable Using db As New DbExecutor(DbExecutor.DbTypeEnum.Mysql, DbConnString) Try db.Open() dt = db.ExecuteDataTable(ExecText) '将查询到的值赋给全局变量 For Each row As DataRow In dt.Rows GHostli.Add(row("HostName").ToString(), row("HostVersion").ToString()) Next ExecText = "SELECT FirmwareVersion, FirmwareName FROM ( SELECT FirmwareVersion, FirmwareName, ROW_NUMBER() OVER (PARTITION BY FirmwareName ORDER BY ID) AS rn FROM tbl_devmode_firmware_info ) t WHERE rn = 1;" dt = db.ExecuteDataTable(ExecText) For Each row As DataRow In dt.Rows GFirmwareli.Add(row("FirmwareName").ToString(), row("FirmwareVersion").ToString()) Next ExecText = "SELECT DevVersion, DevName FROM ( SELECT DevVersion, DevName, ROW_NUMBER() OVER (PARTITION BY DevName ORDER BY ID) AS rn FROM tbl_devmode_firmware_info ) t WHERE rn = 1;;" dt = db.ExecuteDataTable(ExecText) For Each row As DataRow In dt.Rows GDevli.Add(row("DevName").ToString(), row("DevVersion").ToString()) Next db.Close() Catch ex As Exception db.Close() End Try End Using End Sub '查询tbl_devmode_firmware_info 表中的数据,并显示在FlexCell控件中 Public Sub QueryData(tablename) Dim ExecText As String = $"SELECT * FROM {tablename} ORDER BY ID DESC;" Dim dt As DataTable Using db As New DbExecutor(DbExecutor.DbTypeEnum.Mysql, DbConnString) Try db.Open() dt = db.ExecuteDataTable(ExecText) db.Close() Grid1.DataSource = dt Grid1.Locked = True Catch ex As Exception db.Close() End Try End Using End Sub Public Sub QueryData2(tablename) Dim ExecText As String = $"SELECT * FROM {tablename} ORDER BY MFD_ID DESC;" Dim dt As DataTable Using db As New DbExecutor(DbExecutor.DbTypeEnum.Mysql, DbConnString) Try db.Open() dt = db.ExecuteDataTable(ExecText) db.Close() Grid1.DataSource = dt Grid1.Locked = True Catch ex As Exception db.Close() End Try End Using End Sub Private Sub Form1_Load(sender As Object, e As EventArgs) Handles MyBase.Load UtsFtp.InitConnectParams(FtpPort, FtpUser, FtpPwd) QueryCount() QueryData("tbl_devmode_firmware_info") End Sub Private Sub Button8_Click(sender As Object, e As EventArgs) Handles Button8.Click Dim xmlFilePath As String = SelectXmlFile() If String.IsNullOrEmpty(xmlFilePath) Then Return End If Dim strValue As String = XmlFieldExistsf(xmlFilePath, "DEV_INTERFACE") If strValue.Trim.ToLower.Equals("RS485Active".ToLower) OrElse strValue.Trim.ToLower.Equals("VirtualObject".ToLower) OrElse strValue.Trim.ToLower.Equals("RS485Polling".ToLower) Then ToolStripLabel2.Text = xmlFilePath.Substring(xmlFilePath.LastIndexOf("\") + 1) ToolStripLabel2.Tag = 2 ToolStripLabel1.Tag = xmlFilePath Dim Devli = New Dictionary(Of String, String)() Dim intValue As Integer = XmlFieldExists(xmlFilePath, "DEV_DATA_MODEL_VER") Devli.Add(ToolStripLabel2.Text, intValue.ToString()) LoadData(GFirmwareli, GHostli, Devli) Else MessageBox.Show("请选择正确的xml文件") End If End Sub Private Sub Button12_Click(sender As Object, e As EventArgs) Handles Button12.Click Dim xmlFilePath As String = SelecthexFile() If String.IsNullOrEmpty(xmlFilePath) Then Return End If Dim strValue As String = xmlFilePath.Substring(xmlFilePath.LastIndexOf("\") + 1) If IsFirmwareNameValid(strValue) Then Dim buff1 As String() = strValue.Split("_") ToolStripLabel2.Text = strValue ToolStripLabel2.Tag = 3 ToolStripLabel1.Tag = xmlFilePath Dim Firmwareli = New Dictionary(Of String, String)() Dim intValue As Integer = Hex2ToInt(buff1(3).ToString) Firmwareli.Add(ToolStripLabel2.Text, intValue.ToString()) LoadData(Firmwareli, GHostli, GDevli) Else MessageBox.Show("请选择正确的固件文件") End If 'C1F_A_L4_42_251110_NM '判断文件名称是否合法 End Sub '判断固件文件名称是否合法函数 Private Function IsFirmwareNameValid(ByVal FirmwareName As String) As Boolean Dim buff1 As String() = FirmwareName.ToLower.Replace(".hex", "").Split("_") If buff1.Length = 6 AndAlso buff1(1).ToLower.Equals("a") AndAlso buff1(0).ToLower.Equals("c1f") Then If buff1(5).ToLower.Equals("m") Or buff1(5).ToLower.Equals("nm") Then If buff1(2).ToLower.Equals("l2") Or buff1(2).ToLower.Equals("l4") Then If IsNumeric(Hex2ToInt(buff1(3).ToString)) AndAlso IsNumeric(buff1(4)) Then Return True Else Return False End If Else Return False End If Else Return False End If Else Return False End If End Function Public Function Hex2ToInt(ByVal hex2 As String) As Integer If hex2 Is Nothing OrElse hex2.Length <> 2 Then Return -1 Dim v As Byte If Byte.TryParse(hex2, Globalization.NumberStyles.HexNumber, Nothing, v) Then Return CInt(v) End If Return -1 End Function Private Sub ToolStripButton1_Click(sender As Object, e As EventArgs) Handles ToolStripButton1.Click Dim intag As Integer = ToolStripLabel2.Tag Select Case intag Case 1 UploadHostFile() Case 2 UploadDEvFile() Case 3 UploadFirmwareFile() Case > 3 MsgBox("发布失败,未设置设备有效固件") End Select QueryCount() QueryData("tbl_devmode_firmware_info") End Sub '上传固件文件函数 Private Sub UploadFirmwareFile() ''弹出提示询问是否填写完设备有效固件 If MsgBox("是否填写完设备有效固件", MsgBoxStyle.YesNo, "提示") = MsgBoxResult.Yes Then Dim loadFilePath As String = ToolStripLabel1.Tag Dim hostFilePath As String = $"\Data\Firmware\{ToolStripLabel2.Text}" '485Model \Data\Firmware\ '判断上传者是否为空 If String.IsNullOrEmpty(TextBox1.Text) Then MsgBox("请填写上传者") Return End If If String.IsNullOrEmpty(TextBox2.Text) Then MsgBox("备注不能为空!请填写备注!") Return End If '判断文件是否已在服务器 If UtsFtp.CreateObject.FtpFileExists(hostFilePath) Then MsgBox($"服务器已存在文件<{ToolStripLabel2.Text}>") Return End If Try If UtsFtp.CreateObject.FtpUpload2(hostFilePath, loadFilePath) Then '遍历表格 ' Dim li As List(Of String) = New List(Of String)() Dim rowstr As String = "" Dim UserName = TextBox1.Text.Trim Dim UpTime = Now.ToString("yyyy-MM-dd HH:mm:ss.fff") Dim FirmwareEnable As Integer = 0 Dim HostVersion, FirmwareVersion, DevVersion As String Dim HostName, FirmwareName, DevName As String Dim md5 As String = GetStringMd5(loadFilePath) Dim colNames As New StringBuilder Dim buf As String() = ToolStripLabel2.Text.Split("_") Dim mac As String = GetMACaddress() Dim filepazth = $"\Data\Firmware\" filepazth = filepazth.Replace("\", "\\") For i As Integer = 1 To Grid1.Rows - 1 HostVersion = Grid1.Cell(i, 1).Text HostName = Grid1.Cell(i, 2).Text FirmwareVersion = Grid1.Cell(i, 3).Text FirmwareName = Grid1.Cell(i, 4).Text DevVersion = Grid1.Cell(i, 5).Text DevName = Grid1.Cell(i, 6).Text If Grid1.Cell(i, 7).Text.Equals("true") Or Grid1.Cell(i, 7).Text.Equals("1") Then FirmwareEnable = 1 Else FirmwareEnable = 0 End If rowstr = $"INSERT INTO `blv_rcu_db`.`tbl_devmode_firmware_info` (`UserName`,`UpTime`,`FirmwareEnable`,`HostVersion`,`HostName`,`FirmwareVersion`,`FirmwareName`,`DevName`,`DevVersion`) VALUES ('{UserName}','{UpTime}',{FirmwareEnable},{HostVersion},'{HostName}',{FirmwareVersion},'{FirmwareName}','{DevName}',{DevVersion} );{vbCrLf}" 'li.Add(rowstr) colNames.Append(rowstr) Next rowstr = $"INSERT INTO `blv_rcu_db`.`tbl_firmware_upload_logs` (`DateTime`,`AppType`,`FilePath`,`FileName`,`Ver`,`MD5Val`,`Handler`,`Remark`,`PC_MAC`,`PC_NAME`,`IsValid`,`Luncher_Ver`,`HOTEL_ID`,`ROOM_TYPE_ID`) VALUES ('{UpTime}','{"App_Cfg"}','{filepazth}','{ToolStripLabel2.Text}','{FirmwareVersion}','{md5}','{UserName}','{TextBox2.Text.Trim}','{mac}','{System.Environment.UserName}',1,'C1_L4',0,0)" colNames.Append(rowstr) Add_room_type_circuit_powers(colNames.ToString) MsgBox("上传成功") Else MsgBox("文件上传失败!") Return End If Catch ex As Exception MsgBox($"文件上传失败!{vbCrLf}{ex.Message}") End Try End If End Sub ''上传主机文件函数 Private Sub UploadHostFile() ''弹出提示询问是否填写完设备有效固件 If MsgBox("是否填写完设备有效固件", MsgBoxStyle.YesNo, "提示") = MsgBoxResult.Yes Then Dim loadFilePath As String = ToolStripLabel1.Tag Dim hostFilePath As String = $"\Data\Model\RCUModel\{ToolStripLabel2.Text}" '485Model \Data\Firmware\ '判断上传者是否为空 If String.IsNullOrEmpty(TextBox1.Text) Then MsgBox("请填写上传者") Return End If If String.IsNullOrEmpty(TextBox2.Text) Then MsgBox("备注不能为空!请填写备注!") Return End If '判断文件是否已在服务器 If UtsFtp.CreateObject.FtpFileExists(hostFilePath) Then MsgBox($"服务器已存在文件<{ToolStripLabel2.Text}>") Return End If Try If UtsFtp.CreateObject.FtpUpload2(hostFilePath, loadFilePath) Then '遍历表格 ' Dim li As List(Of String) = New List(Of String)() Dim rowstr As String = "" Dim UserName = TextBox1.Text.Trim Dim UpTime = Now.ToString("yyyy-MM-dd HH:mm:ss.fff") Dim FirmwareEnable As Integer = 0 Dim HostVersion, FirmwareVersion, DevVersion As String Dim HostName, FirmwareName, DevName As String Dim md5 As String = GetStringMd5(loadFilePath) Dim colNames As New StringBuilder For i As Integer = 1 To Grid1.Rows - 1 HostVersion = Grid1.Cell(i, 1).Text HostName = Grid1.Cell(i, 2).Text FirmwareVersion = Grid1.Cell(i, 3).Text FirmwareName = Grid1.Cell(i, 4).Text DevVersion = Grid1.Cell(i, 5).Text DevName = Grid1.Cell(i, 6).Text If Grid1.Cell(i, 7).Text.Equals("true") Or Grid1.Cell(i, 7).Text.Equals("1") Then FirmwareEnable = 1 Else FirmwareEnable = 0 End If rowstr = $"INSERT INTO `blv_rcu_db`.`tbl_devmode_firmware_info` (`UserName`,`UpTime`,`FirmwareEnable`,`HostVersion`,`HostName`,`FirmwareVersion`,`FirmwareName`,`DevName`,`DevVersion`) VALUES ('{UserName}','{UpTime}',{FirmwareEnable},{HostVersion},'{HostName}',{FirmwareVersion},'{FirmwareName}','{DevName}',{DevVersion} );{vbCrLf}" 'li.Add(rowstr) colNames.Append(rowstr) Next rowstr = $"INSERT INTO `blv_rcu_db`.`tbl_model_file_data` (`Available`,`Directory`,`XML_FileName`,`UploadDateTime`,`Author`,`XLM_MD5`,`Remark`,`Brand`,`ModelNo`,`ModelName`,`Description`,`Image`,`DAT_FileName`,`Version`,`DAT_MD5`,`PartNumber`) VALUES (1,'{"\Data\Model\RCUModel".Replace("\", "\\")}','{ToolStripLabel2.Text}','{UpTime}','{UserName}','{md5}','{TextBox2.Text.Trim}','','','','','','','','','');" colNames.Append(rowstr) Add_room_type_circuit_powers(colNames.ToString) MsgBox("上传成功") Else MsgBox("文件上传失败!") Return End If Catch ex As Exception MsgBox($"文件上传失败!{vbCrLf}{ex.Message}") End Try End If End Sub Public Function GetMACaddress() As String Dim netAddress As String = "" Dim netName As String = "" Dim searcher As New Management.ManagementObjectSearcher("select * from win32_NetworkAdapterConfiguration") Dim moc2 As Management.ManagementObjectCollection = searcher.Get() For Each mo As Management.ManagementObject In moc2 If CBool(mo("IPEnabled")) Then '判断是否是网卡 netName = mo.Properties("caption").Value.ToString '网卡名称 netAddress = mo.Properties("MACAddress").Value.ToString 'mac地址 End If Next Return netAddress End Function Private Sub UploadDEvFile() ''弹出提示询问是否填写完设备有效固件 If MsgBox("是否填写完设备有效固件", MsgBoxStyle.YesNo, "提示") = MsgBoxResult.Yes Then Dim loadFilePath As String = ToolStripLabel1.Tag Dim hostFilePath As String = $"\Data\Model\485Model\{ToolStripLabel2.Text}" '485Model \Data\Firmware\ '判断上传者是否为空 If String.IsNullOrEmpty(TextBox1.Text) Then MsgBox("请填写上传者") Return End If If String.IsNullOrEmpty(TextBox2.Text) Then MsgBox("备注不能为空!请填写备注!") Return End If '判断文件是否已在服务器 If UtsFtp.CreateObject.FtpFileExists(hostFilePath) Then MsgBox($"服务器已存在文件<{ToolStripLabel2.Text}>") Return End If Try If UtsFtp.CreateObject.FtpUpload2(hostFilePath, loadFilePath) Then '遍历表格 ' Dim li As List(Of String) = New List(Of String)() Dim rowstr As String = "" Dim UserName = TextBox1.Text.Trim Dim UpTime = Now.ToString("yyyy-MM-dd HH:mm:ss.fff") Dim FirmwareEnable As Integer = 0 Dim HostVersion, FirmwareVersion, DevVersion As String Dim HostName, FirmwareName, DevName As String Dim md5 As String = GetStringMd5(loadFilePath) Dim colNames As New StringBuilder For i As Integer = 1 To Grid1.Rows - 1 HostVersion = Grid1.Cell(i, 1).Text HostName = Grid1.Cell(i, 2).Text FirmwareVersion = Grid1.Cell(i, 3).Text FirmwareName = Grid1.Cell(i, 4).Text DevVersion = Grid1.Cell(i, 5).Text DevName = Grid1.Cell(i, 6).Text If Grid1.Cell(i, 7).Text.Equals("true") Or Grid1.Cell(i, 7).Text.Equals("1") Then FirmwareEnable = 1 Else FirmwareEnable = 0 End If rowstr = $"INSERT INTO `blv_rcu_db`.`tbl_devmode_firmware_info` (`UserName`,`UpTime`,`FirmwareEnable`,`HostVersion`,`HostName`,`FirmwareVersion`,`FirmwareName`,`DevName`,`DevVersion`) VALUES ('{UserName}','{UpTime}',{FirmwareEnable},{HostVersion},'{HostName}',{FirmwareVersion},'{FirmwareName}','{DevName}',{DevVersion} );{vbCrLf}" 'li.Add(rowstr) colNames.Append(rowstr) Next rowstr = $"INSERT INTO `blv_rcu_db`.`tbl_model_file_data` (`Available`,`Directory`,`XML_FileName`,`UploadDateTime`,`Author`,`XLM_MD5`,`Remark`,`Brand`,`ModelNo`,`ModelName`,`Description`,`Image`,`DAT_FileName`,`Version`,`DAT_MD5`,`PartNumber`) VALUES (1,'{"\Data\Model\485Model".Replace("\", "\\")}','{ToolStripLabel2.Text}','{UpTime}','{UserName}','{md5}','{TextBox2.Text.Trim}','','','','','','','','','');" colNames.Append(rowstr) Add_room_type_circuit_powers(colNames.ToString) MsgBox("上传成功") Else MsgBox("文件上传失败!") Return End If Catch ex As Exception MsgBox($"文件上传失败!{vbCrLf}{ex.Message}") End Try End If End Sub Public Function GetStringMd5(filePath As String) As String Dim dataFile() As Byte = File.ReadAllBytes(filePath) Dim databuff As Byte() = Security.Cryptography.MD5.Create().ComputeHash(dataFile) Dim MD5str As String = BitConverter.ToString(databuff) ' Console.WriteLine($"md5-1:{MD5str}") Return MD5str.Replace("-", "").ToUpper End Function Public Function Add_room_type_circuit_powers(insertClunm As String) As Boolean If String.IsNullOrEmpty(insertClunm) Then Return False Dim dt As DataTable Using db As New DbExecutor(DbExecutor.DbTypeEnum.Mysql, DbConnString) db.Open() Try db.BeginTransaction() dt = db.ExecuteDataTable(insertClunm) db.CommitTransaction() Catch ex As Exception db.RollbackTransaction() db.Close() Return False End Try db.Close() End Using Return True End Function Private Sub Button16_Click(sender As Object, e As EventArgs) Handles Button16.Click Dim xmlFilePath As String = SelectXmlFile() If String.IsNullOrEmpty(xmlFilePath) Then MsgBox("请选择正确的xml文件") Return End If If String.IsNullOrEmpty(TextBox1.Text) Then MsgBox("请填写上传者") Return End If If String.IsNullOrEmpty(TextBox2.Text) Then MsgBox("备注不能为空!请填写备注!") Return End If Dim strValue As String = xmlFilePath.Substring(xmlFilePath.LastIndexOf("\") + 1) Dim UpTime = Now.ToString("yyyy-MM-dd HH:mm:ss.fff") Dim md5 As String = GetStringMd5(xmlFilePath) Dim UserName = TextBox1.Text.Trim Dim colNames As New StringBuilder Dim hostFilePath As String = $"\Data\Model\BaseModel\{strValue}" '判断文件是否已在服务器 If UtsFtp.CreateObject.FtpFileExists(hostFilePath) Then MsgBox($"服务器已存在文件<{strValue}>") Return End If Try If UtsFtp.CreateObject.FtpUpload2(hostFilePath, xmlFilePath) Then Dim rowstr As String = $"INSERT INTO `blv_rcu_db`.`tbl_model_file_data` (`Available`,`Directory`,`XML_FileName`,`UploadDateTime`,`Author`,`XLM_MD5`,`Remark`,`Brand`,`ModelNo`,`ModelName`,`Description`,`Image`,`DAT_FileName`,`Version`,`DAT_MD5`,`PartNumber`) VALUES (1,'{"\Data\Model\BaseModel".Replace("\", "\\")}','{strValue}','{UpTime}','{UserName}','{md5}','{TextBox2.Text.Trim}','','','','','','','','','');" colNames.Append(rowstr) Add_room_type_circuit_powers(colNames.ToString) MsgBox("上传成功") End If Catch ex As Exception MsgBox($"文件上传失败!{vbCrLf}{ex.Message}") End Try End Sub Private Sub Button4_Click(sender As Object, e As EventArgs) Handles Button9.Click, Button5.Click, Button4.Click QueryCount() QueryData("tbl_devmode_firmware_info") End Sub Private Sub Button10_Click(sender As Object, e As EventArgs) Handles Button6.Click, Button3.Click, Button10.Click QueryData2("tbl_model_file_data") End Sub End Class