和你连接有关系,rs和psmt
在Oracle初始化参数文件init.ora中修改:
processes和open_cursors的值,改大一点
在Oracle初始化参数文件init.ora中修改:
processes和open_cursors的值,改大一点
解决方案 »
- 请大家帮忙,如何实现oracle包中自定义数组的赋值,谢谢!!
- 询问一个关于left join 的问题,百分求解
- 关于索引和唯一约束的问题
- racle.sql.BLOB blob = (oracle.sql.BLOB) b;这里报classCastException
- 请教 select count(*) SQL 效率问题
- 请教一个比较棘手的视图问题!分不多,请高手进来看下
- 如何用C#对oracle中的数据进行增,删,和读取?只剩下10分了。
- 求救!怎样建立多表的Oracle视图!
- 安装不成功
- 大神来看下oracle sql语句 when user() 缺少关键字
- 关于Procedure里Create table的问题
- 我用的Developer/2000开发,数据块里的"from子查询"是怎么用法?(特急!在线等待!)
另外init.ora文件在哪里,我好像没找到。
你的循环里面执行的sql肯定使用了隐式游标.
改变你的处理方法
try {
String temp = null;
String tempM = "M";
String tempU = "U";
String tempName = "通讯板";
String faultName1[] =
{
"D6201",
"D6209",
"D62010",
"D62011",
"D62012",
"D62013",
"D62014",
"D62015",
"D62016" };
String mtxb[] = { "", "", "", "", "", "", "", "", "" };
querySQL =
"select * from MONITOR_FAULT_VIEW where equipmentid = ? and faultname = ?";
psmt = conn.prepareStatement(querySQL);
for (int j = 0; j < faultName1.length; j++) {
//psmt = conn.prepareStatement(querySQL);
psmt.setInt(1,deviceId);
psmt.setString(2,faultName1[j]);
rs = psmt.executeQuery();
if (rs.next()) {
mtxb[j] = rs.getString("tempresultvalue");
}
}
rs.close();
rs = null;
psmt.close();
psmt = null;
int k = 0;
String[] faultName2 =
{
"D6219",
"D6202",
"D6203",
"D6204",
"D6205",
"D6206",
"D6207",
"D6208",
"D62016" };
String[] utxb = { "", "", "", "", "", "", "", "", "" };
psmt = conn.prepareStatement(querySQL);
for (int j = 0; j < faultName2.length; j++) {
//querySQL =
// "select * from MONITOR_FAULT_VIEW where equipmentid = ? and plcfaultname = ?";
//psmt = conn.prepareStatement(querySQL);
psmt.setInt(1,deviceId);
psmt.setString(2,faultName2[j]);
rs = psmt.executeQuery();
if (rs.next()) {
utxb[j] = rs.getString("tempresultvalue");
}
}
while (k < 9) {
Object[] data = new Object[4];
if (k == 0) {
data[0] = "面板通讯";
data[1] = mtxb[k];
data[2] = "一级主通讯故障";
data[3] = utxb[k];
rows2.add(data);
k++;
continue;
}
temp = tempM.concat(Integer.toString(k));
temp = temp.concat(tempName);
data[0] = temp;
data[1] = mtxb[k];
temp = tempU.concat(Integer.toString(k));
temp = temp.concat(tempName);
data[2] = temp;
data[3] = utxb[k];
rows2.add(data);
k++;
}
rs.close();
//rs = null;
psmt.close();
//smt = null;
} catch (Exception e) {
e.printStackTrace();
}
SELECT语句用于从数据库中查询数据一般都要用到游标:
单条记录:select ... into ... 隐式游标
多条记录:cursor 显式游标
隐式游标在查询结束之后自动关闭,而显式游标则需要显式打开和关闭
Action: Modify the program to use fewer cursors. If this error occurs often, shut down Oracle, increase the value of OPEN_CURSORS, and then restart Oracle.