最近乙個專案用的是sybase的資料庫。。。那叫乙個蛋疼。。。搞傷的了。。。
先是亂碼問題:
這是個老生常談的問題。網上說連線字串後面加個charset=cp850就行了。。我試了下不行。。。然後又說什麼cp936。。。然後我一查我們的sybase伺服器還沒cp936.。。然後又是安裝。。安裝倒是挺容易的。在命令列裡面進行sybase安裝資料夾下。例如:
cd sybase\ charsets\ cp936
d:\sybase\charsets\cp936>charset -usa -ppassword –sserver_name binary.srt cp936
就行了。
可以在cmd裡使用isql -u -p 進行dos操作頁面。。後面分別跟上資料庫使用者名稱密碼
select name,id from syscharsets可檢視已安裝的所以字符集
sp_helpsort 可檢視預設字符集
sp_configure "default character set id",1 可設定預設字符集。。後面的引數值為對應編碼在syscharsets表裡的id值。設定之後要重啟伺服器。。第一次重啟會報錯。第二次正常。
dump database dbname to "d:\db.dup " 備份資料庫
load database dbname from "d:\db.dup " 還原資料庫
select @@client_csname 檢視客戶端編碼
再回過頭說編碼問題。我裝了cp936改下連線字串。。還是不行。再查。。說eucgb可以。。。還是不行。我又裝了utf8還是不行。。。後來看到一篇很短小的文章覺得這個說的比較靠譜。
sybase中文字元編碼
資料庫編碼常用有2種:iso_1和cp_850。若為iso_1則在配jdbc連線資料來源時使用eucgb(最常用),寫法為jdbc:sybase:tds:10.20.10.21:4100/dmis_dict?charset=eucgb,查詢結果集不需處理即可正常顯示;若資料庫編碼為cp_850,在配資料來源時使用jdbc:sybase:tds:10.20.10.4:5000/dbwddyx?charset=iso_1,查詢結果要用iso_8859_1轉換一下,new string(temp.getbytes("iso-8859-1"),"gbk")。 (
我的專案編碼是utf-8。。現在想解決問題的只有2中方法。一種就是修改預設編碼。另外一種就是手動轉換。但是修改預設編碼的話對資料庫有影響。而且我們是在客戶原有的業務系統做二次開發。不可能修改編碼的。。最後只有把編碼寫入配置檔案。在程式中手動轉碼。
還有就是有的時候用jconn3.jar包會出現事務未關閉的問題。最好用jtds。。。jtds同樣可以設定charset不過不是跟在連線字串後面。而是放在param屬性裡面。
另外sybase sql語句的語法我發現近似於sqlserver 。。。。
還有就是sybase伺服器有user connection的限制。。這個也可以用isql命令進入dos操作環境後進行配置。
sp_configure "number of connections",2oo後面的200就是你所設定的使用者連線數。。如果去除引數改命令可檢視當前所設定的使用者連線數。。
Sybase資料庫使用總結
1 對xml型別的字段作為查詢條件 xmlvalue欄位中儲存的內容 1.0 com.ciat.mobile.hkmobileegov zakzak 查詢的儲存過程 alter procedure dba xml select condition begin select xmlid,xmlvalu...
輸入mysql v Mysql資料庫使用筆記
1 mysql的安裝 linux版本 2 遠端連線 windows 步驟 一 開啟mysql控制台,輸入 use mysql 二 輸入 show tables 三 輸入 select host from user 四 輸入 update user set host where user root 五...
sybase資料庫學習筆記(一)
sybase資料庫由系統資料庫 使用者資料庫 資料庫裝置和輔助檔案組成。1 系統資料庫 sybase資料庫是多個資料庫結構的資料庫管理系統。分為系統資料庫和使用者資料庫。系統資料庫是在安裝的時候自動建立的,包括一下內容 master資料庫 全面控制和管理使用者資料庫及sybase上的一切操作temp...