解決中文儲存進資料庫超過字段最大容量的問題

2021-08-01 00:00:20 字數 949 閱讀 5514

問題描述:

db2資料庫中一varchar型別欄位中插入一條string型別資料,程式使用string.length()來進行資料的長度校驗,如果資料是純英文,沒有問題,但是如果資料中包含中文,校驗可以通過,但是在資料入庫時經常會報資料超長。

問題分析:

既然問題是資料超長,那麼問題應該就是出在資料長度校驗上,也就是出在string.length()這個方法上。

解決方式:

既然是判斷資料長度時以字元為標準導致出錯,那麼思路就很明確了,在進行資料長度校驗時,取資料的位元組長度

/**  

* 判斷傳進來的字串,是否

* 大於指定的位元組,如果大於遞迴呼叫

* 直到小於指定位元組數

* @param s

* 原始字串

* @param num

* 傳進來指定位元組數

* @return string 擷取後的字串

*/ public static string substr(string s,int num)

return s;

}

最後字串處理如下

string error = ttbworkflowui.merrors.getfirsterror();

int i = error.indexof("

"); int j = error.lastindexof("

"); error = error.substring(i + 4, j);

error = error.replaceall("

", ",");

try

} catch (unsupportedencodingexception e)

解決資料庫儲存中文亂碼問題

輸入中文時資料庫中顯示為亂碼,提供以下兩種解決方案 1.修改字段型別 varchar是採用單位元組存數 nvarchar採用的是unico編碼,儲存兩個位元組 乙個英文本母存varchar格式,佔乙個位元組 存nvarchar佔2個位元組。varchar也可以儲存中文,如果系統不支援中文,就會出現亂...

解決資料庫欄位被篡改之儲存過程

最近sql注入攻擊比較猖狂,比較常見的一種情況是在相關的字段中填入一段內容,導致 內容顯示不正常,以下的儲存過程可以快速解決此問題 1 建立儲存過程 begin declare cur cursor for select name from syscolumns where id select id...

oracle資料庫in 超過1000 的解決方案

專案中遇到sql語句的in超過1000這個問題,再次總結一下解決方案 使用動態拼接sql語句in or in 效能太差,再次不多說 使用表代替in中的字串,事務問題 由2引申出使用oracle的臨時表,使用臨時表,想怎麼查怎麼查。該問題中,本人用的是事務臨時表 在這詳細說一下,臨時表 oracle的...