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

مشكلة في القراءة من قاعدة البيانات

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

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

اريد قراءة بيانات من ملف اكسس من خلال ال JSP

هذا ما فعلته

اولا قمت بأضافة class

واضفت هذا الكود

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


public class DBBean {

    private Connection connection = null;
    private Statement st;
    private ResultSet rs;


    /** Initialize database connection */
    public void initializeJdbc() {
        try {
             String driver = "sun.jdbc.odbc.JdbcOdbcDriver";
             Class.forName(driver); 
             String db = "jdbc:odbc:MDataSource";
             connection = DriverManager.getConnection(db);
            }
        catch (Exception ex) {
            System.out.println(ex.getMessage());
            }
    }

    /** Get Cat. in the database */   
    public String[] getCategories() 
    {        
            String[] Categories = new String[5];
            try 
            {   

                String sql = "select * from Student_Category_Table";
                rs = st.executeQuery(sql);
                int i = 0;
                while(rs.next())                    
                {
                   String Categ = rs.getString("Categ_Descr");
                   Categories[i++] = Categ;
                }  


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

            return Categories;            
    }

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

    }

}

ثم ومن خلال ملف ال JSP حاولت استدعاء هذه الدوال

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

<!DOCTYPE html>
<html>
    <head>
        <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
        <title>JSP Page</title>
    </head>
    <body>
       <%dBBeanId.initializeJdbc();%>
        <% if (dBBeanId.getConnection() == null) { %>
        Error: Login failed. Try again.

        <% }
        else {%>
           <%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 />  
    </body>
</html>

عند التنفيذ لا يظهر خطأ - والاتصال مع قاعدة البيانات ينجح لكن قراءة البيانات لا تظهر بصورة صحيحة

كما في الصورة

post-47438-045588800 1331991540_thumb.pn

علما انه المفروض انا لدي قيم في قاعدة البيانات

post-47438-084865800 1331991613_thumb.pn

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

المرفقات
jsp1.pngjsp2.png

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

/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

من الواضح أن كود الداله getCategories به أكثر من مشكله ...

public String[] getCategories() 
{        
        String[] Categories = new String[5];	// ماذا لو أن عدد العناصر في قاعدة البيانات أكثر من 5 ... سوف يعطى IndexOutOfBoundsException
        try 
        {   

            String sql = "select * from Student_Category_Table";
            rs = st.executeQuery(sql);		// هل قمت بتهيئة الكائن st قبل إستخدامه ؟؟؟؟ >>>> طبعا هذا السطر يعطى NullPointerException
            int i = 0;
            while(rs.next())                    
            {
               String Categ = rs.getString("Categ_Descr");
               Categories[i++] = Categ;
            }  


        }catch(Exception ex) {
           // System.out.println(ex.getMessage());		// وبما أنك لا تطبع رسائل الخطأ ... فكيف لك أن تعرف أنه هناك مشكله في الكود بالأعلى ... 
      			// دائما و أنت في وقت التطوير إطبع الإستثناءات لديك 
        }           

        return Categories;            // طبعا سيتم إرجاع مصفوفه من 5 عناصر من بهم القيمه null
}

قم بتصحيح الثلاث مشكلات بالأعلى و سوف يعمل الكود إن شاء الله

تم تعديل هذه المشاركة بواسطة __Unknown في 17 مارس 2012 في 22:19

1
#3

جزاك الله خيرا اخي الكريم -

فعلا الخطأ الاساسي كان في عدم تهيئة المتغير st

الكود كان ينقصه هذه الجملة بصورة اساسية

st = connection.createStatement();

بارك الله بك

1

/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/

 

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

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