問題描述:
向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的...