الوصول إلى MySQL باستخدام C

من خلال هذا البرنامج التعليمي ، أقدم للمجتمع كيفية الوصول إلى قاعدة بيانات MySQL من لغة البرمجة C وبدون استخدام الكثير من التبعيات ، فقط

libmysqlclient

آمل أن يكون مفيدًا لأولئك الذين يحتاجون إلى هذا النوع من الوثائق وبالتالي يستمرون في المساهمة في مجتمع SL ومساعدة أولئك الذين ليس لديهم إنترنت.

ترتيب

أولاً يجب أن نتحقق من تثبيت مكتبات التصميم لدينا *-dev لتتمكن من الوصول من C / C ++ إلى MySQL.

mysql_config - ليبس

يجب أن يظهر مثل هذا:

-Wl، -Bsymbolic-function –L / usr / lib / mysql -lmysqlclient rdynamic

في حالة التأكد من عدم تثبيت المكتبة ، نقوم بتثبيتها بالأمر التالي:

sudo apt-get install libmysqlclient-dev mysql_config --cflags -I / usr / include / mysql -DBIG_JOINS = 1 -fno -rict-aliasing -DUNIV_LINUX -DUNIV_LINUX

نظرًا لأننا نتحقق ونثبت ما نحتاجه للرابط بين MySQL و C ، فإننا ننتقل إلى إنشاء قاعدة البيانات:

إنشاء اختبار قاعدة البيانات ؛ اختبار الاستخدام إنشاء بيانات الجدول (معرف int AUTO_INCREMENT NOT NULL PRIMARY KEY ، اسم varchar (40) ، العمر int) ؛ INSERT INTO data VALUES (NULL، 'Alma Hernandez'، 28)، (NULL، 'Jose Sanchez'، 39)، (NULL، 'Martin loera'، 25)، (NULL، 'Leonardo Cortez'، 26)، (NULL ، "جوستافو روميرو" ، 25) ؛

البرمجة والتجميع

نواصل إنشاء الكود:

الاستعلام ج

/ * مكتبات لاستخدامها * / #include / * مكتبة تتيح لنا الاستفادة من الاتصالات والاستعلامات مع MySQL * / #include / * من أجل استخدام printf ، إلخ. * / int main () {MYSQL * conn؛ / * متغير الاتصال لـ MySQL * / MYSQL_RES * res ؛ / * المتغير الذي سيحتوي على نتيجة الاستعلام * / MYSQL_ROW row؛ / * المتغير الذي سيحتوي على الحقول لكل سجل تمت استشارته * / char * server = "localhost" ؛ / * عنوان الخادم 127.0.0.1 أو المضيف المحلي أو عنوان IP * / char * user = "root" ؛ / * المستخدم للاستعلام عن قاعدة البيانات * / char * password = "root" ؛ / * كلمة المرور للمستخدم المعني * / char * database = "test" ؛ / * اسم قاعدة البيانات للاستعلام * / conn = mysql_init (NULL) ؛ / * التهيئة لإلغاء الاتصال * / / * الاتصال بقاعدة البيانات * / if (! mysql_real_connect (conn، server، user، password، database، 0، NULL، 0)) {/ * حدد معلمات الاتصال المحددة مسبقًا * / fprintf (stderr، "٪ s \ n"، mysql_error (conn)) ؛ / * إذا كان هناك خطأ حدد الخطأ الذي كان * / exit (1) ؛ } / * إرسال استعلام SQL * / if (mysql_query (conn، "select * from data")) {/ * تعريف الاستعلام وأصل الاتصال * / fprintf (stderr، "٪ s \ n"، mysql_error ( كون)) ؛ خروج (1) ؛ } res = mysql_use_result (conn) ؛
	printf("المعرف \ t الاسم \ t \ العمر \ n") ؛ while ((row = mysql_fetch_row (res))! = NULL) / * حلقة من خلال المتغير res مع جميع السجلات التي تم الحصول عليها للاستخدام * /
		printf("٪ s \ t٪ s \ t٪ s \ n" ، صف [0] ، صف [1] ، صف [2]) ؛ / * يصبح متغير الصف مصفوفة لعدد الحقول في الجدول * / / * يتم تحرير المتغير res ويتم إغلاق الاتصال * / mysql_free_result (res) ؛ mysql_close (conn) ؛ }

نحن نجمع مع:

gcc -o Query $ (mysql_config --cflags) Query.c $ (mysql_config -–libs)

التحقق

ننفذ:

./Query

مصدر: مدونة Hugo4295


اترك تعليقك

لن يتم نشر عنوان بريدك الإلكتروني. الحقول الإلزامية مشار إليها ب *

*

*

  1. المسؤول عن البيانات: ميغيل أنخيل جاتون
  2. الغرض من البيانات: التحكم في الرسائل الاقتحامية ، وإدارة التعليقات.
  3. الشرعية: موافقتك
  4. توصيل البيانات: لن يتم إرسال البيانات إلى أطراف ثالثة إلا بموجب التزام قانوني.
  5. تخزين البيانات: قاعدة البيانات التي تستضيفها شركة Occentus Networks (الاتحاد الأوروبي)
  6. الحقوق: يمكنك في أي وقت تقييد معلوماتك واستعادتها وحذفها.

  1.   كوراتسوكي قال

    حسنًا ، تم حفظه في ترسانتي من البرامج النصية والبرامج التعليمية على وحدة التحكم! +1 لشريكك ...

  2.   رودريغو قال

    مرحبًا ، تهانينا كثيرًا على كل ما هو موجود على الويب فيما يتعلق بهذه المشكلة ، كانت مشكلتك هي الأقرب إلى الحل. فقط قليل من الشك ، لماذا لا أحصل على الملف القابل للتنفيذ ؟؟

    في وقت comílar ، لا يشير إلى أي خطأ ولكنه لا يولد ./ser4

  3.   أندريلو قال

    أي فكرة عن كيفية القيام بذلك في فيدورا؟

  4.   فيكتور دي لا أو قال

    لا أوافق على مشاركة المعلومات ولكن إذا لم يتم وضع حقوق الطبع والنشر منذ أن قمت بعمل هذا المثال منذ عام 2011 وهنا عنوان المصدر الأصلي

    http://hugo4295.blogspot.mx/search?q=MYSQL

    1.    إيلاف قال

      لا مشكلة فيكتور ولكن إذا لاحظت أنني لم أخرج المقال من موقعك بل من موقع آخر حيث للأسف لم يضعوا المصدر. ومع ذلك ، الآن أقوم بتحرير المقال .. 😉

  5.   ألفونسو أوفيديو لوبيز موراليس قال

    ممتازة تقاسم المعرفة حرية كبيرة

  6.   دانييلا فرنانديز قال

    وكيف يمكن ادخال ؟؟؟