如何把java中的arrayList转化为oracle中的数组(array) --转
来源:互联网 发布:淘宝最美网红 编辑:程序博客网 时间:2024/05/23 01:59
在写存储过程中经常会遇到把java中的arrayList转化为oracle中数组,(arrayList中存的是一些java对象)简单总结一下.
例:arrayList中存在一些people对象
1.首先要在数据库中建立相应的java对象和数组,
如: /* 和java对象对应的数据库对象 */
CREATE TYPE peopleOracleObject AS OBJECT
(
peopleOracleID NUMBER(8) ,
nameOracle varchar(50) ,
ageOracle Number(3)
)
/ 数据库中的array
CREATE TYPE people_Oracle_LIST AS VARRAY(500) OF peopleOracle ;
/
2.将java中的arrayList转化
private static ARRAY getOracleArray(Connection con, String Oraclelist,
ArrayList objlist) throws Exception {
ARRAY list = null;
if (objlist != null && objlist.size() > 0) {
StructDescriptor structdesc = new StructDescriptor(
"peopleOracleObject", con);
STRUCT[] structs = new STRUCT[objlist.size()];
Object[] result = new Object[0];
for (int i = 0; i < objlist.size(); i++) {
result = new Object[2];
result[0] = new Long(((people)(objlist.get(i))).getPeopleID());
result[1] = new Long(((people)(objlist.get(i))).getPeopleName());
result[2] = new Long(((people)(objlist.get(i))).getPeopleAge());
structs[i] = new STRUCT(structdesc, con, result);
}
ArrayDescriptor desc = ArrayDescriptor.createDescriptor(Oraclelist,
con);
list = new ARRAY(desc, con, structs);
} else {
ArrayDescriptor desc = ArrayDescriptor.createDescriptor(Oraclelist,
con);
STRUCT[] structs = new STRUCT[0];
list = new ARRAY(desc, con, structs);
}
return list;
} // function
3./*把转换后的数组加到存储过程中*/
public static int updateADInfo(ArrayList peoleList, int ID){
Connection con = null;
CallableStatement stmt = null;
int backVal;
try {
con = pool.getConnection();
if (con != null) {
stmt = con.prepareCall("{call updatePeople(?,?,?)}");
ARRAY adArray = getOracleArray(con, "people_Oracle_LIST",
peoleList);
((OracleCallableStatement) stmt).setARRAY(1, adArray);
stmt.setInt(2, ID);
stmt.registerOutParameter(3, java.sql.Types.INTEGER);
stmt.execute();
} else {
backVal = 1;
}
} catch (Exception e) {
e.printStackTrace();
} finally {
pool.freeDBResource(con, stmt, null);
}
return backVal;
}
4.存储过程中调用
CREATE OR REPLACE PROCEDURE NAD_SP_CreateWebCostToAd(
p_peopleArray IN people_Oracle_LIST,
p_ID IN number,
p_out OUT VARCHAR2
)
AS
VpeopleID number(8) :=0;
VpeopleName varchar(50):=0;
Vage number(3):=0;
begin
for i 1...p_peopleArray.count loop
peopleObj :=p_peopleArray(i);
VpeopleID := peopleObj.peopleOracleID;
VpeopleName := peopleObj.nameOracle;
Vage :=peopleObj.ageOracle;
.................
end loop;
commit;
EXCEPTION
WHEN OTHERS THEN
p_out:='-1' || SQLERRM;
ROLLBACK;
END;
/
SHOW ERRORS
- 如何把java中的arrayList转化为oracle中的数组(array) --转
- 如何把java中的arrayList转化为oracle中的数组(array) --转
- java中的arrayList传入oracle中的以数组(array)为参数的存储过程
- 如何把Vector ArrayList等类型转化为数组
- 将ArrayList转化为数组array
- Java中的Array&ArrayList
- 把页面中的JSON转化为JAVA
- 如何把oracle中的select sysdate from dual转化为SQL Server中的语句?
- Java中的ArrayList数组
- Array转化为ArrayList(存储的是二维数组,雨水)
- 【Java】ArrayList<String>转化为String数组
- java 把 byte[] 数组转化为String
- Java数据类型转化为Oracle中的Number类型
- 在Java中如何将一个数组Array转换为ArrayList
- 如何把Java源文件转化为可执行文件
- Simple-Java—Collections(二)Java中如何把数组转换为ArrayList
- 将json字符串转化为json数组,以及转化为java中的集合
- java中如何把一个array复制到arrayList里
- 毒乜{’寻找你
- 停车场管理模拟--测试一下你的C语言的水平
- 关于 Asp.Net Forums 2.4 For .Net Framework 2.0 - Asp.Net Forums (venjiang)
- Sybase DB-Library For Linux
- (三)边做边发---产销系统---详细设计--代码实现--更新时间2007/8/1--提供整站完整源代码下载
- 如何把java中的arrayList转化为oracle中的数组(array) --转
- 深度解析VC中的消息(下)
- 深度解析VC中的消息(中)
- innerHTML 中解决javascript问题
- 深度解析VC中的消息(上)
- JZlib的用法 ( by quqi99 )
- 框架页中安全退出
- Ajax的实用技术——用户的注意力从页面的其他区域到转移选择的图片
- 数组