Tam Sürümünü Görmek İçin : C / C++ ile MySQL
sekizbit
09/05/2007, 19:15
Merhaba, sitenin döküman kısmında bu konu ile ilgili bir döküman var. C++ ve MySQL konusunda orta dereceli bilgi sahibiyim. Dökümanı okudum ancak orda kullanılan mysql.h isimli kütüphaneyi nasıl kullanacağımı çözemedim. IDE olarak Dev C++ ve Visaul C 6 ile denedim. belirtilen mysql.h kütüphanesini bilgsayarıma mysql in full sürümünü kurarak içinden çektim(belki de hatayı burda yaptım, bu kütüphaneyi başka yerden mi bulmalıydım ? ). Kütüphaneyi dev c++ 'ın standart include dizinine attım ve boş bi programı derlemeye çalıştığımda kütüphane içersinden bir sürü hata çıktı. Daha önce C++ veya C ile mysql'e bağlanan varsa biraz ayrıntılı bilgi verebilirmi ?
zbahadir
09/05/2007, 20:17
Yeni kullanıcılar için paralı ve çok kullanışlı bir component var;
DAC for MySQL (http://www.microolap.com/products/connectivity/mysqldac/order/)
KamilORS
09/05/2007, 20:25
Sadece mysql.h kütüphanesini atmamalısınız. Bir ara incelediğimde mysql.h kütüphenesine bağlı bir çok kütüphane var idi o klasörün içinde. siz en iyisi mysql olarak bir klasör açık includes içine oraya tüm kütüphaneleri atın...
sekizbit
09/05/2007, 20:37
zaten sadece mysql.h i değil dediğiniz gibi bütün klasörü attım. şu anda kullandiğim bilgisayarda derleyici olmariği için hatayı yazamıyorum. DAC bildiğim kadarı ile borland C builder ile çalışıyor( yanlış biliyorda olabilirim), dahada önemlisi ben her ne kadar standart C olmasada kendi yazdığım C kodunu kullanmak isterim.
KamilORS
09/05/2007, 20:42
Eğer mysql.h hata veriyor ise sende odbc kullanabilirsin. Şahsen ben mysql için CBuilder da odbc kullanıyorum. Şuan 5.0 betasıda çıkmış durumda fakat 3.51 kararlı sürüm.
http://dev.mysql.com/downloads/connector/odbc/3.51.html
sekizbit
09/05/2007, 22:27
Teşekkür ederim ODBC hayatımda hiç kullanmadım, ne olduğu hakkında ufak bi bilgim var sadece. Ama bu birazda yapmam gereken şeyden çok neden yapamıyorum 'a döndü. ODBC kullanarak belki bu yazılımım için mysql bağlantısını çözebilirim ama ben neden mysql in kendi sağladığı kütüphane ile bu bağlantıyı kuramıyorum ? bu problemi aşmak istiyorum, eğer bilen biri varsa.
PlayG7SeveN
09/05/2007, 23:24
bende bu sorunu al1yordum mysql++... vc6 denedim olmamisti.. çok hata ç1kar1yor... bunun nedeni tek bisey olabilir oda vc 6 n1n çok eski bir derleyici oldudur... ben suan vc8 yani 2005 full sürümünü elde etmeye çal1s1yorum...( piyasadaki vc8 'in bedeva 450 mb lik demoda olmaz.. cogu kütüphane eksik ) buyuk ihtimal mesele çözülecektir...
PlayG7SeveN
10/05/2007, 10:55
bu odbc mysql le ilgili örnek varm1 acaba..bi bakay1m eger kolay1ma gelirse odbc le urs1r1m daha iyi..
Dev c++ yada CodeBlocks için libmysql'in Devpak'ını indir kur öyle dene
PlayG7SeveN
10/05/2007, 17:20
http://forums.mysql.com/read.php?45,49606,49606
bu sitedeki örengi mingw ve codeblocks derlemeye çal1st1m compile ederken hiç bi sorunu yok(0 a 0 hata) ... ancak build yapt1g1m zaman asag1daki sorunu al1yorumm.....
--------------------Configuration: sa - Debug--------------------
Compiling source file(s)...
asd.cpp
Linking...
C:\MinGWStudio\Templates\sa\Debug\asd.o(.text+0x12 8): In function `main':
C:\MinGWStudio\Templates\sa\asd.cpp:24: undefined reference to `mysql_init@4'
C:\MinGWStudio\Templates\sa\Debug\asd.o(.text+0x17 1):C:\MinGWStudio\Templates\sa\asd.cpp:25: undefined reference to `mysql_real_connect@32'
C:\MinGWStudio\Templates\sa\Debug\asd.o(.text+0x1e 0):C:\MinGWStudio\Templates\sa\asd.cpp:32: undefined reference to `mysql_get_server_info@4'
C:\MinGWStudio\Templates\sa\Debug\asd.o(.text+0x24 e):C:\MinGWStudio\Templates\sa\asd.cpp:45: undefined reference to `mysql_close@4'
C:\MinGWStudio\Templates\sa\Debug\asd.o(.text+0x29 e): In function `Z10showTablesP8st_mysql':
C:\MinGWStudio\Templates\sa\asd.cpp:56: undefined reference to `mysql_list_tables@8'
C:\MinGWStudio\Templates\sa\Debug\asd.o(.text+0x2a f):C:\MinGWStudio\Templates\sa\asd.cpp:57: undefined reference to `mysql_fetch_row@4'
C:\MinGWStudio\Templates\sa\Debug\asd.o(.text+0x30 1):C:\MinGWStudio\Templates\sa\asd.cpp:62: undefined reference to `mysql_fetch_row@4'
C:\MinGWStudio\Templates\sa\Debug\asd.o(.text+0x31 4):C:\MinGWStudio\Templates\sa\asd.cpp:64: undefined reference to `mysql_free_result@4'
C:\MinGWStudio\Templates\sa\Debug\asd.o(.text+0x4b c): In function `Z12showContentsP8st_mysqlPKc':
C:\MinGWStudio\Templates\sa\asd.cpp:86: undefined reference to `mysql_query@8'
C:\MinGWStudio\Templates\sa\Debug\asd.o(.text+0x4d 2):C:\MinGWStudio\Templates\sa\asd.cpp:88: undefined reference to `mysql_use_result@4'
C:\MinGWStudio\Templates\sa\Debug\asd.o(.text+0x4e d):C:\MinGWStudio\Templates\sa\asd.cpp:91: undefined reference to `mysql_num_fields@4'
C:\MinGWStudio\Templates\sa\Debug\asd.o(.text+0x50 1):C:\MinGWStudio\Templates\sa\asd.cpp:92: undefined reference to `mysql_fetch_row@4'
C:\MinGWStudio\Templates\sa\Debug\asd.o(.text+0x5f f):C:\MinGWStudio\Templates\sa\asd.cpp:111: undefined reference to `mysql_fetch_row@4'
C:\MinGWStudio\Templates\sa\Debug\asd.o(.text+0x62 d):C:\MinGWStudio\Templates\sa\asd.cpp:115: undefined reference to `mysql_free_result@4'
sa.exe - 14 error(s), 0 warning(s)
PlayG7SeveN
10/05/2007, 17:47
buyrun buda codebloacks hatas1
Project : Console application
Compiler : GNU GCC Compiler (called directly)
Directory : C:\Documents and Settings\Administrator\Desktop\Yeni Klasör\
--------------------------------------------------------------------------------
Switching to target: default
Linking console executable: C:\Documents and Settings\Administrator\Desktop\Yeni Klasör\console.exe
.objs\main.o:main.cpp.text+0x40): undefined reference to `mysql_init@4'
.objs\main.o:main.cpp.text+0x89): undefined reference to `mysql_real_connect@32'
.objs\main.o:main.cpp.text+0xf8): undefined reference to `mysql_get_server_info@4'
.objs\main.o:main.cpp.text+0x166): undefined reference to `mysql_close@4'
.objs\main.o:main.cpp.text+0x190): undefined reference to `mysql_list_tables@8'
.objs\main.o:main.cpp.text+0x1a1): undefined reference to `mysql_fetch_row@4'
.objs\main.o:main.cpp.text+0x1f1): undefined reference to `mysql_fetch_row@4'
.objs\main.o:main.cpp.text+0x204): undefined reference to `mysql_free_result@4'
.objs\main.o:main.cpp.text+0x290): undefined reference to `mysql_query@8'
.objs\main.o:main.cpp.text+0x2a6): undefined reference to `mysql_use_result@4'
.objs\main.o:main.cpp.text+0x2c1): undefined reference to `mysql_num_fields@4'
.objs\main.o:main.cpp.text+0x2d5): undefined reference to `mysql_fetch_row@4'
.objs\main.o:main.cpp.text+0x3d1): undefined reference to `mysql_fetch_row@4'
.objs\main.o:main.cpp.text+0x3ff): undefined reference to `mysql_free_result@4'
collect2: ld returned 1 exit status
Process terminated with status 1 (0 minutes, 0 seconds)
0 errors, 0 warnings
acehreli
10/05/2007, 20:15
undefined reference to `mysql_init@4', mysql_init islevinin taniminin bulunamadigin soyluyor. Yani senin programinda mysql_init diye bir islev cagrisi var, ama program olusturulurken baglayici (linker) senin cagrini baglayacagi bir tanim bulamiyor.
Bu sorunu gidermek icin myslq'in kutuphane dosyasini da kullanman gerekiyor. Ayarlarda bir yerde butun kutuphanelerin listelendigi bir yer olmasi gerek. mysql'in kutuphane dosyasi ne ise (.lib ile bitiyor olabilir) onu oraya ekle.
Ali
Eğer devpakı kurduysan library dosyası "libmysql.a" ve libmysql.dll gereken yerelere konur. Sende CodeBlocks için söylüyorum. Projects->Build Options -> Linker ->Link libraries kısmına libmysql.a yı ekle.
Mingw Derleyicisi için static library uzantısı .a dır
PlayG7SeveN
11/05/2007, 17:15
bu devpak dediniz devc++ için deyilmi?
--------
codeblock libmysql.a ekledim yine ayn1 sorunu ald1m..
--------
eger codeblock içinde devpack kurmak gerekiyorsa... bunun için ilgili dosyay1 nereden bulabiliriz..
Plugins->DevPack Updater installer dan yapabilirsin
yada
elle
İnternetten devpack'ı indirip 7zip adlı programla açıp içinden gereken dosyaları alıp
gereken yerlere koyabilirsin
Ek olarak CodeBlocks ve DevCpp proje dosyası yolluyorum onları bir dene
PlayG7SeveN
11/05/2007, 17:56
vc6 ile çalıştırdım... ama localhost veya 127.0.0.1 yapt1m baglanmad1 neyse ... isim vc6 ile deyil zati...
bakal1m devpak upload ediyoruz isallah sonucu al1r1z
bu arada buradaki arkadas vc6 ile derlemek istiyorsa verilen inculude ve linkleri tan1ts1n..ve project >>settings>>link bölümünde object/library modüles bölümüne libmysql.lib eklersen sorun çözülecek...
PlayG7SeveN
11/05/2007, 18:03
bu arada senin gönderdiin örnegi vc6 ile denedim 127.0.0.1 ve _ifreyi ve kullan1c1y1 db yazd1m derledim hiç hata vermedii.. exeyide olusturdu... ve sonra exeye t1klad1g1mda giris noktas1nda hata diye bir hata mesaj1 ald1m..
sekizbit
11/05/2007, 20:05
Öncelikle herkese görüşlerini paylaştığı için teşekkür ederim. Denemelerim sonucu aldığım hataları ayrıntıları ile yazacağım umarım biri yardım edebilir. IDE olarak DEV C++ kullanıyorum. Bütün denemeler DEV C ++ 'ta yapılmıştır.
Yukardaki linkte verilen örnek mysql bağlantı dosyasında include edilen bir kütphane var
#include <mysql/mysql.h> bu mysql dizini içinde bulunan kütüphaneleri nasıl elde ettiniz bilmiyorum ama ben bilgisayara mysql serveri kurunca içinden çıkan include dizininden aldım. Bu kütüphaneyi project ayarlarından ekstra include directory olarak ayarladım ve
#include <cstdlib>
#include <iostream>
#include <sys/time.h>
#include <mysql.h>
bu dosyalar include ederek derlemeye çalıştım.
"183 C:\myesk\mysql_com.h `SOCKET' does not name a type " gibi bir kaç tane hata aldım.
Daha sonra http://tangentsoft.net/mysql++/ linkinden mysql++ 'I indirdim. onu da projeye include ettiğimde mysql.h ın içersindeki tanınmayan blokları artık tanır hale geldi.
Linker hatalarını gidermek için, devpak'ın libmysql ini kurdum ve progamı -lmysql parametresi ile derledim.
Evet artık derleyebiliyorum :) ancak yine bir sorunum var. derlenmiş exe yi çalıştırmayı denediğimde
MYSQL *mysql;
mysql_init(mysql);
mysql init satırını icra etmeye çalışırken, şu meşhur windowsun Üzerinde Gönder / Gönderme Seçeneği olan hata raporu penceresini alıyorum.
Hata imzası
AppName: mysql.exe AppVer: 0.0.0.0 ModName: libmysql.dll
ModVer: 0.0.0.0 Offset: 000031d9
İşetilm sistemim XP SP2. IDE Dev C++ 4.9.9.2
PlayG7SeveN
11/05/2007, 21:01
simdi ben sorunumu hallettim simdi senin sorunu çözelim...
mysql kur düzenlice
1. yöntem = ilk önce http://prdownloads.sourceforge.net/devpaks/libmysql-4.1.13a-1sid.DevPak (http://prdownloads.sourceforge.net/devpaks/libmysql-4.1.13a-1sid.DevPak)
bu dosyayi indir...bunu bir zip program1yla aççç..ve daha sonra c:/Dev-Cpp içine lib ve inculude klasörlerini felan hepsini yap1st1r...
2. yöntem = code::bloacks kurabilirsin sistemine... daha sonra program1 çal1st1rarak puligins bölümnden devpak istal diyerek... yükliyecei yeri c:/Dev-Cpp olarak ayarla otomatik oalrak indirir ve kurar...
daha sonra Dev-Cpp calistir... mysql/inculude mysql/libleri project>>project options >>drectiroies bölümünde göster...
yine libleri project>>project options >>parameters >>linker bölümüne c:/Dev-Cpp/lib/libmysql.a ekle
daha sonra
/*
Name: mysql.cpp
Copyright: 2005 Frantisek Sidak
Author: Frantisek Sidak
Date: 11.08.05 15:24
Description: simple MySQL connection test
*/
#include <windows.h>
#include <iostream>
#include <mysql/mysql.h>
using namespace std;
int main()
{
//connection params
char *host = "127.0.0.1";
char *user = "root";
char *pass = "sifre";
char *db = "mysql";
//sock
MYSQL *sock;
sock = mysql_init(0);
if (sock) cout << "sock handle ok!" << endl;
else {
cout << "sock handle failed!" << endl;
return EXIT_FAILURE;
}
//connection
if (mysql_real_connect(sock, host, user, pass, db, 0, NULL, 0))
cout << "connection ok!" << endl;
else {
cout << "connection failed!" << endl;
return EXIT_FAILURE;
}
//wait for posibility to check system/mysql sockets
system("PAUSE");
//closing connection
mysql_close(sock);
return EXIT_SUCCESS;
}
derleyebilirsin porblemsiz çal1smas1 gerekiyor...
PlayG7SeveN
11/05/2007, 21:03
bu arada
http://www.linuxfocus.org/Turkce/September2003/article304.shtml
örnek çal1smalar mevcut
PlayG7SeveN
11/05/2007, 21:39
bu arada teskkür etmeye unuttum ...herkese tesekkurler
sekizbit
12/05/2007, 16:50
aslında son postu attığımda ben mysql 'e bağlanabiliyormuşum. ancak mysql_init fonksiyonunu hatalı kullandığım için hata veriyomuş program. herkese tekrardan teşekkür ederim umarım başka problem çıkmıycak. bu konuyu iyice öğrendikten sonra ayrıntılı bi makale yazıcam :)
PlayG7SeveN
13/05/2007, 18:07
acaba bu konu hakkında geniş bir tutorial varmı... ben pek göremedimde..
Forum Yazılımı : vBulletin v3.6.8, Copyright ©2000-2008, Jelsoft Enterprises Ltd.