Dodawanie rekordów MySQL z poziomu C++

0

Programuje sobie tak o dla nauki i mam problem , aby stworzyć taki kod aby człowiek podawał np. nazwę produktu a program dodał go z programu (nie musi być to cały produkt tylko np. ilość sztuk np. chce aby dodał mi 500 procesorów tego typu z magazynu a 200 już jest);

mój kod, który jest próbką (to jest tylko część bo reszta jest raczej niepotrzebna)

 oid dodawanie_prod()
{
	string produkt;
	int ilosc;
	float cena;
	long h;
	MYSQL_RES * res;
	char * query;
	cout << "Prosze wpisac nazwe produktu, ktory zostanie dodany: ";
	cin >> produkt;
	cout << "\nProsze podac ilosc tego produktu: ";
	cin >> ilosc;
	cout << "\nProsze podac cene tego produktu (za szt.): ";
	cin >> cena;
	query = "INSERT INTO magazyn VALUES('','Marchewka','1000','1.20');"; // <- o tą linijkę mi chodzi
	h=mysql_real_query(conn,query,strlen(query));
	res=mysql_store_result(conn);

}

chcę aby ta linijka zmieniała się tak jak ja sobie zażyczę a nie stale została tak ustawiona :/ - podacie jakieś wskazówki jak to zrobić ?? (ew. gdzie mam to szukać (tylko proszę o konkretne strony a nie google ) )

czyli chciałbym mniej wiecej cos takiego:

query="INSERT INTO magazyn VALUES('','nazwa_produktu','ilosc','cena');";
1

http://www.cplusplus.com/reference/cstring/strcat/

  • Zaoszczedze Ci kilka godzin debugowania i powiem, ze to w normalnym jezyku programowania nie mialo by szansy dzialac i prawdpodobnie w najmniej oczekiwanym momencie wywali av. Polecam zapoznac sie z tworzeniem stringow w jezyku C (widze, ze preferujesz taki styl), badz C++, jesli nie jestes masochista.

Edit: Bylem tak zszokowany kodem, ze nie zauwazylem nawet, ze nie chcesz laczyc samych stringow.
http://www.cplusplus.com/reference/cstdio/sprintf/

0

Tak na przyszłość dodam zrobiłem to tak:

sprintf(query,"INSERT INTO magazyn VALUES('','%s','%d','%d');",produkt,ilosc,cena);

tylko w tym przypadku trzeba wejsc w ustawienia preprocesora (projekt -> wlasciwosci) tam C++ i później PREPROCESOR i do pierwszej linijki dopisać:
_CRT_SECURE_NO_WARNINGS
Może komuś się to przyda :)
< EDIT >

sprintf(query,"INSERT INTO magazyn VALUES('','%s','%d','%f');",produkt.c_str(),ilosc,cena);

a dane mają być:

int ilosc;
float cena;
string produkt;
1
int dodawanie_prod(const char* produkt, int ilosc, float cena)
{
        MYSQL_RES * res;
        char query[256];
        sprintf(query, "INSERT INTO magazyn VALUES('','%s','%d','%f');", produkt, ilosc, cena);
        if(mysql_real_query(conn,query,strlen(query)))
            return -1;
        if(!(res=mysql_store_result(conn)))
            return -2;
        
        // dalszy kod
}
  1. Nie sprawdzalem logicznego sensu wywolan tych funkcji, bo jestem troche spiacy.
  2. Mozna to oczywiscie jeszcze lepiej napisac.
  3. Pamietaj, ze funkcja ma robic jedna, jedyna rzecz. (a interakcja z userem + wysylanie zapytan, nie podchodzi pod jedna rzecz).

1 użytkowników online, w tym zalogowanych: 0, gości: 1