الفريق العربي للبرمجةأرشيف المنتديات · 2000 – 2023
نسخة أرشيفية للقراءة فقط — التسجيل والمشاركة مغلقان، والمحتوى محفوظ كما كان.

microsoft odbc driver manager invalid cursor state error

بدأه الاخير زمانه في 20 مارس 2012 · 1 رد · 702 مشاهدة · في JavaEE
مشاركة: واتساب X فيسبوك تيليجرام
#1 صاحب الموضوع

السلام عليكم ورحمة الله

اعمل على برنامج يتعامل مع MS Access به مجموعة من الامور - من ضمنها البحث في قاعدة البيانات

لدي ملفين الاول هو ملف ال JSP والثاني - قمت بأضافة Class يحوي دوال التعامل مع قاعدة البيانات

لدي دالة للبحث هذه هي

 public void Search(int StudID)
    {
        try
        {          

            String sql = "select * from Student_Table where Student_ID = "+ StudID;
            rs = st.executeQuery(sql);           
           // if(rs.next())
            {
            Stud_Name = rs.getString("Student_Name");
            Scholarshp = rs.getInt("Scholarship");
            AdvisorID = rs.getString("Advisor_ID");
            CategID = rs.getInt("Categ_ID");           


            rs = st.executeQuery("select * from Student_Category_Table where Categ_ID =" + CategID);
            CategDescr = rs.getString("Categ_Descr");
            }
        }
        catch(Exception ex)
        {
            Stud_Name = ex.getMessage();
            System.out.println(ex.getMessage());
        }
    }

وفي صفحة ال jsp اقوم بأستدعاء الدالة

 if (request.getParameter("Submit").equals("Search")) {

         //dBBeanId.initializeJdbc();                 
         StudentID = request.getParameter("studID");
         out.println(StudentID);   
         StudID = Integer.parseInt(StudentID);

         dBBeanId.Search(StudID);%>

         <input name = "studName" 
                               <%out.print("value = \"" + dBBeanId.getStud_Name()+ "\" ");  %>                              



       <%
     } // End of Search

لكن الخطأ يظهر لي عند هذه الدالة executeQuery.

وجدت سؤال مشابه هنا

http://stackoverflow.com/questions/7391876/java-sql-sqlexception-microsoftodbc-driver-manager-invalid-cursor-state

لكن الجواب لم يعمل معي.

وهذا هو الكود الكامل

class

package package1;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.ResultSet;
import java.sql.Statement;


/**
 *
 * @author Administrator
 */
public class DBBean {

    private Connection connection = null;
    private Statement st;
    private ResultSet rs;    
    ///
    int Student_ID;
    private String Stud_Name;
    private String AdvisorID;
    private int Scholarshp;
    private int CategID;
    private String CategDescr;  
    ///

    /** Initialize database connection */
    public void initializeJdbc() {
        try {
             String driver = "sun.jdbc.odbc.JdbcOdbcDriver";
             Class.forName(driver); 
             String db = "jdbc:odbc:DataSource2";
             connection = DriverManager.getConnection(db);

             st = connection.createStatement();
            }
        catch (Exception ex) {
            System.out.println(ex.getMessage());
            }
    }

    /** Get tables in the database */   
    public String[] getCategories()     {        
            String[] Categories = new String[5];
            try 
            {   
                st = connection.createStatement();
                String sql = "select * from Student_Category_Table";
                rs = st.executeQuery(sql);
                int i = 0;
                while(rs.next())                    
                {
                    String Categ = rs.getString("Categ_Descr");
                    System.out.println(Categ); 
                    Categories[i++] = Categ;
                }
                rs.close();

            }catch(Exception ex) {
               System.out.println(ex.getMessage());
            }   


            return Categories;            
    }

    /** Return connection property */
    public Connection getConnection() {
        return connection;

    }

    public int getStudent_ID()    {
      return Student_ID;   
    }

    public void setStudent_ID(int student_ID) {
        Student_ID = student_ID;        
    }

    public String getStud_Name()    {
      return Stud_Name;   
    }

    public void setStud_Name(String stud_Name) {
        Stud_Name = stud_Name;        
    }

    public String getAdvisorID()    {
      return AdvisorID;   
    }

    public void setAdvisorID(String advisorID) {
        AdvisorID = advisorID;        
    }

    public String getCategDescr()    {
      return CategDescr;   
    }

    public void setCategDescr(String categDescr) {
        CategDescr = categDescr;        
    }

    public int getScholarshp()    {
      return Scholarshp;   
    }

    public void setScholarshp(int scholarshp) {
        Scholarshp = scholarshp;        
    }

    public int getCategID()    {
      return CategID;   
    }

    public void setCategID(int categID) {
        CategID = categID;        
    }

    public void Search(int StudID)
    {
        try
        {
          //  initializeJdbc();
           // st = connection.createStatement();
            Stud_Name = "1";
            String sql = "select * from Student_Table where Student_ID = "+ StudID;
            rs = st.executeQuery(sql);
            //Stud_Name = "2";
            if(rs.next())
            {
            Stud_Name = rs.getString("Student_Name");
            Scholarshp = rs.getInt("Scholarship");
            AdvisorID = rs.getString("Advisor_ID");
            CategID = rs.getInt("Categ_ID");

            rs = st.executeQuery("select * from Student_Category_Table where Categ_ID =" + CategID);
            CategDescr = rs.getString("Categ_Descr");
            }
        }
        catch(Exception ex)
        {
            Stud_Name = ex.getMessage();
            System.out.println(ex.getMessage());
        }
    }

    public void Save( int studID)
    {
        try {
         st = connection.createStatement();
         String sql = "select * from Advisor_Table where Advisor_ID = '"+ getAdvisorID() + "'";
         rs = st.executeQuery(sql);
         if(rs == null)
             System.out.println("Advisor not found");
         else
         {            
             sql = "UPDATE Student_Table SET Student_Name='" + getStud_Name() + "', Scholarship ="
                     + getScholarshp() + ", Categ_ID=" + getCategID() + ", Advisor_ID =," + getAdvisorID() +"'";
             st.executeUpdate(sql);
         }

        }
        catch( Exception ex)
        {
            System.out.println(ex.getMessage());
        }

    }


}

وهذا ملف ال jsp

<%@page import="java.sql.*"%>
<%@page contentType="text/html" pageEncoding="UTF-8"%>
<%@ page import = "package1.DBBean" %>
<jsp:useBean id = "dBBeanId" scope = "session"
             class = "package1.DBBean"></jsp:useBean>
<jsp:setProperty name = "dBBeanId" property = "*" />

<!DOCTYPE html>
<html>
 <head>
 <title>Address Information</title>
 </head>
 <body>
     <%
        String StudentID;
        int StudID;

      %>


     <form name ="frm" method = "post" action = "Page1.jsp">
      <%dBBeanId.initializeJdbc();%>
        <% if (dBBeanId.getConnection() == null) { %>
        Error: Login failed. Try again.

        <% }
        else {%>

        <p>Student ID 
            <input type = "text" name = "studID" >


        <%String[] cat = dBBeanId.getCategories(); 

       if (cat == null) { %>
       <%  out.print("No Categories"); %>
        <% }
        else { %>

              Student Category 
              <select name = "categories" size = "1">
                  <% for (int i = 0; i < cat.length; i++) { %>
                  <option><%= cat %></option>
                  <% }            
               }%> 
               </select><br />                

        Scholarship Amount 
        <input type = "text" name = "scholarshipAmount">  

        Student's Name <input type = "text" name = "StudName" >
        </p>
        <p>Advisor ID
        <input type = "text" name = "advisorID" size = "20">  
        System Message
        <input type = "text" name = "sysMessage" size = "28">  
        </p>

       <!-- onclick="document.theForm.textBox.disabled=true;return false;">-->

        <input type = "submit" name = "Submit" value = "Search">
        <input type = "submit" name = "Submit" value = "New">
        <input type = "submit" name = "Submit" value = "Save">

        <!--input type = "reset" value = "Reset"-->

        </p>
        </form>   
        <% } %> 
 <%
 if (request.getParameter("Submit") != null) {
     if (request.getParameter("Submit").equals("Search")) {
         out.println("Search__  ");   

         //dBBeanId.initializeJdbc();                 
         StudentID = request.getParameter("studID");
         out.println(StudentID);   
         StudID = Integer.parseInt(StudentID);

         dBBeanId.Search(StudID);%>

         <input name = "studName" 
                               <%out.print("value = \"" + dBBeanId.getStud_Name()+ "\" ");  %>                              



       <%
     } // End of Search
     else if (request.getParameter("Submit").equals("Save")) {
         out.print("Save");
         dBBeanId.setStud_Name(request.getParameter("StudName"));
         dBBeanId.setAdvisorID(request.getParameter("advisorID"));
         dBBeanId.setCategDescr(request.getParameter("categories"));                 
         dBBeanId.setScholarshp( Integer.parseInt(request.getParameter("scholarshipAmount")));

         dBBeanId.Save(Integer.parseInt(request.getParameter("studID")));

         //dBBeanId.setStud_Name(request.getParameter("StudName"));

         } // End of Save

     }

 %>
 </body>
 </html>

بارك الله بالجميع

تم تعديل هذه المشاركة بواسطة الاخير زمانه في 20 مارس 2012 في 16:09

/index.php/topic/264448-%D8%A7%D9%84%D8%A8%D8%AF%D8%A7%D9%8A%D8%A9-%D9%85%D8%B9-%D8%A7%D9%84%D8%A7%D9%86%D8%AF%D8%B1%D9%88%D9%8A%D8%AF/

 

اني وان كنت الاخير زمانه ---- لأتِ بما لم تستطعه الاوائلُ

#2

أخي الأخير أنصحك بالقراءة أولاً

تحياتي

حزمة المحرك الإصدارة 0.8

أي أحد يجد أني ظلمته فليراسلني

وبإذن الله لو كان له حق سيأخذه

728x90.png

مواضيع مشابهة