如何通過PreparedStatement
添加PostgreSQL複合類型?
複合類型是:JDBC PreparedStatement:如何添加複合類型
CREATE TYPE fullcontact AS (address address,contacts contact);
ALTER TYPE fullcontact OWNER TO postgres;
COMMENT ON TYPE fullcontact IS 'Describe a type for a contact info with phone, email, and address';
我想添加它通過
FullContact fc = (FullContact)value;
PGobject pgObj = castToPGObject(fc);
PreparedStatement st = [this is a reference i obtain from a method];
st.setObject(index,pgObj);
的castToPGObject
的FullContact
實例轉換到行格式。這是一個實例的轉換結果:
ROW(ROW('Italy','Country',null,10,'1202'),ROW('email','aPhone','aMobile',null))
使用它就像一個魅力的INSERT,但是當我嘗試使用PreparedStatement
失敗。 我已經看了JDBC驅動程序的代碼,它似乎不支持STRUCT類型的PostgreSQL。我錯過了什麼嗎?
從setObject
我得到,而不是正確的轉換PreparedStatement
增加'
它不應該。例如,而不是上面的行我得到:
'ROW(ROW(''Italy'',''Country'',null,10,''1202''),ROW(''email'',''aPhone'',''aMobile'',null))'
而這失敗,因爲它不會再被識別爲一個結構。我也嘗試加入
st.setEscapeProcessing(false);
但仍然添加'
。我需要使用PreparedStatement
,因爲我在定義自定義usertype時遇到了一個問題。
我正在考慮加入JDBC Driver項目來嘗試添加對STRUCT對象的支持。
對不起......問題不在於SQL本身,而在於使用了準備好的語句,它沒有給我機會來設置結構類型......我的意思是,當我將正確的字符串添加到一個轉義發生給我錯誤的結果,我已經在我的問題上報告了......星期一我會嘗試發佈一個完整的示例......但是,感謝您對語言的支持和更正;-) – quonn 2012-03-18 00:06:13