04. marts 2004 - 20:33
Der er
22 kommentarer og 1 løsning
C++ og mysql
Jeg er rimelig ny i c++ og vil gerne bruge mysql til database fra mit program. Jeg har downloadet c++ API (mysql++). Og har prøvet følgende eks. fra mysql's website. Men den fejler ved linien #include <sqlplus.hh>. Hvad skal gøres ?. #include <iostream> #include <iomanip> #include <sqlplus.hh> int main() { Connection con("mysql_cpp_data"); ...mere følger return 0; }
Annonceindlæg fra Arctic Wolf
04. marts 2004 - 20:34
#1
Har selvfølgelig også installeret mysql ;o)
04. marts 2004 - 21:23
#2
Hej don_r Har du angivet stien til header filen ? Hedder header filen ikke #include <sqlplus.h> istedet for #include <sqlplus.hh> mvh Laffe
04. marts 2004 - 21:24
#3
Jeg har aldrig kunnet få mysql++ til at virke. MySQL C API virker fint fra C++. ODBC virker fint fra C++.
04. marts 2004 - 22:36
#4
arne_v kan du forklare hvordan jeg gør det med C API. Gider ikke med ODBC.
04. marts 2004 - 22:39
#5
Et simpelt eksempel (som jeg har postet før): #include <stdio.h> #include <stdlib.h> #include "mysql.h" int main() { MYSQL *handle; MYSQL_RES *result; MYSQL_ROW row; int nfields; int *l; int i; handle= mysql_init(NULL); if(handle == NULL) { printf("MySQL error: %s", mysql_error(handle)); exit(1); } if(!mysql_real_connect(handle, "localhost", "", "", "Test", 0, NULL, 0)) { printf("MySQL error: %s", mysql_error(handle)); exit(1); } mysql_query(handle, "SELECT * FROM T1"); result = mysql_store_result(handle); nfields = mysql_num_fields(result); while ((row = mysql_fetch_row(result))) { l = (int *)mysql_fetch_lengths(result); for (i=0; i<nfields; i++) { printf(" %.*s", l[i], row[i] ? row[i] : "NULL"); } printf("\n"); } mysql_free_result(result); mysql_close(handle); return 0; }
04. marts 2004 - 22:40
#6
Command line build med MS VC++ 6.0: cl /DSOCKET=int /I\mysql\include mysqltest.c ..\mysql\lib\opt\libmysql.lib
04. marts 2004 - 22:42
#7
Command line build med BC++B 5.5: coff2omf \mysql\lib\opt\libmysql.lib .\libmysql.lib bcc32 -DSOCKET=int -I\mysql\include mysqltest.c libmysql.lib
04. marts 2004 - 22:43
#8
Jeg får en unable to open "mysql.h"
04. marts 2004 - 22:44
#9
Så: 1) definer SOCKET=int (jeg har aldrig gidet finde ud af hvad for en .h fil jeg skal include for at undgå dette) 2) be compileren søge efter header filer i \mysql\include 3) be linkerne bruge \mysql\lib\opt\libmysql.lib (og med Borland skal man lige konvertere fra COFF til OMF)
04. marts 2004 - 22:45
#10
Du skal lige have bedt compileren kigge i det rigtige directory efter mysql.h
04. marts 2004 - 22:48
#11
Jeg ved godt at jeg er tung, men kan du forklare hvordan jeg gør de forskellige ting og hvorfor jeg skal gøre det ;o)
04. marts 2004 - 22:51
#12
Hvilken compiler bruger du ?
04. marts 2004 - 22:52
#13
#1 ved jeg ikke #2 er fordi at du skal fortælle din compiler/linker hvor mysql.h og libmysql.lib ligger
04. marts 2004 - 22:54
#14
Jeg bruger borland c++ builder 5.5
04. marts 2004 - 23:02
#15
Jeg tror jeg har fået opfyldt punkt 2 og 3
04. marts 2004 - 23:02
#16
definer SOCKET=int skal det gøres med en typedef ?
04. marts 2004 - 23:06
#17
Ja. Men også med en: #define SOCKET int aller øverst i programmet.
04. marts 2004 - 23:06
#18
Har du konverteret fra COFF til OMF ?
04. marts 2004 - 23:10
#19
COFF til OMF sidste mangler jeg :O) Har ingen ide
04. marts 2004 - 23:19
#20
Det er linien: coff2omf \mysql\lib\opt\libmysql.lib .\libmysql.lib der gør det. Du skal nok lave det i en DOS box. Og husk at holde styr på hvilken libmysql.lib er COFF og hvad for en der er OMF.
04. marts 2004 - 23:20
#21
Der er iøvrigt en fjerde ting. Den DLL der ligger ved siden af lib filen skal være i PATH når du kører dit program.
04. marts 2004 - 23:20
#22
Og et svar
04. marts 2004 - 23:21
#23
(og jeg er snart på vej i seng)
Kurser inden for grundlæggende programmering