18. januar 2006 - 14:10Der er
26 kommentarer og 1 løsning
Microsoft Access..
Goddag Eksperter.. Jeg vil gerne loade/skrive noget data til en .mdb database .. Den kører på bare som fil på samme computer, så intet med netværk. - Men, findes der nogle tutorials til at bruge microsoft access API´et?.. Vil nemlig gerne bruge et lille eksempel på hvordan jeg f.eks. loader noget lign. fra en tabel: Navn, Lvl, Password Og eventuelt hvordan man skriver til dem/opretter nye tabeller fra c++ programmet..
void writetodb(int line, char *text) { sprintf(sqlstr,"INSERT INTO 1 VALUES(%d,'%s')",line,text); //1 = tabel, line = tabelnummer, saHEJ = Tekst. stat = SQLExecDirect(stmt,(SQLCHAR *)sqlstr,strlen(sqlstr)); if((stat!=SQL_SUCCESS)&&(stat!=SQL_SUCCESS_WITH_INFO)) { printf("Could not write data. \n"); } else { printf("Data was written succesful \n"); } } int main() { databaseloader(); //Indsætter tabeldata writetodb(1,"Spis ild!"); // Line, Text databaseshutdown(); system("pause"); return 0; }
- Men, har stadig en del spørgsmål: #1 - Hvordan skriver jeg til en anden kolonne end bare den samme? #2 - Hvordan overskriver jeg gammelt data?, den vil nemlig ikke skrive hvis der står noget på feltet i forvejen. #3 - Læsning af en variable i tabellen? hvordan gør jeg det? og hvis jeg eventuelt vil søge efter noget? (Skal nemlig lave et login hvor den gerne sku søge efter brugeren og finde koden)
- Ville være meget dejligt hvis jeg kunne få svar på de spørgsmål, på forhånd tak.
Du må undskylde, det giver slet ingen mening for mig.. Kan jo umiddelbart ikke bare skrive: /* kode kode kode */ Update testvalue; /* kode kode kode */
Årh er ved at koge i stumper, mit program crasher konstant. Kan bare ikke få noget af det til at fungere. Hvis nu .. Jeg har en tabel der ser sådan her ud:
Hehe .. Har ingen idé, forstår knap nok halvdelen af det. Vil egentlig bare have det til at virke da jeg ikke regner med at skulle arbejde så meget med database. (Er HTX studerende) - Mit mål med dette projekt er bare at lave en funktino til skrivning og læsning af database. Hehe, men ville se om jeg selv kunne sætte mig ind i det først.
Havde nu engang heller ikke forventet at du var her hele tiden ;) - Men kunne jo være nogle havde en løsning.
- Det er eksakt det som er mit problem, jeg ved ikke hvorfor det ikke virker. Når compillere programmeret kører det fint, men der bliver ikke skrevet noget til databasen, jeg får bare fejlen "Error in update". Hvilket jo skulle mene at der var en fejl i update, men hvilken? Kan ikke præcisere hvad fejlen er, da det er mit problem.
Jeg kan ikke udskrive stat, den compilere fint med cout << " "<<stat<<" \n"; men når man kører programmet kommer microsoft med "Programmet har medført en fejl, undlad at sende?" osv ..
Arne - Jeg fik Update, INSERT og DELETE til at virke nu :) - Men kan stadig ikke få SELECT til at virke .. Har prøvet "SELECT * FROM test1", men hvordan får jeg det ind i en variabel? F.eks. en Char.
Du må forresten også godt smide et svar, du har jo hjulpet mig en del på rette vej, så forstår det meste af det nu :) Mangler bare select. (Ved godt der er et eksempel på det link du gav, men vil hellere have et mere konkret og simpelt eksempel på hvordan jeg loader 1 linie ind i en variabel)
/* SQL */ char sqlstr[100]; sprintf(sqlstr,"SELECT test3 FROM tabel WHERE id = %d", "hejmeddig",2); stat = SQLExecDirect(stmt,(SQLCHAR *)sqlstr,strlen(sqlstr)); if((stat!=SQL_SUCCESS)&&(stat!=SQL_SUCCESS_WITH_INFO)) { printf("Error in ExecDirect\n"); } /* kolonne 1 skal hentes ind i s */ char s[50]; int sl; stat = SQLBindCol(stmt,1,SQL_C_CHAR,s,sizeof(s),(SQLINTEGER *)&sl); if((stat!=SQL_SUCCESS)&&(stat!=SQL_SUCCESS_WITH_INFO)) { printf("Error in BindCol\n"); } /* hent alle rækker */ for(;;) { stat = SQLFetch(stmt); if((stat!=SQL_SUCCESS)&&(stat!=SQL_SUCCESS_WITH_INFO)) break; s[sl] = '\0'; /* nu indeholder s kolonne 1 */ }
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.