亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

jdbc連接Oralce數據庫,插入記錄報錯:java.sql.SQLException: 無效的列索引

jdbc連接Oralce數據庫,插入記錄報錯:java.sql.SQLException: 無效的列索引

Castle__ 2016-06-13 12:02:10
import?dao.EMPDao; import?model.Emp; public?class?EmpActive?{ EMPDao?empDao?=?new?EMPDao(); public?void?addEmp(Emp?emp){ String?sql?=?"?INSERT?INTO?EMP?(?ENAME,?JOB,?MGR,?HIREDATE,?SAL,?COMM,?DEPTNO)?VALUES?(??,?,?,TO_DATE('13-6月?-16',?'DD-MON-RR'),?,?,??)"; Object?[]?obj?=?{emp.getEname(),emp.getJob(),emp.getMgr(),emp.getSal(),emp.getComm(),emp.getDepino()}; empDao.addUpDel(sql,?obj); } }import?java.sql.SQLException; public?class?EMPDao?extends?BaseDao?{ //增刪改通用方法 public?void?addUpDel(String?sql?,?Object[]?obj){ conn?=?getConnection(); try?{ pstmt=conn.prepareStatement(sql); if(null!=obj?||?0!=obj.length){ for?(int?i?=?0;?i?<?obj.length;?i++)?{ pstmt.setObject(i,?obj[i]); } } pstmt.execute(); }?catch?(SQLException?e)?{ e.printStackTrace(); }?finally?{ closeAll(); } } }import?java.sql.Connection; import?java.sql.DriverManager; import?java.sql.PreparedStatement; import?java.sql.ResultSet; import?java.sql.SQLException; import?util.PropertiesUtil; public?class?BaseDao?{ private?final?static?String?DRIVER=PropertiesUtil.getValue("DRIVER"); private?final?static?String?URL=PropertiesUtil.getValue("URL"); private?final?static?String?USERNAME=PropertiesUtil.getValue("USERNAME"); private?final?static?String?PASSWORD=PropertiesUtil.getValue("PASSWORD"); protected?Connection?conn?=?null?; protected?PreparedStatement?pstmt?=?null; protected?ResultSet?resultSet?=?null?; protected?Connection?getConnection(){ try?{ Class.forName(DRIVER); conn=?DriverManager.getConnection(URL,?USERNAME,?PASSWORD); }?catch?(ClassNotFoundException?|?SQLException?e)?{ e.printStackTrace(); } return?conn; } protected?void?closeAll(){ if(resultSet!=null) try?{ resultSet.close(); if(pstmt!=null) pstmt.close(); if(conn!=null) conn.close(); }?catch?(SQLException?e)?{ e.printStackTrace(); } } // public?static?void?main(String[]?args)?{ // BaseDao?bd?=?new??BaseDao(); // System.out.println(bd.getConnection()); // bd.closeAll(); // } }import?java.util.Date; import?control.EmpActive; import?model.Emp; public?class?View?{ public?static?void?main(String[]?args)?{ EmpActive?ea?=?new??EmpActive(); Emp?emp?=?new?Emp(7566,?"JULLY",?"SALE",?7698?,?new?Date()?,?1600.00,?300.00,?30); ea.addEmp(emp); } }求大神指出錯誤之處~
查看完整描述

3 回答

?
Castle__

TA貢獻9條經驗 獲得超5個贊

哈哈找到問題了,PreparedStatement參數列表從1開始。

?pstmt.setObject(i,?obj[i]);

這個地方寫錯了,應該是pstmt.setObject(i+1,?obj[i]);

查看完整回答
3 反對 回復 2016-06-13
?
Castle__

TA貢獻9條經驗 獲得超5個贊

補充說明:emp表就是用的oracle里面scott賬戶下的測試表emp,這里沒有貼出來,大神可以用自己的oracle看一下,幫忙分析,我的代碼哪里出錯了。

查看完整回答
1 反對 回復 2016-06-13
?
qq___524

TA貢獻171條經驗 獲得超74個贊

INSERT?INTO?EMP?(?ENAME,?JOB,?MGR,?HIREDATE,?SAL,?COMM,?DEPTNO)這里面有7列,而obj數組里面只有六個元素

查看完整回答
反對 回復 2016-06-13
  • 3 回答
  • 0 關注
  • 2177 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號