cownewsql發布新版本了,這個版本的推出標誌著cownewsql能正式應用於開發實際了。
本版更新列表:
1、增加了對create table、drop table、create index和dropindex的支援。
2、修改了n多bug,使用從各方收集到的近百條各種複雜的sql語句全面測試通過!!!
3、完善開發文件,語法規則、sql例子、函式列表、使用方法一應俱全。
4、支援jdk1.4或更高版本。
cownewsql簡介:
由於種種原因,各個資料庫系統的sql語句語法以及支援的函式都不盡相同,這造成了如下兩個問題:(1)使得系統在多個不同資料庫之間移植變得非常困難,特別是需要維護多個資料庫版本的時候;(2)開發人員必須對各種資料庫的語法差異非常了解,這加大了開發難度。
雖然hibernate通過hql等技術部分的解決了跨資料庫移植的問題,但是在對效能要求比較高的場合還是需要直接使用sql語句訪問資料庫的,在這種情況下如何編寫能被不同資料庫支援的sql語句就成了。目前解決這種差異的最常用的技術就是sql語句翻譯,使用sql翻譯器可以將sql語句翻譯為在不同的資料庫中支援的特定平台的sql語句。cownewsql就是這樣一款產品。
cownewsql簡化了跨資料庫產品的開發,比如取當前日期在mssql中是「select getdate()」,在mysql中是「select now()」,在oracle中是「select sysdate from dual」,使用cownewsql以後您只要使用「select now()」,那麼cownewsql就會為您自動將其翻譯為對應資料庫平台支援的sql語句,而且cownewsql的相容性也非常好,比如「select now()」寫成「select getdate()」同樣可以被正確的翻譯;取資料庫前10條記錄,在mssql中是「select top 10 from t_1」、在mysql中是「select limit 0, 10 」、在oracle中是「select from dual where rownum <= 10」,使用cownewsql以後您只要使用「select top 10 from t_1」,那麼cownewsql就會為您自動將其翻譯為對應資料庫平台支援的sql語句。
cownewsql還通過變通的方式對目標資料庫不直接支援的語法進行了支援。比如mysql是不支援「select * from t1 where fid in(select fid from t2 limit 0,5)」這樣在子查詢中的limit語句的,cownewsql通過將子查詢進行二次結果集包裝的方式巧妙的對其進行了支援,「delete from t_saleinvoice where fid in(select top 5 fparentid from t_saleinvoicedetails)」通過cownewsql的翻譯以後就成了「delete from t_saleinvoice where fid in (select * from(select fparentid from t_saleinvoicedetails limit 0, 5 ) t_temp_sub)」這樣被mysql支援的語法了;mysql中沒有提供計算兩個日期之間月份差異的函式,cownewsql通過組合其他日期函式的方式模擬了這個函式,這樣使用者只要使用months_between函式即可了,無需關心內部的差異。
cownewsql支援如下幾種型別的sql語句:createtable/droptable/createindex/dropindex/select/insert/delete/update;支援子查詢、join、union等高階的sql特性;支援日期(包括取當前日期、從日期中提取任意部分、計算日期差異、日期前後推算等)、數學(包括取絕對值、取pi值、四捨五入、對數計算、隨機數等)、字串(包括取子字串、取字串長度、字串截斷、大小寫轉換等)、基本資料處理(包括數字字串互轉、日期轉字串、非空判斷等)等函式。
跨庫事務解決方案
1 考慮使用jta等支援分布式事務的事務管理器 這種方案的優勢就是直接有現成的解決方案,一般的j2ee伺服器都提供了jta的相關的實現。比較明顯的問題就是解決方案太重量級。一般jta除了伺服器要支援,對應的資料庫服務廠商一般也要提供相應的商業支援,主要是提供基於 xaresource jdbc驅動,...
資料庫亂碼解決方案
oracle 資料庫亂碼解決方案 你插入資料的時候,用 轉變字串的亂碼函式 param str return public string getstr string str catch exception e 向bean裡面賦值 public void setaction string action...
資料庫死鎖解決方案
一 活鎖 如果事務t1封鎖了資料r,事務t2又請求封鎖r,於是t2等待。t3也請求封鎖r,當t1釋放了r上的封鎖之後系統首先批准了t3的請求,t2仍然等待。然後t4又請求封鎖r,當t3釋放了r上的封鎖之後系統又批准了t4的請求,t2有可能永遠等待,這就是活鎖的情形。避免活鎖的簡單方法是採用先來先服務...