2008-09-30

Java Type vs PostgreSQL Type (一) 字元型別之對應

String:
在測試String格式前,首先在postgre建立一個資料表。

資料表語法:
CREATE TABLE chartypes
(
id serial NOT NULL,
"char" character(50),
charvary character varying(50),
"text" text,
CONSTRAINT chartypes_pkey PRIMARY KEY (id)
)


程式原始碼:
JavaStringType.java:

package zasax.type.chartypes;

//引用套件
import java.io.IOException;
import java.sql.Connection;
import java.sql.SQLException;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.util.logging.Level;
import java.util.logging.Logger;
import zasax.conn.PostgreConnection;

/**
*
* @author YiCheng, Hsiao
*/
public class JavaStringType {

//宣告變數
private Connection conn;
private PreparedStatement pstmt;
private ResultSet rs;
private String setSQL = "Insert into chartypes (char,charvary,text) values (?,?,?)";
private String getSQL = "Select * from chartypes";

public static void main(String[] args) {
JavaStringType jst = new JavaStringType();
jst.setStringValue("Hello", "Java", "World");
//Hello Java World
System.out.println(jst.getStringValue());
}

//字串值存入資料庫的方法
public void setStringValue(String str1, String str2, String str3) {
try {
PostgreConnection pc = new PostgreConnection();
this.conn = pc.getConnection();
this.pstmt = conn.prepareStatement(setSQL);
pstmt.setString(1, str1);
pstmt.setString(2, str2);
pstmt.setString(3, str3);
pstmt.executeUpdate();
pstmt.close();
conn.close();
} catch (IOException ex) {
Logger.getLogger(JavaStringType.class.getName()).log(Level.SEVERE, null, ex);
} catch (ClassNotFoundException ex) {
Logger.getLogger(JavaStringType.class.getName()).log(Level.SEVERE, null, ex);
} catch (SQLException ex) {
Logger.getLogger(JavaStringType.class.getName()).log(Level.SEVERE, null, ex);
}
}

//從資料庫讀出字串值的方法
public ResultSet getStringValue() {
String output = "";
try {
PostgreConnection pc = new PostgreConnection();
this.conn = pc.getConnection();
this.pstmt = conn.prepareStatement(getSQL);
this.rs = pstmt.executeQuery();
while(rs.next()){
output += rs.getString("char");
output += "\t";
output += rs.getString("charvary");
output += "\t";
output += rs.getString("text");
output += "\n";
}
} catch (IOException ex) {
Logger.getLogger(JavaStringType.class.getName()).log(Level.SEVERE, null, ex);
} catch (ClassNotFoundException ex) {
Logger.getLogger(JavaStringType.class.getName()).log(Level.SEVERE, null, ex);
} catch (SQLException ex) {
Logger.getLogger(JavaStringType.class.getName()).log(Level.SEVERE, null, ex);
}
return rs;
}
}

實際測試程序:

儲存String值方式:
先經過setStringValue的方法將三個字串值傳入方法內,透過方法的內部的pstmt.setString的方法,
分別將三個值儲存至資料庫裡的三個型別,分別是char(charater(50)), charvary(character varying(50)), text text等欄位。


讀取String值方式:
將資料庫的三個欄位值,分別讀取回程式,然後將三個字串值都放置一個字串,
最後再印出此字串。
印出值為Hello(包含前面約空50格的位置,如上圖註解印出部分) Java World。
會發生類似這狀況原因為 character 這個型別為,固定長度的字元屬性,所以不
管後面有多少個空白字元,都會將之印出。

整理表格如下:

Java 型別 PostgreSQL 型別 特性
String characher(n) 長度固定的不可變字元陣列
characher varying(n) 長度固定的可變字元陣列
text 長度無限制的可變字元陣列


2008-09-26

PostgreSQL 伺服器效能調校精靈(工具)

EnterpriseDB

是眾多全球專注在提供 PostgreSQL 資料庫商業化產品,
及其 PostgreSQL 資料技術服務公司之一的全球性企業.

調校 PostgreSQL 伺服器的效能, 不是一般人可以短時間學習的 ...

EnterpriseDB 伺服器效能調校精靈
EnterpriseDB (PostgreSQL商業化產品) ,
該工具由 EnterpriseDB 公司提供給 PostgreSQL 使用者,
利用該公司 EnterpriseDB 公司的 Dynatune 技術,
依據您的硬體資源與您選用資料庫系統的用途,
來協助配置您的 PostgreSQL 伺服器的主要設定檔

  • postgresql.conf
當中融入了 EnterpriseDB 對 PostgreSQL 的資深技術與經驗.

註: PgAdmin III 的專案主持人與 PostgreSQL 眾多的開發者,
目前仍為 EnterpriseDB 的員工.




在本月 PostgreSQL 進行安全性更新的同時 ...
若您是使用 Windows 版本 8.3 的使用者,
且也一並安裝了
Application Stack Builder 2.0 (應用程序堆疊建構器)

並勾選了如下的畫面進行網路下載與安裝:
(Enterprise Tuning Wizard for PostgreSQL)


那你即可於開始-程式集的選單裡找到 PostgreSQL 資料夾來啟動它!
首先, 您必須選擇要進行調校的 PostgreSQL 伺服器標的位置:



再來請選擇您這部 PostgreSQL 伺服器的用途, 共有三個選項:
  • Development : 這伺服器是給開發者進行開發與測試用的,
    PostgreSQL 會使用最小量的記憶體運作.
  • Mixed : 這伺服器包含著正式上線運作的應用程序( Web/應用伺服器).
  • Dedicated : 這伺服器完全只運作為資料庫伺服器角色,
    PostgreSQL 會使用全部有效的記憶體最佳化.



這個畫面是個大重點:
你可以按 "Review" 來了解這精靈對 postgresql.conf 做了那些調校,
被更動的地方, EnterpriseDB 貼心的用高亮點的文字色彩來標示給您,
意思就是您可以對更動的選項做一個了解後,
"抄"到 PostgreSQL 伺服器的首選平台: GNU/Linux 上~呵
在按下一步後, 這結果會自動取代當前的 postgresql.conf 內容,
並對原本的 postgresql.conf 備份成帶日期的檔案名稱.
想取消可以按上一步, 或直接關閉就不會生效囉.


(Review 的預看畫面)


最後別忘了,
任何修改 postgresql.conf 內容的動作都必須重新啟動伺服器 !

相關的站內文章:
Ruby 這把火也開始延燒到 PostgreSQL 開發團隊

2008-09-24

PostgreSQL 8.3.4, 8.2.10 更新通告

PostgreSQL 在 2008-09-21 提供了當前各子版次的更新包括 :
8.3.4 , 8.2.10 , 8.1.14 , 8.0.18 和 7.4.22
在過去至今的三個月中這些版本, 修復 30 多個小問題和安全性修補

當您在進行更新的同時, DBA 管理者應該考量您當前運作中的
PostgreSQL 資料庫伺服器, 必須進行停機更新的時程規畫。

此外,受到世界時區的影響, 必要進行更新位於這些國家時區的主機:
阿根廷,巴哈馬,巴西,毛里求斯,摩洛哥,巴基斯坦,巴勒斯坦,和巴拉圭。
應該升級,盡快避免不恰當的計算日光節約時間。

更多的修正細節, 請見的發行說明。
http://www.postgresql.org/docs/8.3/static/release-8-3-4.html


正如先前我們所宣布的,只有版本 8.2.10 和 8.3.4 的 Windows二進制版本釋出,
因為我們不再支持 8.0 和 8.1 的 Windows 版本

完整官網全文:
http://www.postgresql.org/about/news.1003

2008-09-22

(教學簡報分享) PostgreSQL 與 Java JDBC

老魚好久沒更新這的網誌了, 不是老魚忘了成立這的初衷,
老魚默默的學習著它, 也經常思索著 ...


要如何才能獲得一個在台灣真正以全"自由軟體"為教育出發點,
且真的是非營利的 IT 教育發展研究基金會呢 ? ...
我可是很樂意當終身教職志工的 !!!

J2005.Java.JDBC.PostgreSQL(資料庫連結與PostgreSQL)

全螢幕觀看:
http://docs.google.com/Present?docid=ddgj2m37_200cpxgn7&skipauth=true

PostgreSQL & Google-Analytics Running...

::Planet PostgreSQL::

PostgreSQL Information Page

PostgreSQL日記(日本 石井達夫先生Blog)

PostgreSQL News

黑喵的家 - 資料庫相關

Google 網上論壇
PostgreSQL 8 DBA 專業指南中文版
書籍內容討論與更多下載區(造訪此群組)
目錄下載: PostgreSQL_8 _DBA_Index_zh_TW.pdf (更新:2007-05-18)

全球訪客分佈圖(Google)

全球訪客分佈圖(Google)