2012-04-12 68 views
0

私はこのコードを持っています。データベースにいくつかの値を挿入しています。私は無効なカーソル状態例外を取得しています。理由は何か...私は最初に別のテーブルに挿入する必要があるテーブル(Selectステートメント)からいくつかの値を選択しています。 :私は私が値を取得していますどこからURLは::無効なカーソル状態(SQL例外)

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 

ある

...こっち
<%@ 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(); 
    } 


%> 

を2つの挿入操作をしています:

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

次の文はエラーを示していますか?あなたは他の人がコメントアウトして各ステートメントを実行しようとしましたか?どのデータベースに接続していますか? –

+0

私の最終的な挿入ステートメント、すなわちInsert into Employee_Table ..はうまくいきます。私は、st2とst3ステートメントでprobがあると思います... –

+0

私は各ステートメントに別々の接続変数を持つ必要がありますか? –

答えて

0

文字通りsi複数の独立した文を実行すると、通常は接続プールを介して管理される複数の接続オブジェクトが必要になります。

接続ごとに複数のステートメント、特にJDBC-ODBCブリッジをサポートするドライバはありません。

+0

I gt that ... while(rs.next() )ステートメントが欠落していた...あなたのおかげで...ありがとうGtは何を言おうとしている.. :) –

+0

@ user1230183:この答えがあなたを助けた場合、それらは正しいとマーク(すなわち、答え) –

関連する問題