بسم الله الرحمن الرحيم
أسعد الله أوقات الجميع بكل خير..
مستوى الدرس : مبتدأ .
لنفترض أننا نريد عرض اسم المدن المتوفرة في قائمة منسدلة من خلال جدول في قاعدة البيانات، بحيث لو أضيفت مدينة جديدة تتم إضافتها إلى الجدول فقط.. عموما دعونا نبدأ :)
أولا ننشئ جدول في قاعدة البيانات ونسميه مثلا : cities
create table cities( id int not null auto_increment primary key, name varchar(30) not null);
ومن ثم نضيف إليه البيانات التالية:
insert into cities (name) values('Ryadh');
insert into cities (name) values('Jeddah');
insert into cities (name) values('Makkah');نقوم الآن بالانتقال إلى netbeans وننشئ مشروع جديد :
ومن ثم :
بعد ذلك اسم المشروع و next :)
ننشئ الآن فئة نسميها "city" تمثل كل مدينة :
فئة city:
public class city {
private int id;
private String name;
/**
* @return the id
*/
public int getId() {
return id;
}
/**
* @param id the id to set
*/
public void setId(int id) {
this.id = id;
}
/**
* @return the name
*/
public String getName() {
return name;
}
/**
* @param name the name to set
*/
public void setName(String name) {
this.name = name;
}
}الآن ننشئ فئة تأمن لنا الاتصال بقاعدة البيانات ، وإجراء العمليات عليها ، ولنسمها مثلا : dbclass
public class dbclass {
private final String dbUrl = "jdbc:mysql://localhost:3306/tut";
private final String dbUserName = "root";
private final String dbPassword = "root";
private Connection cn() {
Connection con = null;
try {
Class.forName("com.mysql.jdbc.Driver");
} catch (ClassNotFoundException e) {
System.out.println(e.toString());
}
try {
con = DriverManager.getConnection(this.dbUrl, this.dbUserName, this.dbPassword);
} catch (Exception e) {
e.printStackTrace();
}
return con;
}نضيف للفئة السابقة دالة جلب البيانات من الجدول :
public ArrayList getCities() {
ArrayList cities = new ArrayList();
try {
Connection con = cn();
String sql = "select *from cities ";
Statement s = con.createStatement();
ResultSet result = s.executeQuery(sql);
while (result.next()) {
city c = new city();
c.setId(result.getInt(1));
c.setName(result.getString(2));
cities.add(c);
}
result.close();
s.close();
con.close();
} catch (SQLException e) {
System.out.println(e.toString());
}
return cities;
}دالة تعود بمصفوفة من القوائم ArrayList ، في كل مرة يوجد بيان في الـ resultset يقوم بإنشاء كائن "city" ويسند إليه القيم : اسم المدينة ورقمها (id,name) ثم بعد ذلك يضيفها إلى ArrayList
نرجع الآن إلى صفحة "index.jsp" .. في بداية الصفحة نقوم بإضافة المكتبات الآتية :
<%@page import="java.util.Iterator"%> <%@page import="java.util.ArrayList"%> <%@page import="mine.city" %>
نقوم أيضا بإضافة "dbclass" لنتمكن من استدعاء دالة جلب اسماء المدن من الجدول :
<jsp:useBean id="db" scope="page" class="mine.dbclass" />
في داخل وسم <body> نضيف :
<h1>Hello World!</h1>
<% ArrayList c = db.getCities();
Iterator t = c.iterator();
city _city = new city();
%>
Select your city: <select name="select">
<% while(t.hasNext()){
_city = (city) t.next();
%>
<option value="<%= _city.getId() %>"><%= _city.getName() %></option>
<% } %>
</select>قمنا بإنشاء متغير من نوع ArrayList وأسندنا إليه نتائج الاستعلام من جدول المدن عن طريق الدالة :getCities ، بعد ذلك جمعنا القيم داخل Iterator
داخل الـ loop في كل مرة يقوم بإنشاء كائن جديد وإسناد القيم من الـ Iterator إليه.. وهكذا
لاحظ أن الـ loop بين وسمي <option> :)
نقوم بنشر الصفحة الآن على السيرفر لنرى النتيجة :
أرجو أن أكون وفقت في الشرح .. وأي سؤال انا حاضر :)