/ Forside / Teknologi / Udvikling / C/C++ / Nyhedsindlæg
Login
Glemt dit kodeord?
Brugernavn

Kodeord


Reklame
Top 10 brugere
C/C++
#NavnPoint
BertelBra.. 2425
pmbruun 695
Master_of.. 501
jdjespers.. 500
kyllekylle 500
Bech_bb 500
scootergr.. 300
gibson 300
molokyle 287
10  strarup 270
dynamiske mysql select/insert query fra c
Fra : Kim


Dato : 23-01-03 17:16

hej,
jeg har interfacet en mysql db hvor jeg kan lave select queries ala
statiske "select name from table" men jeg er lidt i tvivl om hvordan jeg skal gøre
det dynamisk. Hvordan skal functionen laves så jeg kan indsætte stien i
db'en?

insertFile(char *path){
//oprette forbindelsen
mysql_query(connection,"INSERT INTO files (path) VALUES (???)" );
//lukke fobindelsen
}

**********'
med et functions kald som: insertFile(/home/looser/sjov.bin);
skal jo gerne give en query streng "INSERT INTO files (path) VALUES
('/home/looser/sjov.bin')"

i php er det simpelt da man blot kan bruge $var og så indsættes
variablens indhold dynamisk, men hvordan skal det gøres i c?


mvh
Kim


 
 
Bertel Brander (24-01-2003)
Kommentar
Fra : Bertel Brander


Dato : 24-01-03 10:04

Kim wrote:

> hej,
> jeg har interfacet en mysql db hvor jeg kan lave select queries ala
> statiske "select name from table" men jeg er lidt i tvivl om hvordan jeg skal gøre
> det dynamisk. Hvordan skal functionen laves så jeg kan indsætte stien i
> db'en?
>
> insertFile(char *path){
> //oprette forbindelsen
> mysql_query(connection,"INSERT INTO files (path) VALUES (???)" );
> //lukke fobindelsen
> }
>
> **********'
> med et functions kald som: insertFile(/home/looser/sjov.bin);
> skal jo gerne give en query streng "INSERT INTO files (path) VALUES
> ('/home/looser/sjov.bin')"
>
> i php er det simpelt da man blot kan bruge $var og så indsættes
> variablens indhold dynamisk, men hvordan skal det gøres i c?
>
>
> mvh
> Kim
>
Hvis jeg forstår dig ret, ønsker du at indsætte strengen fra

parameteren path i strengen "INSERT INTO files (path) VALUES (???)"

i stedet for de tre ??? og så give bruge denne i kaldet til

mysql_query (korrekt?).


I C kunne man:

#include <stdio.h>

insertFile(char *path){
//oprette forbindelsen
char temp[1111]; /* Vær sikke på at der plads nok */
sprintf(temp, "INSERT INTO files (path) VALUES (%s)", path);
mysql_query(connection, temp );

I C++ ville man kunne:

#include <string>

insertFile(char *path){
//oprette forbindelsen
std::string temp = "INSERT INTO files (path) VALUES (";
temp += path;
temp += ')';
mysql_query(connection, temp.c_str() );

Husk at du skal skrive insertFile("/home/looser/sjov.bin");
når du kalder din funktion.


HTH

/bertel
--
Bertel K. Brander
Autor of Wain, a free text editor for programmers:
http://home20.inet.tele.dk/midgaard/program.htm


kim (24-01-2003)
Kommentar
Fra : kim


Dato : 24-01-03 16:44

> Hvis jeg forstår dig ret, ønsker du at indsætte strengen fra
>
> parameteren path i strengen "INSERT INTO files (path) VALUES (???)"
>
> i stedet for de tre ??? og så give bruge denne i kaldet til
>
> mysql_query (korrekt?).
yes yes
sprintf var lige den function jeg kunne bruge til det :)

mvh
Kim

Byrial Jensen (24-01-2003)
Kommentar
Fra : Byrial Jensen


Dato : 24-01-03 20:04

Bertel Brander <bertel@post4.tele.dk> skrev:
> I C kunne man:
>
> #include <stdio.h>
>
> insertFile(char *path){
> //oprette forbindelsen
> char temp[1111]; /* Vær sikke på at der plads nok */
> sprintf(temp, "INSERT INTO files (path) VALUES (%s)", path);
> mysql_query(connection, temp );

Man kan ikke være sikker på at temp er stor nok. Brug f.eks.
snprintf() i stedet eller tjek evt. længden af path før brug.

kim (25-01-2003)
Kommentar
Fra : kim


Dato : 25-01-03 12:06

hej
> Man kan ikke være sikker på at temp er stor nok. Brug f.eks. snprintf()
> i stedet eller tjek evt. længden af path før brug.

Til mange andre sprog kan jeg finde en API og arbejde derudfra. Men hvor kan
man finde en API til alle de biblioteker der er til linux? fx til at
finde hvad forskellen er mellem sprinf og snprintf

mhv
Kim

Kim Hansen (25-01-2003)
Kommentar
Fra : Kim Hansen


Dato : 25-01-03 12:36

kim <lkjsdf@lksdf.dk> writes:

> hej
> > Man kan ikke være sikker på at temp er stor nok. Brug f.eks. snprintf()
> > i stedet eller tjek evt. længden af path før brug.
>
> Til mange andre sprog kan jeg finde en API og arbejde derudfra. Men hvor kan
> man finde en API til alle de biblioteker der er til linux? fx til at
> finde hvad forskellen er mellem sprinf og snprintf

De ligger som manualsider, prøv at skrive 'man snprintf', der er en
god chance for at de allerede er installeret.

I Debian ligger siderne i manpages-dev pakken.

--
Kim Hansen | |\ _,,,---,,_ | Det er ikke
Dalslandsgade 8, A708 | /,`.-'`' -. ;-;;,_ | Jeopardy.
2300 København S | |,4- ) )-,_. ,\ ( `'-' | Svar _efter_
Phone: 32 88 60 86 | '---''(_/--' `-'\_) | spørgsmålet.

Jacob Atzen (25-01-2003)
Kommentar
Fra : Jacob Atzen


Dato : 25-01-03 12:35

kim <lkjsdf@lksdf.dk> writes:

> hej
> > Man kan ikke være sikker på at temp er stor nok. Brug f.eks. snprintf()
> > i stedet eller tjek evt. længden af path før brug.
>
> Til mange andre sprog kan jeg finde en API og arbejde derudfra. Men hvor kan
> man finde en API til alle de biblioteker der er til linux? fx til at
> finde hvad forskellen er mellem sprinf og snprintf

man sprintf

--
Med venlig hilsen
- Jacob Atzen

Søg
Reklame
Statistik
Spørgsmål : 177491
Tips : 31966
Nyheder : 719565
Indlæg : 6408458
Brugere : 218886

Månedens bedste
Årets bedste
Sidste års bedste