Avatar billede uffe_kld Nybegynder
07. februar 2000 - 18:13 Der er 6 kommentarer og
1 løsning

Strengoperationer i C++

I VB ville man kunne skrive SQL-Query som følger: "Select * from tabel Where felt = "&[Varibel]&" and felt2=11". Er der nogen der kan let måde at skrive det samme i C++ uden MFC.

Hilsen Uffe
Avatar billede dmk Nybegynder
07. februar 2000 - 18:54 #1
Det er desværre ikke nemt at gøre det, hvis ikke du vil bruge nogle "smarte" klasser til det.
Du kan gå direkte på ODBC API'et, men det er ikke enormt nemt.

Hvis du vil se et "så simpelt som muligt" eksempel med ODBC, så se mit svar til følgende spørgsmål:

http://www.eksperten.dk/spm.asp?id=7999

Sig til hvis du vil have noget hjælp.


DMK

Avatar billede uffe_kld Nybegynder
08. februar 2000 - 08:23 #2
Jeg kører SQL-komandoerne igennem ADO, og det fungere. Mit problem er jeg er ny indenfor programmering i C, derfor mangler jeg en metode til at "smelte" strenge og variabler sammen til en ny streng.
Avatar billede bjarke Nybegynder
08. februar 2000 - 09:31 #3
#define MAX 100

char MinStreng[MAX];

sprintf(MinStreng, "Dette er %s streng", "uffe_kld");  // %s for en streng
// %i for heltal, %c for karakterer, %f for decimaltal

//********* eller ********

strcpy(MinStreng, "uffe_kld");
Avatar billede dmk Nybegynder
08. februar 2000 - 09:48 #4
Ups, jeg troede du ville have noget der kunne eksekverer SQL forspørgsler, men du vil bare have noget der kan sætte en streng sammen??

Så er Bjarkes svar vist fin-fin.

Hvis du vil have printet andre værdier ind i din streng en blot andre strenge, så kan du også benytte følgende:
%d    heltal            sprinf(buffer, "dette er et tal: %d", IntegerValue);
%f    float            sprinf(buffer, "dette er en float: %f", FloatValue);
%.2f  float 2 decimaler  sprinf(buffer, "dette er en float: %.2f", FloatValue);


DMK
Avatar billede bjarke Nybegynder
08. februar 2000 - 09:52 #5
Og du kan selvfølgelig indsætte flere variable ad gangen:

int Nr    = 1;
char* Navn = "uffe_kld";
int Alder  = 25;

sprintf(MinStreng, "%i. %s Alder: %i", Nr, Navn, Alder);
Avatar billede soepro Nybegynder
08. februar 2000 - 11:20 #6
C++ Builder (og sikkert også andre C++ varianter) har normalt implementeret en variant af AnsiString, hvorved streng-operationer er ligeså enkle som i Visual Basic:

SQL = "select * from tabel where felt1 = " + IntToStr(numVariabel) + " and felt2 = 11 and felt 3 = " + stringVariabel;

IntToStr oversætter en kvilken som helst tal-variabel til en AnsiString. Du kan også caste alm. char-arrays til d.o. formål:

char charVairabel[100] = "\"Peter Jensen\"";
SQL = "select * from tabel where felt1 = " + (AnsiString)charVariabel;
Avatar billede uffe_kld Nybegynder
08. februar 2000 - 11:24 #7
Så lykkedes det, mit var også at jeg blev nødt at bruge UNICODE-strenge, det er det komandoen "SysAllocString(szQuery)" forventer. Så den endelige linie kom til at se ud som følger:

_stprintf(szQuery,_T("SELECT * FROM notes WHERE [Unique Sale] Like %s"),key)


Tak for hjælpen
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Kurser inden for grundlæggende programmering

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester