首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> 更多程式語言 >> 程式設計綜合問答

VS (C#/VB.NET) 資料存入 MySQL:統一轉字串存入 nvarchar,檢查 SQL 語法

     編輯:程式設計綜合問答

問題

VS (C#/VB.NET) 讀取資料存入 MySQL 失敗,可能型別不匹配、SQL 拼接錯誤、參數缺失。

通用解決策略

  1. 統一轉字串存入 `VARCHAR`/`NVARCHAR`/`TEXT`**:最兼容、除錯最易(直接看資料庫內容)。數值、日期、布林先 `ToString()` 再存入。
  2. 參數化查詢(必須):
    
    // C# 範例
    string sql = "INSERT INTO `data_table` (`col1`, `col2`, `col3`) VALUES (@v1, @v2, @v3)";
    using (var conn = new MySqlConnection(connStr))
    using (var cmd = new MySqlCommand(sql, conn)) {
        cmd.Parameters.AddWithValue("@v1", value1.ToString());
        cmd.Parameters.AddWithValue("@v2", value2.ToString());
        cmd.Parameters.AddWithValue("@v3", value3.ToString());
        conn.Open();
        cmd.ExecuteNonQuery();
    }
    
  3. 檢查 SQL 語法**:MySQL 保留字加反引號 `` `col` ``,字串單引號,無分號結尾。
  4. 型別對應表(若不想全存字串):
    .NET 型別MySQL 型別備註
    `int`/`long``INT`/`BIGINT`
    `double`/`decimal``DOUBLE`/`DECIMAL(18,4)`金額用 DECIMAL
    `DateTime``DATETIME`/`TIMESTAMP`參數直接傳 DateTime 物件
    `bool``TINYINT(1)`/`BIT`
    `byte[]``BLOB`/`LONGBLOB`

常見坑

  • 連線字串 `CharSet=utf8mb4` 存儲 Emoji/特殊字元。
  • `MySql.Data` 版本與 .NET Framework/Core 版本匹配。
  • 批次插入用 `MySqlBulkLoader` 或拼接 `VALUES (...), (...), ...` + 參數化(注意參數數量限制)。

總結

VS 存 MySQL 失敗 → **全轉字串存 `VARCHAR` + 參數化查詢 + 檢查 SQL 反引號/引號**。最穩健、最易除錯。正式上線再按型別優化欄位定義。

  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved