2012-04-12 5 views
0

이 코드는 데이터베이스에 값을 삽입하는 곳입니다. 잘못된 커서 상태 예외가 나타납니다. 이유는 무엇입니까 ... 나는 다른 테이블에 삽입해야하는 테이블 (Select 문)에서 일부 값을 먼저 선택합니다. 내가 여기에이 삽입 작업을하고있는 중이 야 ..유효하지 않은 커서 상태 얻기 (SQL 예외)

<%@ page language="java" contentType="text/html; charset=ISO-8859-1" 
    pageEncoding="ISO-8859-1"%> 
<%@page import="java.sql.*"%> 
<%@page import="java.util.*"%> 
<%@page import="models.app.*"%> 
<%-- <%@page import="MyPackage.*;"%> --%> 

<% 
String id = request.getParameter("employeeidname"); 
int offshore = Integer.parseInt(request.getParameter("offshorename")); 
String email = request.getParameter("emailidname"); 
String profile = request.getParameter("profilename"); 
String empname = request.getParameter("employeenamename"); 
String projectname = request.getParameter("projectname"); 


/* HandleConnections con = new HandleConnections(); */ 
Connection con=null; 
try{ 
    String driver = "sun.jdbc.odbc.JdbcOdbcDriver"; 
Class.forName(driver); 

String db = "jdbc:odbc:Practice_Database"; 
con = DriverManager.getConnection(db,"",""); 
ResultSet rs=null; 
Statement st2 =con.createStatement(); 
Statement st3 =con.createStatement(); 
Statement st = con.createStatement(); 
String sql1="SELECT Project_ID FROM Project_Table WHERE Project_Name = '"+projectname+"'"; 
rs= st2.executeQuery(sql1); 
String sql ="INSERT into Emp_Product_Project_Mapping(Emp_IDFK, Project_IDFK) values('"+id+"',"+rs.getInt("Project_ID")+")"; 
int j = st3.executeUpdate(sql); 
/* conn = con.getConnection(); */ 

SendMail send = new SendMail(); 
Generator gen1 = new Generator(); 
String temp = gen1.gen(8); 
send.sendmail("[email protected]", email, temp); 

String sql2= "INSERT into Employee_Table(Emp_ID,F_Name,Profile,Offshore,Email,Password) values('"+id+"','"+empname+"','"+profile+"',"+offshore+",'"+email+"','"+temp+"')"; 
int i = st.executeUpdate(sql2); 
if(i==1) 
out.println("Values inserted successfully"); 
} 
catch(Exception e){ 
    System.out.print(e); 
    e.printStackTrace(); 
    } 


%> 

에게 내가 값을 얻고 곳에서 URL 것은 ::

http://localhost:8080/2_8_2012/jsp/Addemployeedatabase.jsp?employeeidname=A12&offshorename=2&[email protected]&profilename=GL&employeenamename=Mayur&projectname=INFRASTRUCTURE 

예외 :: 사용하여 해결

[Microsoft][ODBC Driver Manager] Invalid cursor statejava.sql.SQLException: [Microsoft][ODBC Driver Manager] Invalid cursor state 

: :

while(rs.next) to retrieve values from result set... 
+0

을 조심? 다른 사람이 주석을 달고 각 문장을 실행 해 보았습니까? 어떤 데이터베이스에 연결하고 있습니까? –

+0

내 마지막 insert 문, 즉 Insert into Employee_Table .. 잘 작동합니다 ... 내가 다른 모든 것을 주석 처리 할 때. 나는 st2와 st3 문장을 가진 prob가 있다고 생각한다 ... –

+0

나는 각 문장을위한 분리 된 연결 변수를 가질 필요가있다? –

답변

0

문자 그대로 원하는 경우 다중 독립 명령문을 실행하면 일반적으로 연결 풀을 통해 관리되는 여러 연결 객체가 필요합니다. 그 모든 드라이버가 연결 당 여러 개의 문을 지원하지만

가장 특히 JDBC-ODBC 브릿지 오류를 제공합니다 문

+0

나는 gt 그 ... 동안 (rs.next()) 성명서가 누락되었습니다 ... 비록 당신의 대답을 주셔서 감사합니다. 무슨 말을 하려는지 ........ –

+0

@ user1230183 :이 대답이 도움이된다면, 그것들은 올바른 것으로 표시합니다 (즉, 대답) –

관련 문제