關於使用SqlSugar插入數據異常解決方案


 項目的解決方案中引用的有mysqlsugar的數據庫操作庫,在使用插入數據過程中一些特殊的生僻字或表情符號總會提示:

Incorrect string value: '\xF0\x9F...' for column 'name' at row 1

這是由於UTF-8編碼有可能是兩個、三個、四個字節。Emoji表情或者某些特殊字符是4個字節,而MySQL的utf8編碼最多3個字節,所以數據插不進去。

進而提示\x十六進制的字符串信息。

因為myselsugar ,也是對sqlsugar的進一步封裝。所以將目光聚焦在sqlsugar上就可以了。

sqlsugar給的解決方案是:

在定義實體時將臨時保存特殊字符的變量mapping(映射)sqlsugar中的[SqlSugar.SugarColumn(IsTranscoding =true)] //設置該自段轉碼 屬性

例:

 1 using System;
 2 using System.Linq;
 3 using SqlSugar;
 4 
 5 namespace ClearMonitor.Model.Entities
 6 {
 7     [SqlSugar.SugarTable("departmentintro")]
 8     public  class DepartmentintroData
 9     {
10         public int DepartmentId { get; set; }
11         public string DepartmentNo { get; set; }
12         public string DepartmentName { get; set; }
13         /// <summary>
14         /// 部門簡介
15         /// </summary>
16         [SqlSugar.SugarColumn(IsTranscoding =true)]
17         public string DepartmentBlurb { get; set; }
18 
19     }
20 }
View Code
最后是官方論壇的解決方案,也貼在下面了。MySql插入表情方案,感謝支持。如有問題請及時溝通聯系。

 補充說明:實體特性API

ColumnName  定義數據庫表字段的真實名稱,當一樣的時候可以不定義該特性
IsIgnore   不作數據庫操作,true將不會進行查詢、添加等操作
IsPrimaryKey  標識是否為主鍵,更新的時候會根據主鍵值判段更新哪條,當InitKey為Attribute時一定要加該特性不然找不到主鍵
IsIdentity  是否為自增長
ColumnDescription  列描述
Length  長度,生成表會用到
IsNullable 是否可空,生成表會用到
OldColumnName  修改列名,生成表會用到
ColumnDataType  自定義生成的數據類型,生成表會用到


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM