-
Notifications
You must be signed in to change notification settings - Fork 0
Update_ar
عند قيام المستخدم بتغيير اسمه في موقعك ستحتاج لتغيير اسمه المسجّل في قاعدة البيانات, وهذه مهمّة الأمر تحديث Update, ويسمح لك هذا الأمر بتحديث كائنٍ أو أكثر في قاعدة البيانات, وبتحديد شروطٍ على الكائن المحدّث (سيتمّ شرح ذلك في فصولٍ لاحقةٍ) ,ولتحديد التّحديث الجديد يمكننا تمريره إلى الدالة set التي تستقبل كائنًا (يجب الانتباه إلى أنّ التّحديث يجب أن يكون من نفس صف المُحدّث ) , وللأمر بانيان, أحدهما يطلب صفًّا كمعاملٍ, ويقوم هذا الباني بتحديث كائنات ذلك الصفّ جميعًا المرتبطة باسم الرّبط المحدد إذا لم يتمّ وضع شروطٍ, أمّا الثّاني فيستقبل كائنًا كمعاملٍ, وسيقوم الأمر حينها بالبحث بين جميع الكائنات المرتبطة باسم الرّبط المحدد عن الكائنات الّتي تساوي هذا الكائن Equals, فإذا كان هناك مجموعةٌ من الكائنات الّتي تساوي هذا الكائن قام بتحديثها, ويجدر الانتباه إلى أنّه في هذه الحالة من الضّروريّ التعديل على الدالة equals حتى تتناسب مع الصفّ الذي تريد حفظ كائناته, فمثلًا يتميّز المستخدم في موقع ما برمزٍ تعريفيٍّ أو بعنوان بريده الإلكترونيّ. ,وهذا المثال يشرح الأمر:
public class Updating {
public static void main(String[] args) throws SofofException {
Server s = new Server(new File("sofof"), 6969, false);
s.createDatabase();
s.getUsers().add(new User("rami", "secret"));
s.startUp();
Session sess = SessionManager.startSession("sofof:localhost:6969", new User("rami", "secret"), false);
Student rami = new Student(0, "Rami");
sess.execute(new Bind(rami).to("students"));
rami.setName("Hani");
sess.execute(new Update(rami).from("students").set(rami));
}
public static class Student{
private int id;
private String name;
public Student() {}
public Student(int id, String name) {
this.id = id;
this.name = name;
}
@Override
public boolean equals(Object obj) {
if(obj == null)return false;
if(!(obj instanceof Student))return false;
Student s2 = (Student)obj;
return s2.id == id;
}
public void setName(String name) {
this.name = name;
}
}
}