المحتوى الرئيسي:
1. JDBC Connection Database (تحرير) خطوات (هناك ستة خطوات أساسا)
1. تسجيل السائق: class.forname ("com.mysql.jdbc.driver") ؛ معروضة التحميل في JVM
2.
Param2: اسم المستخدم للاتصال بقاعدة البيانات-》 string user = "H4" ؛
param3: كلمة المرور للاتصال بقاعدة البيانات ----》》 string pass = "111" ؛
Connection conn = drivermanager.getConnection (url ، user ، pass) ؛ // الطرق تحت DriverManager: getConnection (عنوان URL السلسلة ، اسم المستخدم ، كلمة مرور السلسلة)
(2) بعد ذلك نحلل عنوان URL: "JDBC (يبدأ هذا البروتوكول بـ JDBC): MySQL (هذا هو اسم نظام إدارة قاعدة البيانات): // localhost (عنوان مصدر قاعدة البيانات): 3306 (منفذ الهدف)/اختبار (جدول الجدول ليتم استنباطه)؟"
"useUnicode = true & nicheredInging = utf8" ؛ تتم إضافة هذا لمنع رمز مشجعة ، ويتم تحديده لاستخدام مجموعات أحرف Unicode وتحريرها باستخدام UTF-8.
3. إنشاء كائن بيان بيان (ثلاث طرق رئيسية): بيان STMT = CONN.CREATESTATEMENT () ؛ // طرق تحت واجهة الاتصال: بيان مبدع ()
preparedStatement pStMt = conn.preparedStatement () ؛
callablestatement cstmt = conn.preparecall ("{call demosp (؟ ،؟)}") ؛
دعنا نحللها أدناه: (1) الفرق بين العبارة وكائنات المعدة ، والتي يمكن أن تعني معلمات الاستعلام ديناميكيًا
(2) طريقة إعداد المعلمات الجاهزة. إذا كان نوع معلمة قاعدة البيانات هو varchar ، يتم استخدام SetString. إذا كان نوع المعلمة عدد صحيح ، يتم استخدام setInt.
(3) callablestatement.setxxxx (parameterIndex ، القيمة) // تعيين القيمة بترتيب المعلمات
callablestatement.setxxxx (parameTername ، القيمة) // تعيين القيمة وفقًا لاسم المعلمة. هذا الاسم هو اسم المعلمة الرسمية عند تحديد الإجراء المخزن.
(4) callablestateMent.registerOutParameter تستخدم لإعلان معلمة من نوع الإخراج من الإجراء المخزن لتلقي قيمة الإخراج للإجراء المخزن
4. تنفيذ عبارة SQL: resultset rs = stmt.executequery (SQL) ؛ باستثناء بيان الاستعلام ، executequery () ؛ كل شيء آخر يتم تنفيذه upedupdate () ؛
الطرق تحت واجهة البيان:
تنفيذ منطقي (سلسلة SQL): تنفيذ عبارة SQL ، صحيح إذا كانت قيمة الإرجاع هي مجموعة النتائج ، وإلا فاضلة
ResultSet ExecuteQuery (سلسلة SQL): تنفيذ عبارة SQL ، قيمة الإرجاع هي ResultSet
int executeupdate (سلسلة SQL): تنفيذ عبارة SQL ، قيمة الإرجاع هي عدد الصفوف المتأثرة
5. مجموعة نتائج العملية: تعتمد طريقة getxxxx لكائن ResultSet على نوع الحقل في الجدول في قاعدة البيانات. على سبيل المثال: يتوافق Varchar2 مع GetString ، إذا كان عدد صحيح ، فإن الطريقة المقابلة هي getInt/getLong
بينما (rs.next ()) {rs.getInt (columnIndex) ؛ // احصل على قيمة الحقل من خلال رقم العمود RS.GetString (اسم العمود) ؛ // احصل على قيمة الحقل من خلال اسم العمود طرق شائعة ضمن واجهة ResultSet: قبل first () ؛ انقل المؤشر إلى السجل الأول (مقدمة) في ResultSet Afterlast () ؛ انقل المؤشر إلى السجل الأخير (بعد) في مجموعة النتائج) المطلق (intcolumn): انقل المؤشر إلى الصف المحدد بالنسبة إلى الصف الأول ، والرقم السلبي نسبة إلى السجل الأخير السابق (): تحرك المؤشر لأعلى صف واحد (): نقل المؤشر إلى أسفل results.type_scroll. قراءة فقط ولا يمكن تعديلها.6. أغلق المورد: بعد اكتمال العملية ، يجب عليك إغلاق JDBC لإصدار موارد JDBC. ولكن يجب أن يكون الترتيب عكسًا عندما تحدد الكائن ، تمامًا مثل إغلاق الباب ، وإغلاقه من الداخل أولاً وإغلاقه للخارج.
المثال التالي:
if (rs! = null) {// 1. أغلق مجموعة النتائج ، حاول {rs.close () ؛ } catch (sqlexception e) {E.PrintStackTrace () ؛ }} if (stmt! = null) {// 2. أغلق الكائن المعلن جرب {stmt.close () ؛ } catch (sqlexception e) {E.PrintStackTrace () ؛ }} if (conn! = null) {// 3. أغلق الاتصال (تذكر أن تغلق 1.2 السابق أولاً. ثم أغلق الاتصال) جرب {conn.close () ؛ } catch (استثناء e) {E.PrintStackTrace () ؛ }}2. أدناه مثال على بيانات الاستعلام (مفصل) بسيط
حزمة Javacore1 ؛ // هذا هو اسم الحزمة الذي قمت ببنائه. استيراد java.sql.callablesTatement ؛ استيراد java.sql.connection ؛ استيراد java.sql.drivermanager ؛ استيراد java.sql.preparedstatement ؛ استيراد java.sql.resultset ؛ // الخمسة على اليسار هي أسماء الحزم التي تريد استيرادها عند كتابة برنامج. تذكر أن تكون حزم تحت java.sql. استيراد java.sql.sqlexception ؛ استيراد java.sql.statement ؛ الفئة العامة jdbc {// تحديد الفئة الفئة العامة الثابتة الرئيسية (سلسلة [] args) {// الطريقة الرئيسية try {string driver = "com.mysql.jdbc.driver" ؛ // 1. حدد برنامج تشغيل اسم السائق على أنه برنامج تشغيل ك com.mysql.jdbc.driver string url = "jdbc: mysql: // localhost: 3306/test؟" // 2. تحديد عنوان URL ؛ JDBC هو البروتوكول. MySQL هو protocol الفرعي: يمثل اسم إدارة نظام قاعدة البيانات ؛ LocalHost: 3306 هو العنوان والمنفذ المستهدف لمصدر قاعدة البيانات الخاصة بك ؛ الاختبار هو موقع الجدول الذي قمت بإنشائه بنفسي ، وأنت تستخدمك كمعيار. + "useUnicode = true & directionDing = utf8" ؛ // منع الكود المشتعل ؛ useUnicode = يعني استخدام مجموعة أحرف Unicode ؛ NAFERENCODING = UTF8 يعني استخدام UTF-8 للتحرير. user user = "H4" ؛ // 3. حدد اسم المستخدم واكتب المستخدم الذي تريد الاتصال به. سلسلة PASS = "111" ؛ // 4. كلمة مرور المستخدم. سلسلة QuerySql = "SELECT * من الموظفين" ؛ // 5. اسم الجدول الذي تريد البحث عنه. class.forname (driver) ؛ // 6. قم بتسجيل برنامج التشغيل واستخدم class.froname () في الفصل الدراسي أسفل حزمة java.lang ؛ السائق هنا هو السائق المحدد في 1 ، أو class.forname ("com.mysql.jdbc.driver") ؛ Connection conn = drivermanager.getConnection (url ، user ، pass) ؛ // 7. احصل على اتصال قاعدة البيانات واستخدم getConnectin (عنوان URL للسلسلة ، اسم مستخدم السلسلة ، كلمة مرور السلسلة) من DriverManager في Java.sql لإكمال // URL ، المستخدم ، تمرير الأقواس هي الخطوات 2 و 3 و 4 المحددة أعلاه ؛ بيان stmt = conn.createstatement () ؛ // 8. بناء كائن بيان لتنفيذ بيان SQL: هناك بشكل أساسي ثلاث حالات من البيان ، و preparedStatement ، و callablesTatement لتنفيذ // طرق التنفيذ الثلاثة هي: البيان stmt = con.createstatement () ؛ // preparedStatement PSTMT = conn.preparestatement (SQL) ؛ // callablestatement cstmt = conn.preparecall ("{call demosp (؟ ،؟)}") ؛ resultset rs = stmt.executequery (QuerySql) ؛ // 9. تنفيذ SQL وإعادته إلى النهاية ؛ ResultSet ExecuteQuery (سلسلة SQLSTRING): يستخدم لإرجاع كائن مجموعة (resultset). بينما (rs.next ()) {//10.transfer set set set system.out.println ("رقم الموظفين:"+rs.getString ("experiedee_id")+"الراتب:"+rs.getString ("الراتب")+"الاسم:"+rs.getString ("last_name") ! = null) {// 11.close مجموعة السجلات حاول {rs.close () ؛ } catch (sqlexception e) {E.PrintStackTrace () ؛ }} if (stmt! = null) {// 12.close الكائن المعلن try {stmt.close () ؛ } catch (sqlexception e) {E.PrintStackTrace () ؛ }} if (stmt! = null) {// 12.close الكائن المعلن try {stmt.close () ؛ } catch (sqlexception e) {E.PrintStackTrace () ؛ }} if (conn! = null) {// 13. أغلق الاتصال (تذكر أن تغلق 11.12 السابق أولاً. ثم أغلق الاتصال ، تمامًا مثل إغلاق الباب ، وأغلق من الداخل أولاً ، وأخيراً أغلق الجزء الخارجي) حاول {conn.Close () ؛ } catch (sqlexception e) {E.PrintStackTrace () ؛ }}} catch (استثناء e) {E.PrintStackTrace () ؛ }}}}3. لكي نكون أكثر سهولة ، فإننا نغلف عملية الاستحواذ على اتصالات قاعدة البيانات واتصالات الإصدار بالطريقة لتسهيل التشغيل بشكل أفضل لاحقًا.
حزمة Javacore1 ؛ استيراد java.sql.connection ؛ استيراد java.sql.drivermanager ؛ الفئة العامة jdbc {public static void main (string [] args) {connection conn = getConnection ("H4" ، "111") ؛ // الحصول على قاعدة بيانات اتصال/*،،،،،،،،،،،،،،،،،،،،،،،،،،،،،،،،،،،،،،،،،،،،،،،،،،،،،،،،،،،،،،،،،،،،،،،،،،،،،،،،،،،،،،،،،،،،،،، ,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, ,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, ,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, سلسلة PASS) {connection conn = null ؛ // إعلان برنامج تشغيل كائن الاتصال = "com.mysql.jdbc.driver" ؛ // اسم فئة برنامج التشغيل url = "jdbc: mysql: // localhost: 3306/test؟" // database url + "useUnicode = true & directionDing = utf8" ؛ // منع Grabled Try {class.forname (driver) ؛ // register (load) driver conn = drivermanager.getConnection (url ، user ، pass) ؛ // get database connection} catch (استثناء e) {e.printstacktrace () ؛ } return conn ؛ }. } catch (استثناء e) {E.PrintStackTrace () ؛ }}}4. تنفيذ أحد عشر وظيفة لمعالجة معلومات قاعدة البيانات مثل الاستعلام والإدراج والحذف والتحديث.
1. بيانات الاستعلام
حزمة javacore1 ؛ استيراد java.sql.connection ؛ استيراد java.sql.drivermanager ؛ استيراد java.sql.resultset ؛ احصل على استعلام اتصال قاعدة البيانات (conn) ؛ // method name calls database connection releaseconnection (conn) ؛ // relection database connection} // Query Data ، حدد طريقة الاستعلام عن استعلام الفراغ الثابت (connection conn) {String sql = "select * from offorms" ؛ حاول {statle stmt = conn.createstatement () ؛ // يمكنك أيضًا استخدام reparedStatement لإجراء ResultSet rs = stmt.executequery (SQL) ؛ // تنفيذ عبارة SQL وإرجاع النهاية بينما (rs.next ()) {// Transfer the Result Set و Go to the Next line System.out.println ("رقم الموظفين: } if (rs! = null) {try {rs.close () ؛ } catch (sqlexception e) {E.PrintStackTrace () ؛ }} if (stmt! = null) {try {stmt.close () ؛ } catch (sqlexception e) {E.PrintStackTrace () ؛ }} if (conn! = null) {try {conn.close () ؛ } catch (sqlexception e) {E.PrintStackTrace () ؛ }}} catch (استثناء e) {E.PrintStackTrace () ؛ }} // اتصال قاعدة بيانات الاتصال العام getConnection (مستخدم السلسلة ، تمريرة السلسلة) {connection conn = null ؛ // inclare the connect string driver = "com.mysql.jdbc.driver" ؛ // driver class name url = "jdbc: mysql: // localhost: 3306/test؟" // database url + "useUnicode = true & directionDing = utf8" ؛ // منع Grabled Try {class.forname (driver) ؛ // register (load) driver conn = drivermanager.getConnection (url ، user ، pass) ؛ // get database connection} catch (استثناء e) {e.printstacktrace () ؛ } return conn ؛ }. } catch (استثناء e) {E.PrintStackTrace () ؛ }}} // الاستعلام عن البيانات ، ويتم عرض النتائج بالترتيب العكسي ، حزمة الطلب العكسي javacore1 ؛ استيراد java.sql.connection ؛ استيراد java.sql.drivermanager ؛ استيراد java.sql.resultset ؛ = getConnection ("H4" ، "111") ؛ // الحصول على استعلام اتصال قاعدة البيانات (conn) ؛ // يدعو اسم الطريقة إلى اتصال اتصال قاعدة البيانات (conn) ؛ // reext the Database Connection} // Query the Data ، وتحديد طريقة الاستعلام عن الفراغ الثابت (Connection conn) {String sql = "SELECT * from offorms" ؛ حاول {statle stmt = conn.createstatement () ؛ // يمكنك أيضًا استخدام reparedStatement لإجراء ResultSet rs = stmt.executequery (SQL) ؛ // تنفيذ عبارة SQL وإرجاع النهاية rs.afterlast () ؛ // انتقل إلى السطر الأخير أولاً بينما (rs.previous ()) {// نقل النتيجة إعداد وإعداد خط النظام. } if (rs! = null) {try {rs.close () ؛ } catch (sqlexception e) {E.PrintStackTrace () ؛ }} if (stmt! = null) {try {stmt.close () ؛ } catch (sqlexception e) {E.PrintStackTrace () ؛ }} if (conn! = null) {try {conn.close () ؛ } catch (sqlexception e) {E.PrintStackTrace () ؛ }}}} catch (استثناء e) {E.PrintStackTrace () ؛ }} // اتصال قاعدة بيانات الاتصال العام getConnection (مستخدم السلسلة ، تمريرة السلسلة) {connection conn = null ؛ // inclare the connect string driver = "com.mysql.jdbc.driver" ؛ // driver class name url = "jdbc: mysql: // localhost: 3306/test؟" // database url + "useUnicode = true & directionDing = utf8" ؛ // منع Grabled Try {class.forname (driver) ؛ // register (load) driver conn = drivermanager.getConnection (url ، user ، pass) ؛ // get database connection} catch (استثناء e) {e.printstacktrace () ؛ } return conn ؛ }. } catch (استثناء e) {E.PrintStackTrace () ؛ }}}2. إدراج البيانات
حزمة javacore1 ؛ استيراد java.sql.connection ؛ استيراد java.sql.drivermanager ؛ استيراد java.sql.sqlexception ؛ استيراد java.sql.statement ؛ الطبقة العامة إدراج {public static void main (args) // الحصول على اتصال قاعدة البيانات إدراج (conn) ؛ // method name calls database connection releaseconnection (conn) ؛ // إصدار قاعدة بيانات الإصدار} // إدراج بيانات الفراغ الثابتة العامة (Connection Conn) {try {string sql = "insert في الموظفين (exepmitee_id ، last_name ، salary ، department_id ، userid)" + "القيم ('100010' ، 'xiogou' ، '7000' ، '004' ، '9')" // عبارة SQL لإدخال بيان البيانات STMT1 = conn.Createstatement () ؛ // إنشاء كائن بيان لتنفيذ عبارة SQL static int count = stmt1.executeupdate (SQL) ؛ // عبارة SQL لتنفيذ تشغيل الإدراج وإرجاع عدد بيانات البيانات المدرجة. // إخراج نتيجة عملية الإدراج conn.close () ؛ // أغلق اتصال قاعدة البيانات} catch (sqlexception e) {E.PrintStackTrace () ؛ }} // اتصال قاعدة بيانات الاتصال العام getConnection (مستخدم السلسلة ، تمريرة السلسلة) {connection conn = null ؛ // inclare the connect string driver = "com.mysql.jdbc.driver" ؛ // driver class name url = "jdbc: mysql: // localhost: 3306/test؟" // database url + "useUnicode = true & directionDing = utf8" ؛ // منع Grabled Try {class.forname (driver) ؛ // registrice (load) برنامج التشغيل conn = drivermanager.getConnection (url ، user ، pass) ؛ } return conn ؛ }. } catch (استثناء e) {E.PrintStackTrace () ؛ }}}3. حذف البيانات
حزمة javacore1 ؛ استيراد java.sql.connection ؛ استيراد java.sql.drivermanager ؛ استيراد java.sql.sqlexception ؛ استيراد java.sql.statement ؛ حذف الطبقة العامة {public static void main (args) // الحصول على اتصال قاعدة البيانات حذف (conn) ؛ // Method Name Name Calls Connection ؛ RELEASECONNECTION (CONN) ؛ // إصدار قاعدة بيانات الإصدار} // حذف بيانات الفراغ الثابتة العامة (Connection Conn) {String SQL = "DELETE من الموظفين حيث الموظف = 100009" ؛ حاول {statle stmt = conn.createstatement () ؛ // أو استخدم طريقة reparedStatement STMT.ExecuteUpdate (sql) ؛ // تنفيذ عبارة SQL if (STMT! = null) {try {stmt.close () ؛ } catch (sqlexception e) {E.PrintStackTrace () ؛ }}} catch (sqlexception e) {E.PrintStackTrace () ؛ }}} // اتصال قاعدة بيانات الاتصال العام getConnection (مستخدم السلسلة ، تمريرة السلسلة) {connection conn = null ؛ // inclare the connect string driver = "com.mysql.jdbc.driver" ؛ // driver class name url = "jdbc: // // localhost: 3306/test؟" // database url + "useUnicode = true & directionDing = utf8" ؛ // منع Grabled Try {class.forname (driver) ؛ // register (load) driver conn = drivermanager.getConnection (url ، user ، pass) ؛ // get database connection} catch (استثناء e) {e.printstacktrace () ؛ } return conn ؛ }. } catch (استثناء e) {E.PrintStackTrace () ؛ }}}4. تحديث البيانات
حزمة javacore1 ؛ استيراد java.sql.connection ؛ استيراد java.sql.drivermanager ؛ استيراد java.sql.sqlexception ؛ استيراد java.sql.statement ؛ تحديث الفئة العامة {public static void main (string) {connection connection = getConnection ("H3" // الحصول على تحديث اتصال قاعدة البيانات (conn) ؛ // method name name calls connection connection releasEconnection (conn) ؛ // relection database connection} // تحديث بيانات الفراغ الثابتة العامة (connection conn) {string sql = "تحديث الموظفين تعيين الراتب = 8000 where exeteree_id = 100005" ؛ حاول {statle stmt1 = conn.createstatement () ؛ // أو استخدام طريقة reparedStatement STMT1.ExecuteUpdate (sql) ؛ // تنفيذ عبارة SQL if (STMT1! = null) {try {stmt1.close () ؛ } catch (sqlexception e) {E.PrintStackTrace () ؛ }}} catch (sqlexception e) {E.PrintStackTrace () ؛ }} // اتصال قاعدة بيانات الاتصال العام getConnection (مستخدم السلسلة ، تمريرة السلسلة) {connection conn = null ؛ // inclare the connect string driver = "com.mysql.jdbc.driver" ؛ // driver class name url = "jdbc: mysql: // localhost: 3306/test؟" // database url + "useUnicode = true & directionDing = utf8" ؛ // منع Grabled Try {class.forname (driver) ؛ // register (load) driver conn = drivermanager.getConnection (url ، user ، pass) ؛ // get database connection} catch (استثناء e) {e.printstacktrace () ؛ } return conn ؛ }. } catch (استثناء e) {E.PrintStackTrace () ؛ }}}5. النقل (المعاملات)
JDBC يتعامل مع المعاملات من خلال الالتزام التلقائي لاتصالات الإغلاق:
connection.setautocommit (false) ؛
إرسال المعاملة:
connection.Commit () ؛
الجزء التراجع عن معاملة التراجع:
connection.rollback (SavePoint) ؛
تراجع كل شيء:
connection.rollback () ؛
حزمة Javacore1 ؛ استيراد java.sql.connection ؛ استيراد java.sql.drivermanager ؛ استيراد java.sql.statement ؛ الطبقة العامة transcash {public static void main (string [] args) {connection conn = getConnection ("H3" ، "111111") // اسم الطريقة يستدعي اتصال قاعدة البيانات releaseconnection (conn) ؛ // إطلاق اتصال قاعدة البيانات} // النقل (تحويل البيانات) (كانت البيانات الأصلية 100 و 500 ، ولكن بعد تنفيذ هذه الوظيفة ، تصبح 500 و 100. في الواقع ، لوضعها بصراحة ، إنها تحديث البيانات وتغيير البيانات العليا) العليا الثابتة (Connection) حاول {conn.setautocommit (false) ؛ // إغلاق سلسلة التقديم التلقائي sql = "تحديث الموظفين تعيين الراتب = 500 حيث الموظف = 100001" ؛ stmt = conn.createstatement () ؛ stmt.executeupdate (SQL) ؛ SQL = "تحديث الموظفين تعيين الراتب = 100 حيث الموظف = 100002" ؛ stmt.executeupdate (SQL) ؛ // تنفيذ عبارة SQL ، سيتم تبادل الراتبين أعلاه // int i = 1/0 ؛ إذا كان الأمر كذلك ، فلن يتم إكمال المهمة ، لأن هذا شيء كامل ، وإذا كان هناك القليل من الفشل ، فسوف تفشل جميعًا conn.Commit () ؛ // Compling Transaction} catch (استثناء e) {E.PrintStackTrace () ؛ } أخيرًا {try {if (stmt! = null) {stmt.close () ؛ } catch (استثناء e) {E.PrintStackTrace () ؛ }}} // اتصال قاعدة بيانات الاتصال العام getConnection (مستخدم السلسلة ، تمريرة السلسلة) {connection conn = null ؛ // inclare the connect string driver = "com.mysql.jdbc.driver" ؛ // driver class name url = "jdbc: // // localhost: 3306/test؟" // database url + "useUnicode = true & directionDing = utf8" ؛ // منع Grabled Try {class.forname (driver) ؛ // register (load) driver conn = drivermanager.getConnection (url ، user ، pass) ؛ // get database connection} catch (استثناء e) {e.printstacktrace () ؛ } return conn ؛ }. } catch (استثناء e) {E.PrintStackTrace () ؛ }}}6. ابحث عن الإجراءات المخزنة بدون معلمات
حزمة javacore1 ؛ استيراد java.sql.callablestatement ؛ استيراد java.sql.connection ؛ استيراد java.sql.drivermanager ؛ استيراد java.sql.sqlexception ؛ الفئة العامة execproc {public static void main (string) {connection conn. // احصل على اتصال قاعدة البيانات execproc (conn) ؛ // اسم الطريقة استدعاء قاعدة قاعدة البيانات releaseconnection (conn) ؛ // إصدار قاعدة بيانات الإصدار} // الإجراء غير المتخزين غير الموثوق ؛ public static void execproc (connection conn) {string sql = "{call raisesalary}" ؛ حاول {callablestatement cstmt = conn.preparecall (sql) ؛ CSTMT.ExecuteUpdate () ؛ } catch (sqlexception e) {E.PrintStackTrace () ؛ }} // اتصال قاعدة بيانات الاتصال العام getConnection (مستخدم السلسلة ، تمريرة السلسلة) {connection conn = null ؛ // inclare the connect string driver = "com.mysql.jdbc.driver" ؛ // driver class name url = "jdbc: mysql: // localhost: 3306/test؟" // database url + "useUnicode = true & directionDing = utf8" ؛ // منع Grabled Try {class.forname (driver) ؛ // register (load) driver conn = drivermanager.getConnection (url ، user ، pass) ؛ // get database connection} catch (استثناء e) {e.printstacktrace () ؛ } return conn ؛ }. } catch (استثناء e) {E.PrintStackTrace () ؛ }}}7. ابحث عن الإجراءات المخزنة مع المعلمات
حزمة javacore1 ؛ استيراد java.sql.callablestatement ؛ استيراد java.sql.connection ؛ استيراد java.sql.drivermanager ؛ استيراد java.sql.types ؛ getmulti public {public static void main (string) {connection connt = getConnection ( // الحصول على اتصال قاعدة البيانات int cnt = getMulti (conn) ؛ // العثور على الإجراءات المخزنة ؛ System.out.println ("رقم الأشخاص:" + cnt) ؛ RELEASECONNECTION (CONN) ؛ // إصدار قاعدة بيانات الإصدار} // تحتوي عملية البحث على معلمات ثابتة عامة int getMulti (connection conn) {int dept_id = 100001 ؛ int cnt = 0 ؛ String sql = "{call calc_emp_count (؟ ،؟)}" ؛ حاول {callablestatement cstmt = conn.preparecall (sql) ؛ // تهيئة كائن العبارة cstmt.setint (1 ، dept_id) ؛ // callablestatatement.setxxx (المعلمة ، القيمة) أو (الرقم ، القيمة) ، و reparedStatement.setxxx (العدد ، القيمة) لا يمكن أن يكون مثل هذا cstmt. // cstmt.registerOutParameter (2 ، types.integer) ؛ // إعلان معلمة الإخراج cstmt.executeupdate () ؛ // تنفيذ عبارة sql cnt = cstmt.getint (2) ؛ // الحصول على النتيجة if (cstmt! = null) {cstmt.close () E.PrintStackTrace () ؛ } إرجاع cnt ؛ }. // database url + "useUnicode = true & directionDing = utf8" ؛ // منع Grabled Try {class.forname (driver) ؛ // register (load) driver conn = drivermanager.getConnection (url ، user ، pass) ؛ // get database connection} catch (استثناء e) {e.printstacktrace () ؛ } return conn ؛ }. } catch (استثناء e) {E.PrintStackTrace () ؛ }}}8. المعالجة العادية
حزمة javacore1 ؛ استيراد java.sql.connection ؛ استيراد java.sql.date ؛ استيراد java.sql.drivermanager ؛ استيراد java.sql.preparedstatement ؛ استيراد java.sql.sqlexception ؛ planinsert planinsert {public static void main ( "111111") ؛ // GET DATABASE CONNECTION PLANINSERT (CONN) ؛ // method name calls database connection releaseconnection (conn) ؛ // إصدار قاعدة بيانات الإصدار} // المعالجة العادية لـ planinsert planinsert static static (connection) {try {string sql = "insert in test_user1 (userId ، اسم المستخدم ، وقت التحميل)" + "القيم (؟ ،؟ ،؟ ،؟)" ؛ // عبارة SQL لإدراج البيانات المعدة pstmt = conn.preparestatement (SQL) ؛ وقت بدء طويل = system.currentTimeMillis () ؛ لـ (int i = 0 ؛ i <1000 ؛ i ++) {pStMt.SetLong (1 ، i) ؛ pStMt.SetString (2 ، "user"+i) ؛ PSTMT.SetDate (3 ، تاريخ جديد (System.CurrentTimeMillis ()))) ؛ pstmt.executeupdate () ؛ } system.out.println ("إجمالي الوقت المستغرق:"+(system.currentTimeMillis () - startTime)) ؛ pstmt.close () ؛ // أغلق اتصال قاعدة البيانات} catch (sqlexception e) {E.PrintStackTrace () ؛ }} // اتصال قاعدة بيانات الاتصال العام getConnection (مستخدم السلسلة ، تمريرة السلسلة) {connection conn = null ؛ // inclare the connect string driver = "com.mysql.jdbc.driver" ؛ // driver class name url = "jdbc: mysql: // localhost: 3306/test؟" // database url + "useUnicode = true & directionDing = utf8" ؛ // منع Grabled Try {class.forname (driver) ؛ // register (load) driver conn = drivermanager.getConnection (url ، user ، pass) ؛ // get database connection} catch (استثناء e) {e.printstacktrace () ؛ } return conn ؛ }. } catch (استثناء e) {E.PrintStackTrace () ؛ }}}9. معالجة الدُفعات
الحصول على نمط معاملة JDBC الأصلي:
Boolean CurrentTransActionModle = con.getautocommit () ؛
ضبط على وضع المعاملة (OFF Automatic Commice):
consetautocommit (false) ؛
بيان stm = con.createstatement () ؛
ثلاثة بيانات SQL غير متجانسة:
String SQL1 = "حذف من المستخدم حيث id = 8" ؛
String SQL2 = "تحديث اسم تعيين المستخدم = 'java' حيث id = 7" ؛
String SQL3 = "أدخل في قيم المستخدم (الاسم ، كلمة المرور) (" JDBC "،" JDBC ")" ؛
أضف إلى المخزن المؤقت لتجهيز الدُفعات:
stm.addbatch (SQL1) ؛
stm.addbatch (SQL2) ؛
stm.addbatch (SQL3) ؛
تنفيذ تحديثات الدُفعات:
stm.executeBatch () ؛
إرسال المعاملات لهذا التحديث الدُفعات:
con.Commit () ؛
الرد على وضع المعاملة الأصلي:
consetautocommit (CurrentTransactionModle) ؛
حزمة javacore1 ؛ استيراد java.sql.connection ؛ استيراد java.sql.date ؛ استيراد java.sql.drivermanager ؛ استيراد java.sql.preparedStateState ؛ "111111") ؛ // GET DATABASE CONNECTION BATCHINSERT (CONN) ؛ // method name calls database connection releaseconnection (conn) ؛ // إصدار قاعدة بيانات الإصدار} // سرعة إدخال الدُفعات أسرع من سرعة المعالجة العادية الفراغية الثابتة الثابتة (connection conn) {try {string sql = "insert in test_user1 (userId ، username ، loadingtime)" + "القيم (؟ ،؟ ،؟)" ؛ // عبارة SQL التي تدرج البيانات التي تم إعدادها pstmt = conn.preparestatement (SQL) ؛ وقت بدء طويل = system.currentTimeMillis () ؛ لـ (int i = 0 ؛ i <1000 ؛ i ++) {pStMt.SetLong (1 ، i) ؛ pStMt.SetString (2 ، "user"+i) ؛ PSTMT.SetDate (3 ، تاريخ جديد (System.CurrentTimeMillis ()))) ؛ PSTMT.ADDBATCH () ؛ // إضافة إلى معالجة الدُفعات} int [] result = pStMt.executeBatch () ؛ System.out.println ("إجمالي الوقت المستغرق:"+(System.CurrentTimeMillis () - وقت البدء)) ؛ pstmt.close () ؛ // أغلق اتصال قاعدة البيانات} catch (sqlexception e) {E.PrintStackTrace () ؛ }} // اتصال قاعدة بيانات الاتصال العام getConnection (مستخدم السلسلة ، تمريرة السلسلة) {connection conn = null ؛ // inclare the connect string driver = "com.mysql.jdbc.driver" ؛ // driver class name url = "jdbc: mysql: // localhost: 3306/test؟" // database url + "useUnicode = true & directionDing = utf8" ؛ // منع Grabled Try {class.forname (driver) ؛ // register (load) driver conn = drivermanager.getConnection (url ، user ، pass) ؛ // get database connection} catch (استثناء e) {e.printstacktrace () ؛ } return conn ؛ }. } catch (استثناء e) {E.PrintStackTrace () ؛ }}}10. عرض ترقيم الصفحات
حزمة javacore1 ؛ استيراد java.sql.connection ؛ استيراد java.sql.drivermanager ؛ استيراد java.sql.preparedstatement ؛ استيراد java.sql.resultset "111111") ؛ // احصل على ترحيل اتصال قاعدة البيانات (conn ، 1،3) ؛ // name method name calls connection ، وحدد الصف الذي يجب عرضه إلى أي صف ReleasEconnection (conn) ؛ // reext the database connection} // page query public static void paging (connection conn ، int startIndex ، int total) reparedStatement PSTMT = conn.preparestatement (SQL) ؛ PSTMT.SetInt (1 ، startIndex) ؛ PSTMT.Setint (2 ، المجموع) ؛ resultset rs = pstmt.executequery () ؛ بينما (rs.next ()) {system.out.print ("رقم العمل:"+rs.getInt (1)) ؛ System.out.println ("رقم القسم:"+Rs.GetInt ("Department_id")) ؛ } rs.close () ؛ pstmt.close () ؛ } catch (sqlexception e) {E.PrintStackTrace () ؛ }} // اتصال قاعدة بيانات الاتصال العام getConnection (مستخدم السلسلة ، تمريرة السلسلة) {connection conn = null ؛ // inclare the connect string driver = "com.mysql.jdbc.driver" ؛ // driver class name url = "jdbc: mysql: // localhost: 3306/test؟" // database url + "useUnicode = true & directionDing = utf8" ؛ // منع Grabled Try {class.forname (driver) ؛ // register (load) driver conn = drivermanager.getConnection (url ، user ، pass) ؛ // get database connection} catch (استثناء e) {e.printstacktrace () ؛ } return conn ؛ }. } catch (استثناء e) {E.PrintStackTrace () ؛ }}}11. يمكن تمرير مجموعة النتائج
package javacore1 ؛ import java.sql.connection ؛ استيراد java.sql.drivermanager ؛ استيراد java.sql.preparedstatement ؛ استيراد java.sql.resultset "111111") ؛ // الحصول على اتصال قاعدة البيانات scrpllresult (conn) ؛ // اسم الأسلوب استدعاء قاعدة قاعدة البيانات releaseconnection (conn) ؛ // reext the database connection} // scroll strolk set to work public static void scrollresult (connection conn) {try {string sql = "select * from from from from offlice" ؛ // يمكن تمرير التمرير // التزامن ، مجموعة النتائج للقراءة فقط ، ولا يمكن تعديل المعدة. preparedStatement PSTMT = conn.preparestatement (sql ، resultset.type_scroll_sevitive ، resultset.concur_read_only) ؛ resultset rs = pstmt.executequery () ؛ بينما (rs.next ()) {// travel system.out.print ("رقم العمل:"+rs.getLong (1)) ؛ System.out.println ("name"+rs.getString ("last_name")) ؛ } بينما (rs.previous ()) {// travel system.out.print ("رقم العمل:"+rs.getlong (1)) ؛ System.out.println ("رقم العمل:"+rs.getLong (1)) ؛ } rs.absolute (6) ؛ // السفر مباشرة إلى السطر إذا (rs.next ()) {system.out.print ("رقم العمل:"+rs.getlong (1)) ؛ System.out.println ("......... رقم القسم:"+rs.getString ("department_id")) ؛ } rs.close () ؛ pstmt.close () ؛ } catch (sqlexception e) {E.PrintStackTrace () ؛ }} // اتصال قاعدة بيانات الاتصال العام getConnection (مستخدم السلسلة ، تمريرة السلسلة) {connection conn = null ؛ // inclare the connect string driver = "com.mysql.jdbc.driver" ؛ // driver class name url = "jdbc: mysql: // localhost: 3306/test؟" // Database URL + "useUnicode=true&characterEncoding=UTF8";// Prevent garbled try { Class.forName(driver);// Register (load) driver conn = DriverManager.getConnection(url, user, pass);// Get database connection} catch (Exception e) { e.printStackTrace(); } return conn ؛ }// Release database connection public static void releaseConnection(Connection conn) { try { if (conn != null) conn.close(); } catch (Exception e) { e.printStackTrace(); }}}五.把上面十一个放在一起当然最方便省事。(需要用谁,只需把前面的注释打开便行)
package javacore1;import java.sql.CallableStatement;import java.sql.Connection;import java.sql.Date;import java.sql.DriverManager;import java.sql.PreparedStatement;import java.sql.ResultSet;import java.sql.SQLException;import java.sql.Statement;import java.sql.Statement;import java.sql.Types;public class jdbcMySql {public static void main(String[] args) { Connection conn = getConnection("h3", "111111"); // Get database connection //query(conn); //1. Query data //insert(conn); //2. Insert data //delete(conn); //3. Delete data //update(conn); //4. Update data //transCash(conn); //5. Transfer//execProc(conn); //6. Find stored procedures without parameters //int cnt = getMulti(conn); //7. Find stored procedures with parameters //System.out.println("People number: " + cnt); //Find stored procedures with parameters //planInsert(conn); //8. Ordinary processing //batchInsert(conn); //9. Batch processing // paging(conn,1,3);//10. Pagination display//scrpllResult(conn);//11. The result set can be scrolled to releaseConnection(conn);// Release database connection}//1. Query data, define query method public static void query(Connection conn){ String Sql="select * from employees"; try{ Statement stmt=conn.createStatement(); // You can also use PreparedStatement to do ResultSet rs=stmt.executeQuery(Sql);//Execute the sql statement and return the end while(rs.next()){//Transfer the result set System.out.println("People number:"+rs.getString("employee_id")+"Salary:"+rs.getString("salary")); } if(rs !=null){ try{ rs.close(); } catch (SQLException e){ e.printStackTrace(); } } if(stmt !=null){ try{ stmt.close(); } catch(SQLException e){ e.printStackTrace(); } } if(conn !=null){ try{ conn.close(); }catch(SQLException e){ e.printStackTrace(); } } } catch(Exception e){ e.printStackTrace(); }}//2. Insert data public static void insert(Connection conn) { try { String sql = "insert into employees(employee_id,last_name,salary,department_id,userid)" + " values ('100010', 'xiaogou', '7000','004','9')"; // SQL statement Statement stmt1 =conn.createStatement(); // Create a Statement object for executing static SQL statements int count = stmt1.executeUpdate(sql); // Execute the SQL statement for insertion operation and return the number of inserted data System.out.println("Inserted" + count + "bar of data" into biao); //Output the processing result of the insertion operation conn.close(); //Close the database connection} catch (SQLException e) { e.printStackTrace(); } }//3. Delete data public static void delete(Connection conn){ String Sql = "delete from employees where employee_id=100009"; try { Statement stmt = conn.createStatement();// Or use the PreparedStatement method stmt.executeUpdate(Sql);// Execute the sql statement if (stmt != null) { try { stmt.close(); } catch (SQLException e) { e.printStackTrace(); } } } catch (SQLException e) { e.printStackTrace(); } } }//4. Update data public static void update(Connection conn){ String Sql = "update employees set salary=8000 where employee_id=100005"; try { Statement stmt1 = conn.createStatement();//Or use PreparedStatement method stmt1.executeUpdate(Sql);//Execute the sql statement if (stmt1 != null) { try { stmt1.close(); } catch (SQLException e) { e.printStackTrace(); }} catch (sqlexception e) {E.PrintStackTrace () ؛ } } //5. Transfer (data exchange) (The original data was 100 and 500, but after implementing this function, it becomes 500 and 100. In fact, to put it bluntly, it is to update the data and change the data) public static void transCash(Connection conn){ Statement stmt = null; try{ conn.setAutoCommit(false);//Close automatic submission String sql = "update employees set salary=500 where employee_id=100001"; stmt = conn.createStatement(); stmt.executeUpdate(sql); sql = "update employees set salary=100 where employee_id=100001"; stmt = conn.createStatement(); stmt.executeUpdate(sql); sql = "update employees set salary=100 where employee_id=100002"; stmt.executeUpdate(sql);//Execute the sql statement, and the above two salaries will be replaced by conn.commit();//Commit transaction}catch(Exception e){ e.printStackTrace(); } finally{ try{ if(stmt != null)stmt.close(); } catch (استثناء e) {E.PrintStackTrace () ؛ } } } }//6. Call the stored procedure without a parameter; public static void execProc(Connection conn){ String sql = "{call raisesalary}"; try { CallableStatement cstmt = conn.prepareCall(sql); cstmt.executeUpdate(); } catch (SQLException e) { e.printStackTrace(); } } //7. Find stored procedures with parameters public static int getMulti(Connection conn) { int dept_id = 100001; int cnt = 0; String sql = "{call calc_emp_count(?,?)}"; try { CallableStatement cstmt = conn.prepareCall(sql);//Initialize the Statement object cstmt.setInt(1, dept_id);//CallableStatement.setxxx(parameter, value) or (number, value), and PreparedStatement.setxxx(number, value) can only be like this cstmt.setInt(2, cnt); // cstmt.registerOutParameter(2, Types.INTEGER);//Declare the output parameter cstmt.executeUpdate();//Execute the sql statement cnt = cstmt.getInt(2);//Get the result if (cstmt != null) { cstmt.close();//Release the Statement object} } catch (Exception e) { e.printStackTrace(); } return cnt; }//8. Normal processing public static void planInsert(Connection conn) { try { String sql = "insert into test_user1(userid,username,loadingtime)" + " values (?,?,?)"; // SQL statement to insert data PreparedStatement pstmt=conn.prepareStatement(sql); long startTime=System.currentTimeMillis(); for(int i=0;i<1000;i++){ pstmt.setLong(1, i); pstmt.setString(2, "user"+i); pstmt.setDate(3, new Date(System.currentTimeMillis())); pstmt.executeUpdate(); } System.out.println("Total time taken: "+(System.currentTimeMillis() - startTime)); pstmt.close(); //Close the database connection} catch (SQLException e) { e.printStackTrace(); } } //9. The speed of batch insertion is faster than that of ordinary processing public static void batchInsert(Connection conn) { try { String sql = "insert into test_user1(userid,username,loadingtime)" + " values (?,?,?)"; // SQL statement that inserts data PreparedStatement pstmt=conn.prepareStatement(sql); long startTime=System.currentTimeMillis(); for(int i=0;i<1000;i++){ pstmt.setLong(1, i); pstmt.setString(2, "user"+i); pstmt.setDate(3, new Date(System.currentTimeMillis())); pstmt.addBatch();//Add to batch processing} int[] result=pstmt.executeBatch(); System.out.println("Total time consumed: "+(System.currentTimeMillis() - startTime)); pstmt.close(); //Close the database connection} catch (SQLException e) { e.printStackTrace(); } }//10. Pagination query public static void paging(Connection conn,int startIndex,int total){ try{ String sql="select * from employees limit ?,?"; PreparedStatement pstmt=conn.prepareStatement(sql); pstmt.setInt(1, startIndex); pstmt.setInt(2, total); ResultSet rs=pstmt.executeQuery(); while(rs.next()){ System.out.print("work number: "+rs.getInt(1)); System.out.println("Department number: "+rs.getInt("department_id")); }rs.close(); pstmt.close(); }catch(SQLException e){ e.printStackTrace(); } }//11. The result set scrolls to display public static void scrollResult(Connection conn){ try{ String sql="select * from employees"; //The result set can be scrolled//concurrency, the result set is read-only, and the PreparedStatement pstmt=conn.prepareStatement(sql, ResultSet.TYPE_SCROLL_SENSITIVE, ResultSet.CONCUR_READ_ONLY); ResultSet rs=pstmt.executeQuery(); while(rs.next()){ //Travel System.out.print("work number: "+rs.getLong(1)); System.out.println("name"+rs.getString("last_name")); }while(rs.previous()){//Travel System.out.print("work number: "+rs.getLong(1)); System.out.println("salary"+rs.getInt("salary")); } rs.absolute(6);//Indicate which line to jump directly to if(rs.next()){ System.out.print("work number: "+rs.getLong(1)); System.out.println("........Department number: "+rs.getString("department_id")); } rs.close(); pstmt.close(); } catch(SQLException e){ e.printStackTrace(); } } //Database connection public static Connection getConnection(String user, String pass) { Connection conn = null;//Declare the connection object String driver = "com.mysql.jdbc.Driver";// Driver class name String url = "jdbc:mysql://localhost:3306/test?" // Database URL + "useUnicode=true&characterEncoding=UTF8";// Prevent garbled try { Class.forName(driver);// Register (load) driver conn = DriverManager.getConnection(url, user, pass);// Get database connection} catch (Exception e) { e.printStackTrace(); } return conn ؛ }// Release database connection public static void releaseConnection(Connection conn) { try { if (conn != null) conn.close(); } catch (Exception e) { e.printStackTrace(); } } }六.安装下载的数据库驱动程序jar包,不同的数据库需要不同的驱动程序(但是安装方法都是一样的)
在使用JDBC编程时需要连接数据库,导入JAR包是必须的,导入其它的jar包方法同样如此,导入的方法是
打开eclipse
1.右击要导入jar包的项目,点properties
2.左边选择java build path,右边选择libraries
3.选择add External jars
4.选择jar包的按照路径下的确定后就行了。
Java连接MySQL的最新驱动包下载地址
http://www.mysql.com/downloads/connector/j
1.鼠标放在你建的根目录上面。右击,然后选择最下面的properties。
2.然后左边选择java build path,右边选择libraries ,在选择右边的add External jars ,选择jar包的路径,点击确定就可以了
3.装好后,图如下出现你要添加的包。