From 5ddadba291ea2d9dba78259973594a4664b94f57 Mon Sep 17 00:00:00 2001
From: C3032 <C3032@BC3032>
Date: 星期四, 08 一月 2026 16:45:35 +0800
Subject: [PATCH] 简化相机逻辑,支持手动数据处理

---
 LB_SmartVision/SQL/LB_SqlCommand.cs |  552 +++++++++++++++++++++++++++++++++++++++++++++++++++++++
 1 files changed, 552 insertions(+), 0 deletions(-)

diff --git a/LB_SmartVision/SQL/LB_SqlCommand.cs b/LB_SmartVision/SQL/LB_SqlCommand.cs
new file mode 100644
index 0000000..b52b06d
--- /dev/null
+++ b/LB_SmartVision/SQL/LB_SqlCommand.cs
@@ -0,0 +1,552 @@
+锘縰sing MySql.Data.MySqlClient;
+using System;
+using System.Collections.Generic;
+using System.Data;
+using System.Data.SqlClient;
+using System.Diagnostics;
+using System.Linq;
+using System.Text;
+using System.Threading.Tasks;
+
+namespace LB_SmartVision.SQL
+{
+    public class LB_SqlCommand
+    {
+        /// <summary>
+        /// 杩炴帴瀛楃涓诧細鎸囧畾 MySQL 瀹炰緥鍜屾暟鎹簱(瀹為檯浼氳鍙杁ll.config涓殑鍊兼潵鏇存柊杩炴帴瀛楃涓�)
+        /// </summary>
+        public static string ConnectionString = "Server=localhost;Database=product_mes;Uid=root;Pwd=root;";
+
+        /// <summary>
+        /// 鍒ゆ柇鎸囧畾鍒楁槸鍚﹀瓨鍦ㄦ煇鍊�
+        /// </summary>
+        /// <param name="tableName">琛ㄥ悕</param>
+        /// <param name="columnName">鎸囧畾鍒楀悕</param>
+        /// <param name="value">鎸囧畾鍊�</param>
+        /// <param name="connectionString"></param>
+        /// <returns>鍊煎瓨鍦═rue</returns>
+        public static bool IsExist(string tableName, string columnName, string value, string connectionString = "")
+        {
+            if (string.IsNullOrEmpty(connectionString))
+                connectionString = ConnectionString;
+
+            // MySQL 鏌ヨ璇彞锛屾鏌ユ寚瀹氬垪鏄惁瀛樺湪鎸囧畾鐨勫��
+            string sqlQuery = string.Format("SELECT CASE WHEN EXISTS (SELECT 1 FROM `{0}` " +
+                "WHERE `{1}` = @Value) THEN 1 ELSE 0 END", tableName, columnName);
+
+            // 鍒涘缓 MySQL 杩炴帴
+            using (MySqlConnection connection = new MySqlConnection(connectionString))
+            {
+                // 鍒涘缓 MySQL 鍛戒护
+                using (MySqlCommand command = new MySqlCommand(sqlQuery, connection))
+                {
+                    // 娣诲姞鍙傛暟锛岄槻姝� SQL 娉ㄥ叆
+                    command.Parameters.AddWithValue("@Value", value);
+
+                    // 鎵撳紑杩炴帴
+                    connection.Open();
+
+                    // 鎵ц鏌ヨ骞惰幏鍙栫粨鏋�
+                    int result = Convert.ToInt32(command.ExecuteScalar());
+
+                    // 濡傛灉 result == 1锛岃〃绀哄瓨鍦ㄨ鍊硷紱鍚﹀垯涓嶅瓨鍦�
+                    return result == 1;
+                }
+            }
+        }
+
+        /// <summary>
+        /// 鍒ゆ柇鎸囧畾琛ㄦ槸鍚﹀瓨鍦�
+        /// </summary>
+        /// <param name="tableName">琛ㄥ悕</param>
+        /// <param name="connectionString"></param>
+        /// <returns>鍊煎瓨鍦═rue</returns>
+        public static bool IsExistTable(string tableName, string connectionString = "")
+        {
+            if (string.IsNullOrEmpty(connectionString))
+                connectionString = ConnectionString;
+
+            // MySQL 鏌ヨ璇彞锛屾鏌ヨ〃鏄惁瀛樺湪
+            string sqlQuery = $@"
+                                SELECT COUNT(*)
+                                FROM INFORMATION_SCHEMA.TABLES
+                                WHERE TABLE_SCHEMA = DATABASE() 
+                                  AND TABLE_NAME = @TableName";
+
+            // 鍒涘缓 MySQL 杩炴帴
+            using (MySqlConnection connection = new MySqlConnection(connectionString))
+            {
+                // 鍒涘缓 MySQL 鍛戒护
+                using (MySqlCommand command = new MySqlCommand(sqlQuery, connection))
+                {
+                    // 娣诲姞琛ㄥ悕鍙傛暟
+                    command.Parameters.AddWithValue("@TableName", tableName);
+
+                    // 鎵撳紑杩炴帴
+                    connection.Open();
+
+                    // 鎵ц鏌ヨ骞惰幏鍙栫粨鏋�
+                    int result = Convert.ToInt32(command.ExecuteScalar());
+
+                    // 濡傛灉 result > 0锛岃〃绀哄瓨鍦ㄨ琛紱鍚﹀垯涓嶅瓨鍦�
+                    return result > 0;
+                }
+            }
+        }
+
+        /// <summary>
+        /// 閲嶅懡鍚嶈〃
+        /// </summary>
+        /// <param name="oldTableName"></param>
+        /// <param name="newTableName"></param>
+        /// <param name="connectionString"></param>
+        /// <returns></returns>
+        public static bool RenameTable(string oldTableName, string newTableName, string connectionString = "")
+        {
+            if (string.IsNullOrEmpty(connectionString))
+                connectionString = ConnectionString;
+
+            if (!IsExistTable(oldTableName))
+                return false;
+
+            // MySQL 閲嶅懡鍚嶈〃璇硶
+            string sqlQuery = $"ALTER TABLE `{oldTableName}` RENAME TO `{newTableName}`";
+
+            // 鍒涘缓 MySQL 杩炴帴
+            using (MySqlConnection connection = new MySqlConnection(connectionString))
+            {
+                // 鍒涘缓 MySQL 鍛戒护
+                using (MySqlCommand command = new MySqlCommand(sqlQuery, connection))
+                {
+                    // 鎵撳紑杩炴帴
+                    connection.Open();
+
+                    try
+                    {
+                        // 鎵ц鏌ヨ骞惰幏鍙栫粨鏋�
+                        command.ExecuteNonQuery();
+                        return true;
+                    }
+                    catch
+                    {
+                        return false;
+                    }
+                }
+            }
+        }
+
+        /// <summary>
+        /// 鍒犻櫎鎸囧畾琛�
+        /// </summary>
+        /// <param name="tableName">琛ㄥ悕</param>
+        /// <param name="connectionString"></param>
+        /// <returns>鍒犻櫎鎴愬姛True</returns>
+        public static bool DeleteTable(string tableName, string connectionString = "")
+        {
+            if (string.IsNullOrEmpty(connectionString))
+                connectionString = ConnectionString;
+
+            // MySQL 鍒犻櫎琛ㄨ鍙�
+            string sqlQuery = $"DROP TABLE IF EXISTS `{tableName}`";
+
+            // 鍒涘缓 MySQL 杩炴帴
+            using (MySqlConnection connection = new MySqlConnection(connectionString))
+            {
+                // 鍒涘缓 MySQL 鍛戒护
+                using (MySqlCommand command = new MySqlCommand(sqlQuery, connection))
+                {
+                    // 鎵撳紑杩炴帴
+                    connection.Open();
+
+                    try
+                    {
+                        // 鎵ц鍒犻櫎鎿嶄綔
+                        command.ExecuteNonQuery();
+                        return true;
+                    }
+                    catch
+                    {
+                        return false;
+                    }
+                }
+            }
+        }
+
+        /// <summary>
+        /// 鑾峰彇鎵�闇�鐨勫�奸�氳繃绱㈠紩鎸囧畾鍒楃殑鎸囧畾鍊煎畾浣嶅埌鎵�鍦ㄨ鐨勬寚瀹氬垪
+        /// </summary>
+        /// <param name="tableName">琛ㄥ悕</param>
+        /// <param name="indexName">鎸囧畾鍒楀悕</param>
+        /// <param name="indexValue">鎸囧畾鍒楀��</param>
+        /// <param name="columnName">鎵�闇�鍊肩殑鍒楀悕</param>
+        /// <param name="connectionString"></param>
+        /// <returns>鎵�闇�鍒楀��</returns>
+        public static string FindValueFromIndexName(string tableName, string indexName, string indexValue, string columnName, string connectionString = "")
+        {
+            try
+            {
+                if (string.IsNullOrEmpty(connectionString))
+                    connectionString = ConnectionString;
+
+                // MySQL 鏌ヨ璇彞
+                string sqlQuery = $"SELECT `{columnName}` FROM `{tableName}` WHERE `{indexName}` = @IndexValue";
+                string resultValue = string.Empty;
+
+                // 杩炴帴鏁版嵁搴撳苟鎵ц鏌ヨ
+                using (MySqlConnection connection = new MySqlConnection(connectionString))
+                {
+                    using (MySqlCommand command = new MySqlCommand(sqlQuery, connection))
+                    {
+                        // 娣诲姞鍙傛暟浠ラ槻姝� SQL 娉ㄥ叆
+                        command.Parameters.AddWithValue("@IndexValue", indexValue);
+
+                        // 鎵撳紑杩炴帴
+                        connection.Open();
+
+                        // 鎵ц鏌ヨ骞惰幏鍙栫粨鏋�
+                        var result = command.ExecuteScalar();
+
+                        if (result != null)
+                        {
+                            resultValue = result.ToString();
+                        }
+                    }
+                }
+                return resultValue;
+            }
+            catch
+            {
+                return string.Empty;
+            }
+        }
+
+        /// <summary>
+        /// 鍒犻櫎鎸囧畾琛岄�氳繃绱㈠紩鎸囧畾鍒楃殑鎸囧畾鍊�
+        /// </summary>
+        /// <param name="tableName">琛ㄥ悕</param>
+        /// <param name="indexName">鎸囧畾鍒楀悕</param>
+        /// <param name="indexValue">鎸囧畾鍒楀��</param>
+        /// <param name="connectionString"></param>
+        /// <returns>鍒犻櫎鎴愬姛True</returns>
+        public static bool DeleteRowFromIndexName(string tableName, string indexName, string indexValue, string connectionString = "")
+        {
+            try
+            {
+                if (string.IsNullOrEmpty(connectionString))
+                    connectionString = ConnectionString;
+
+                using (MySqlConnection conn = new MySqlConnection(connectionString))
+                {
+                    conn.Open();
+
+                    // 鍒犻櫎鎸囧畾琛�
+                    string deleteQuery = string.Format("DELETE FROM `{0}` WHERE `{1}` = @indexValue", tableName, indexName);
+                    using (MySqlCommand cmd = new MySqlCommand(deleteQuery, conn))
+                    {
+                        cmd.Parameters.AddWithValue("@indexValue", indexValue);
+                        cmd.ExecuteNonQuery();
+                    }
+
+                    // MySQL 涓洿鏂拌鍙风殑鍐欐硶锛堝亣璁緄ndexName鏄嚜澧炲垪锛�
+                    string updateQuery = string.Format(@"
+                        SET @row_number = 0;
+                        UPDATE `{0}` 
+                        SET `{1}` = @row_number := @row_number + 1 
+                        ORDER BY `{1}`;", tableName, indexName);
+
+                    using (MySqlCommand cmd = new MySqlCommand(updateQuery, conn))
+                    {
+                        cmd.ExecuteNonQuery();
+                    }
+                    return true;
+                }
+            }
+            catch
+            {
+                return false;
+            }
+        }
+
+        /// <summary>
+        /// 浜ゆ崲鎸囧畾琛岀殑鎵�鏈夊�奸�氳繃绱㈠紩鎸囧畾鍒楃殑鎸囧畾鍊�
+        /// </summary>
+        /// <param name="tableName">琛ㄥ悕</param>
+        /// <param name="swapName">鍒楀悕</param>
+        /// <param name="swapValue1">浜ゆ崲鐨勫垪鍊�</param>
+        /// <param name="swapValue2">琚氦鎹㈢殑鍒楀��</param>
+        /// <param name="connectionString"></param>
+        /// <returns>浜ゆ崲鎴愬姛True</returns>
+        public static bool SwapRowFromIndexName(string tableName, string swapName, string swapValue1, string swapValue2, string connectionString = "")
+        {
+            if (string.IsNullOrEmpty(connectionString))
+                connectionString = ConnectionString;
+
+            using (MySqlConnection conn = new MySqlConnection(connectionString))
+            {
+                conn.Open();
+
+                // 寮�濮嬩簨鍔�
+                MySqlTransaction transaction = conn.BeginTransaction();
+                try
+                {
+                    // MySQL 浜ゆ崲琛屽�肩殑鍐欐硶
+                    string swapQuery = string.Format(@"
+                        UPDATE `{0}` 
+                        SET `{1}` = CASE 
+                            WHEN `{1}` = @SwapValue1 THEN @SwapTempValue
+                            WHEN `{1}` = @SwapValue2 THEN @SwapValue1
+                            WHEN `{1}` = @SwapTempValue THEN @SwapValue2
+                        END
+                        WHERE `{1}` IN (@SwapValue1, @SwapValue2, @SwapTempValue);", tableName, swapName);
+
+                    using (MySqlCommand cmd = new MySqlCommand(swapQuery, conn, transaction))
+                    {
+                        // 娣诲姞鍙傛暟
+                        cmd.Parameters.AddWithValue("@SwapValue1", swapValue1);
+                        cmd.Parameters.AddWithValue("@SwapValue2", swapValue2);
+                        cmd.Parameters.AddWithValue("@SwapTempValue", Guid.NewGuid().ToString());
+
+                        // 鎵ц鏌ヨ
+                        cmd.ExecuteNonQuery();
+                    }
+
+                    // 鎻愪氦浜嬪姟
+                    transaction.Commit();
+                    return true;
+                }
+                catch (Exception ex)
+                {
+                    Debug.WriteLine("浜ゆ崲澶辫触,鍘熷洜鏄�:" + ex.Message.ToString());
+                    // 鍑虹幇寮傚父鏃跺洖婊氫簨鍔�
+                    transaction.Rollback();
+                    return false;
+                }
+            }
+        }
+
+        /// <summary>
+        /// 鏇存柊鎸囧畾鍒楃殑鍊奸�氳繃绱㈠紩鎸囧畾鍒楃殑鎸囧畾鍊�
+        /// </summary>
+        /// <param name="tableName"></param>
+        /// <param name="oriValue"></param>
+        /// <param name="newValue"></param>
+        /// <param name="columnName"></param>
+        /// <param name="connectionString"></param>
+        /// <returns></returns>
+        public static bool UpdateValueFromIndexName(string tableName, string oriValue, string newValue, string columnName, string connectionString = "")
+        {
+            // 淇鍘熸柟娉曞悕鎷煎啓閿欒 Updata -> Update
+            if (string.IsNullOrEmpty(connectionString))
+                connectionString = ConnectionString;
+
+            // MySQL 鏇存柊璇彞
+            string sqlQuery = string.Format("UPDATE `{0}` SET `{1}` = @NewValue WHERE `{1}` = @OriValue", tableName, columnName);
+
+            // 杩炴帴鏁版嵁搴撳苟鎵ц鏌ヨ
+            using (MySqlConnection connection = new MySqlConnection(connectionString))
+            {
+                using (MySqlCommand command = new MySqlCommand(sqlQuery, connection))
+                {
+                    // 鍙傛暟鍖栨煡璇紝闃叉 SQL 娉ㄥ叆
+                    command.Parameters.AddWithValue("@OriValue", oriValue);  // 瑕佹浛鎹㈢殑鍘熷鍊�
+                    command.Parameters.AddWithValue("@NewValue", newValue);  // 鏇挎崲鍚庣殑鏂板��
+
+                    // 鎵撳紑杩炴帴
+                    connection.Open();
+
+                    // 鎵ц鏇存柊鎿嶄綔
+                    int rowsAffected = command.ExecuteNonQuery();
+
+                    return rowsAffected > 0;
+                }
+            }
+        }
+
+        /// <summary>
+        /// 妫�鏌ユ暟鎹簱鏄惁瀛樺湪
+        /// </summary>
+        /// <param name="connectionString"></param>
+        /// <param name="databaseName"></param>
+        /// <returns></returns>
+        public static bool DatabaseExists(string connectionString, string databaseName)
+        {
+            string query = "SELECT SCHEMA_NAME FROM INFORMATION_SCHEMA.SCHEMATA WHERE SCHEMA_NAME = @databaseName";
+
+            using (MySqlConnection connection = new MySqlConnection(connectionString))
+            {
+                connection.Open();
+                using (MySqlCommand command = new MySqlCommand(query, connection))
+                {
+                    command.Parameters.AddWithValue("@databaseName", databaseName);
+                    var result = command.ExecuteScalar();
+                    return result != null;
+                }
+            }
+        }
+
+        /// <summary>
+        /// 鍒涘缓鏁版嵁搴�
+        /// </summary>
+        /// <param name="connectionString"></param>
+        /// <param name="databaseName"></param>
+        /// <returns></returns>
+        public static bool CreateDatabase(string connectionString, string databaseName)
+        {
+            if (string.IsNullOrEmpty(connectionString))
+                connectionString = ConnectionString;
+
+            try
+            {
+                string createQuery = $"CREATE DATABASE IF NOT EXISTS `{databaseName}` CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci";
+
+                using (MySqlConnection connection = new MySqlConnection(connectionString))
+                {
+                    connection.Open();
+                    using (MySqlCommand command = new MySqlCommand(createQuery, connection))
+                    {
+                        command.ExecuteNonQuery();
+                    }
+                }
+                return true;
+            }
+            catch
+            {
+                return false;
+            }
+        }
+
+        /// <summary>
+        /// 鍒犻櫎鏁版嵁搴�
+        /// </summary>
+        /// <param name="databaseName"></param>
+        /// <param name="connectionString"></param>
+        /// <returns></returns>
+        public static bool DeleteDatabase(string databaseName, string connectionString)
+        {
+            if (string.IsNullOrEmpty(connectionString))
+                connectionString = ConnectionString;
+
+            // MySQL 鍒犻櫎鏁版嵁搴撹鍙�
+            string dropDatabaseQuery = $"DROP DATABASE IF EXISTS `{databaseName}`";
+
+            using (MySqlConnection connection = new MySqlConnection(connectionString))
+            {
+                try
+                {
+                    // 鎵撳紑鏁版嵁搴撹繛鎺�
+                    connection.Open();
+
+                    // 鍒涘缓 MySqlCommand 瀵硅薄
+                    using (MySqlCommand cmd = new MySqlCommand(dropDatabaseQuery, connection))
+                    {
+                        // 鎵ц鍒犻櫎鏁版嵁搴撴搷浣�
+                        cmd.ExecuteNonQuery();
+                        Debug.WriteLine("Database dropped successfully.");
+                        return true;
+                    }
+                }
+                catch (Exception ex)
+                {
+                    Debug.WriteLine("Error: " + ex.Message);
+                    return false;
+                }
+            }
+        }
+
+        /// <summary>
+        /// 澶嶅埗琛ㄧ粨鏋勫拰鏁版嵁
+        /// </summary>
+        /// <param name="connectionString"></param>
+        /// <param name="sourceDatabase"></param>
+        /// <param name="targetDatabase"></param>
+        /// <returns></returns>
+        public static bool CopyDatabaseData(string connectionString, string sourceDatabase, string targetDatabase)
+        {
+            if (string.IsNullOrEmpty(connectionString))
+                connectionString = ConnectionString;
+
+            try
+            {
+                // 鍏堝垱寤虹洰鏍囨暟鎹簱锛堝鏋滀笉瀛樺湪锛�
+                CreateDatabase(connectionString, targetDatabase);
+
+                using (var connection = new MySqlConnection(connectionString))
+                {
+                    connection.Open();
+
+                    // 鑾峰彇婧愭暟鎹簱涓墍鏈夎〃鐨勫垪琛�
+                    string getTablesQuery = $"SELECT table_name FROM INFORMATION_SCHEMA.TABLES WHERE table_schema = @sourceDb";
+                    using (var cmd = new MySqlCommand(getTablesQuery, connection))
+                    {
+                        cmd.Parameters.AddWithValue("@sourceDb", sourceDatabase);
+                        using (var reader = cmd.ExecuteReader())
+                        {
+                            while (reader.Read())
+                            {
+                                string tableName = reader.GetString(0);
+                                Debug.WriteLine($"澶嶅埗琛�: {tableName}");
+
+                                // 鍏抽棴reader鎵嶈兘鎵ц鍚庣画鎿嶄綔
+                                reader.Close();
+
+                                // 澶嶅埗琛ㄧ粨鏋勫拰鏁版嵁锛圡ySQL 绠�鍖栧啓娉曪級
+                                string copyTableQuery = $"CREATE TABLE `{targetDatabase}`.`{tableName}` LIKE `{sourceDatabase}`.`{tableName}`; " +
+                                                       $"INSERT INTO `{targetDatabase}`.`{tableName}` SELECT * FROM `{sourceDatabase}`.`{tableName}`;";
+
+                                using (var cmdCopy = new MySqlCommand(copyTableQuery, connection))
+                                {
+                                    cmdCopy.ExecuteNonQuery();
+                                }
+
+                                // 閲嶆柊鎵撳紑reader缁х画璇诲彇涓嬩竴涓〃
+                                reader.NextResult();
+                            }
+                        }
+                    }
+                }
+                return true;
+            }
+            catch (Exception ex)
+            {
+                Debug.WriteLine($"澶嶅埗澶辫触: {ex.Message}");
+                return false;
+            }
+        }
+
+        /// <summary>
+        /// 鑾峰彇鐢ㄦ埛鏁版嵁搴撳垪琛�
+        /// </summary>
+        /// <returns></returns>
+        public static List<string> GetUserDatabases()
+        {
+            List<string> databases = new List<string>();
+            string connectionString = "Server=localhost;Database=user_pt;Uid=root;Pwd=root;";
+
+            using (MySqlConnection connection = new MySqlConnection(connectionString))
+            {
+                try
+                {
+                    connection.Open();
+                    string query = @"
+                        SELECT SCHEMA_NAME 
+                        FROM INFORMATION_SCHEMA.SCHEMATA 
+                        WHERE SCHEMA_NAME NOT IN ('mysql', 'information_schema', 'performance_schema', 'sys')";
+
+                    using (MySqlCommand command = new MySqlCommand(query, connection))
+                    using (MySqlDataReader reader = command.ExecuteReader())
+                    {
+                        while (reader.Read())
+                        {
+                            databases.Add(reader["SCHEMA_NAME"]?.ToString());
+                        }
+                    }
+                }
+                catch (MySqlException ex)
+                {
+                    Debug.WriteLine($"鏁版嵁搴撴煡璇㈠け璐�: {ex.Message}");
+                }
+            }
+            return databases;
+        }
+    }
+}

--
Gitblit v1.9.3