ด้วยบทช่วยสอนนี้ฉันนำเสนอต่อชุมชนถึงวิธีการเข้าถึงฐานข้อมูล MySQL จากภาษาโปรแกรม C และไม่ต้องใช้การอ้างอิงมากเกินไปเพียงแค่
libmysqlclient
ฉันหวังว่าจะเป็นประโยชน์สำหรับผู้ที่ต้องการเอกสารประเภทนี้ดังนั้นจึงยังคงมีส่วนร่วมในชุมชน SL และช่วยเหลือผู้ที่ไม่มีอินเทอร์เน็ต
องค์ประกอบ
ก่อนอื่นเราต้องตรวจสอบว่าเราได้ติดตั้งไลบรารีการออกแบบไว้แล้ว *-dev
เพื่อให้สามารถเข้าถึงจาก C / C ++ ไปยัง MySQL
mysql_config --libs
ควรมีลักษณะดังนี้:
-Wl, -Bsymbolic-functions –L / usr / lib / mysql -lmysqlclient rdynamic
ในกรณีที่คุณตรวจสอบว่าไม่ได้ติดตั้งไลบรารีเราจะติดตั้งด้วยคำสั่งต่อไปนี้:
sudo apt-get ติดตั้ง libmysqlclient-dev mysql_config --cflags -I / usr / include / mysql -DBIG_JOINS = 1 -fno-tight-aliasing -DUNIV_LINUX -DUNIV_LINUX
เนื่องจากเราตรวจสอบและติดตั้งสิ่งที่เราต้องการสำหรับการเชื่อมโยงระหว่าง MySQL และ C เราจึงดำเนินการสร้างฐานข้อมูล:
สร้างการทดสอบฐานข้อมูล ใช้ทดสอบ; สร้างข้อมูลตาราง (id int AUTO_INCREMENT ไม่ใช่ 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);
การเขียนโปรแกรมและการคอมไพล์
เราสร้างรหัสต่อไป:
Query.c
/ * ไลบรารีที่จะใช้ * / #include / * ไลบรารีที่ช่วยให้เราใช้ประโยชน์จากการเชื่อมต่อและการสืบค้นกับ MySQL * / #include / * ในการใช้ printf ฯลฯ * / int หลัก () {MYSQL * conn; / * ตัวแปรการเชื่อมต่อสำหรับ MySQL * / MYSQL_RES * res; / * ตัวแปรที่จะมีผลลัพธ์ของแถวแบบสอบถาม * / MYSQL_ROW; / * ตัวแปรที่จะมีฟิลด์สำหรับแต่ละระเบียนที่ปรึกษา * / char * server = "localhost"; / * ที่อยู่เซิร์ฟเวอร์ 127.0.0.1, localhost หรือที่อยู่ IP * / char * user = "root"; / * ผู้ใช้เพื่อสอบถามฐานข้อมูล * / ถ่าน * รหัสผ่าน = "root"; / * รหัสผ่านสำหรับผู้ใช้ที่มีปัญหา * / char * database = "test"; / * ชื่อของฐานข้อมูลที่ต้องการค้นหา * / conn = mysql_init (NULL); / * initialization เป็น 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 (เชื่อมต่อ); printf("ID \ tName \ t \ age \ n"); ในขณะที่ ((row = mysql_fetch_row (res))! = NULL) / * วนรอบตัวแปร res พร้อมบันทึกทั้งหมดที่ได้รับเพื่อใช้งาน * / printf("% s \ t% s \ t% s \ n", แถว [0], แถว [1], แถว [2]); / * ตัวแปร row จะกลายเป็นอาร์เรย์สำหรับจำนวนฟิลด์ในตาราง * / / * ตัวแปร res ถูกปล่อยและปิดการเชื่อมต่อ * / mysql_free_result (res) mysql_close (เชื่อมต่อ); }
เรารวบรวมด้วย:
gcc -o แบบสอบถาม $ (mysql_config --cflags) Query.c $ (mysql_config -–libs)
การยืนยัน
เราดำเนินการ:
./Query
Fuente: บล็อกของ Hugo4295
ดีที่บันทึกไว้ในคลังแสงสคริปต์และบทช่วยสอนบนคอนโซล! +1 สำหรับคุณพันธมิตร ...
สวัสดีขอแสดงความยินดีกับทุกสิ่งที่อยู่บนเว็บเกี่ยวกับปัญหานี้ขอแสดงความยินดีกับคุณที่สุด สงสัยนิดหน่อยทำไมถึงไม่ได้ไฟล์ปฏิบัติการ ??
ในช่วงเวลาของcomílarจะไม่ทำเครื่องหมายข้อผิดพลาดใด ๆ แต่จะไม่สร้าง. /ser4
มีความคิดอย่างไรใน Fedora?
ฉันไม่เห็นด้วยกับการแบ่งปันข้อมูล แต่หากไม่ได้วางลิขสิทธิ์เนื่องจากตัวอย่างนี้จัดทำโดยฉันตั้งแต่ปี 2011 และนี่คือที่อยู่ของแหล่งที่มาดั้งเดิม
http://hugo4295.blogspot.mx/search?q=MYSQL
ไม่มีปัญหา Victor แต่ถ้าคุณสังเกตเห็นว่าฉันไม่ได้นำบทความจากไซต์ของคุณ แต่มาจากที่อื่นที่พวกเขาไม่ได้ใส่แหล่งที่มา อย่างไรก็ตามตอนนี้ฉันแก้ไขบทความ .. 😉
การแบ่งปันความรู้ที่ยอดเยี่ยมเสรีภาพที่ดี
แล้วแทรกได้ยังไง ???