مثيل كائن بيان JDBC
فيما يلي أمثلة على استخدام الاستعلامات الثلاثة التالية والتعليمات الفتح والإغلاق:
تنفيذ منطقي (سلسلة SQL): إرجاع قيمة منطقية صواب ، إذا كان يمكن استرداد كائن ResultSet ، وإلا فإن إرجاع خطأ. استخدم هذه الطريقة لتنفيذ عبارات SQL DDL ، أو عند استخدام SQL ديناميكي حقيقي.
int executeupdate (String SQL): إرجاع عدد الصفوف التي يتم تنفيذها بواسطة عبارة SQL المتأثرة. استخدم هذه الطريقة لتنفيذ ، وآمل في الحصول على بعض الصفوف المتأثرة من عبارات SQL - على سبيل المثال ، إدراج أو تحديث أو حذف البيانات.
ResultSet ExecuteQuery (String SQL): إرجاع كائن ResultSet. استخدم هذه الطريقة عندما تريد الحصول على مجموعة نتائج ، تمامًا مثل استخدام عبارة SELECT.
تم كتابة هذا الرمز النموذجية بناءً على البيئة وتثبيت قاعدة البيانات في الفصل السابق.
انسخ المثال التالي jdbcexample.java ، ترجمة وتشغيله كما هو موضح أدناه:
// الخطوة 1. استيراد PackagesImport java.sql.*؛ الفئة العامة jdbcexample {// jdbc اسم برنامج التشغيل و url قاعدة البيانات static static jdbc_driver = "com.mysql.jdbc.driver" ؛ Static Final String db_url = "jdbc: mysql: // localhost/emp" ؛ // بيانات اعتماد قاعدة البيانات user static final user = "username" ؛ Static Final String Pass = "Password" ؛ public static void main (string [] args) {connection conn = null ؛ بيان stmt = فارغة ؛ حاول {// الخطوة 2: تسجيل jdbc class.forname ("com.mysql.jdbc.driver") ؛ // الخطوة 3: فتح نظام اتصال. out.println ("الاتصال بقاعدة البيانات ...") ؛ conn = drivermanager.getConnection (db_url ، user ، pass) ؛ // الخطوة 4: تنفيذ نظام Query.out.println ("إنشاء بيان ...") ؛ stmt = conn.createstatement () ؛ String SQL = "تحديث الموظفين تعيين العمر = 30 حيث المعرف = 103" ؛ // دعنا نتحقق مما إذا كان بإرجاع مجموعة نتيجة حقيقية أم لا. Boolean Ret = stmt.execute (SQL) ؛ System.out.println ("قيمة الإرجاع هي:" + ret.toString ()) ؛ // دعنا نحديث عمر السجل مع ID = 103 ؛ int phows = stmt.executeupdate (sql) ؛ System.out.println ("الصفوف المتأثرة:" + صفوف) ؛ // دعنا نختار جميع السجلات وعرضها. SQL = "SELECT ID ، أولاً ، آخر ، العمر من الموظفين" ؛ resultset rs = stmt.executequery (SQL) ؛ // الخطوة 5: استخراج البيانات من مجموعة النتائج بينما (rs.next ()) {// استرداد حسب اسم العمود int id = rs.getInt ("id") ؛ int age = rs.getInt ("Age") ؛ سلسلة أولاً = rs.getString ("الأول") ؛ سلسلة last = rs.getString ("last") ؛ // عرض قيم System.out.print ("id:" + id) ؛ System.out.print ("، العمر:" + العمر) ؛ System.out.print ("، أولاً:" + أولاً) ؛ system.out.println ("، last:" + last) ؛ } // الخطوة 6: بيئة التنظيف rs.close () ؛ stmt.close () ؛ conn.close () ؛ } catch (sqlexception se) {// تعامل مع الأخطاء لـ jdbc se.printstacktrace () ؛ } catch (استثناء e) {// التعامل مع أخطاء class.forname e.printstacktrace () ؛ } أخيرًا {// أخيرًا كتلة المستخدمة لإغلاق الموارد ، جرب {if (stmt! = null) stmt.close () ؛ } catch (sqlexception se2) {} // لا شيء يمكننا القيام به {if (conn! = null) conn.close () ؛ } catch (sqlexception se) {se.printstacktrace () ؛ } // end أخيرًا حاول} // end try system.out.println ("وداعا!") ؛ } // end main} // end jdbcexampleالآن تجميع المثال أعلاه على النحو التالي:
C:> Javac jdbcexample.java
عند تشغيل jdbcexample ، فإنه ينتج النتائج التالية:
C:> Java jdbcexample
التواصل مع قاعدة البيانات ... إنشاء بيان ... قيمة الإرجاع هي: falserows المتأثر: 1ID: 100 ، العمر: 18 ، أول: زارا ، آخر: Aliid: 101 ، العمر: 25 ، أول: Mahnaz ، Last: Fatmaid: 102 ، العمر ،
مثيل كائن JDBC Callablestatement
فيما يلي مثال على إجراء MySQL المخزّن باستخدام callablestatement جنبًا إلى جنب مع getempname () التالي:
يرجى التأكد من إنشاء الإجراء المخزن في قاعدة بيانات EMP. يمكن القيام به باستخدام متصفح الاستعلام MySQL.
SELIMITER $$ إسقاط الإجراء إذا كان موجودًا "emp`.`getempname` $ $$ إنشاء إجراء" emp`.`getempname` (في emp_id int ، out emp_first varchar (255)) تبدأ الاختيار أولاً في emp_first من الموظفين حيث id = emp_id ؛ end $$ delimiter ؛
تم كتابة رمز البرنامج النصي هذا بناءً على تثبيت البيئة وقاعدة البيانات في الفصل السابق.
انسخ المثال التالي jdbcexample.java ، ترجمة وتشغيله كما هو موضح أدناه:
// الخطوة 1. استيراد PackagesImport java.sql.*؛ الفئة العامة jdbcexample {// jdbc اسم برنامج التشغيل و url قاعدة البيانات static static jdbc_driver = "com.mysql.jdbc.driver" ؛ Static Final String db_url = "jdbc: mysql: // localhost/emp" ؛ // بيانات اعتماد قاعدة البيانات user static final user = "username" ؛ Static Final String Pass = "Password" ؛ public static void main (string [] args) {connection conn = null ؛ callablesTatement stmt = null ؛ حاول {// الخطوة 2: تسجيل jdbc class.forname ("com.mysql.jdbc.driver") ؛ // الخطوة 3: فتح نظام اتصال. out.println ("الاتصال بقاعدة البيانات ...") ؛ conn = drivermanager.getConnection (db_url ، user ، pass) ؛ // الخطوة 4: تنفيذ نظام Query.out.println ("إنشاء بيان ...") ؛ String sql = "{call getempname (؟ ،؟)}" ؛ stmt = conn.preparecall (sql) ؛ // ربط في المعلمة أولاً ، ثم ربط المعلمة int empid = 102 ؛ stmt.setint (1 ، Empid) ؛ // هذا من شأنه تعيين المعرف على أنه 102 // لأن المعلمة الثانية خارج ، لذا سجلها stmt.registerOutParameter (2 ، java.sql.types.varchar) ؛ // استخدم طريقة تنفيذ لتشغيل الإجراء المخزن. System.out.println ("تنفيذ الإجراء المخزن ...") ؛ stmt.execute () ؛ // استرداد اسم الموظف باستخدام getxxx method string empname = stmt.getString (2) ؛ System.out.println ("اسم EMP with ID:" + Empid + "IS" + Empname) ؛ stmt.close () ؛ conn.close () ؛ } catch (sqlexception se) {// تعامل مع الأخطاء لـ jdbc se.printstacktrace () ؛ } catch (استثناء e) {// التعامل مع أخطاء class.forname e.printstacktrace () ؛ } أخيرًا {// أخيرًا كتلة المستخدمة لإغلاق الموارد ، جرب {if (stmt! = null) stmt.close () ؛ } catch (sqlexception se2) {} // لا شيء يمكننا القيام به {if (conn! = null) conn.close () ؛ } catch (sqlexception se) {se.printstacktrace () ؛ } // end أخيرًا حاول} // end try system.out.println ("وداعا!") ؛ } // end main} // end jdbcexampleالآن تجميع المثال أعلاه على النحو التالي:
C:> Javac jdbcexample.java
عند تشغيل jdbcexample ، فإنه ينتج النتائج التالية:
C:> Java jdbcexample
الاتصال بقاعدة البيانات ... إنشاء بيان ... تنفيذ الإجراء المخزن ... اسم EMP بالمعرف: 102 هو Zaidgoodbye!