Witam,
nie mogę do tego dojść, jak sprawdzić czy baza danych jest pusta?
c++ Sqlite
Witam,
nie mogę do tego dojść, jak sprawdzić czy baza danych jest pusta?
c++ Sqlite
Policz rekordy.
I nie zakładaj dziesięciu kolejnych tematów, żeby rozwiazać jeden problem! Google jest pełne poradników dla początkujących dotyczących podstaw baz danych...
gdybym znalazł coś w google to bym nie zakładał tematu.
A co znaczy że baza jest pusta? Nie ma żadnej tabeli, czy może, że w żadnej tabeli nie ma żadnego rekordu?
Baza danych jest zbiorem relacji. Zatem pusta baza danych to zbiór pusty relacji, czyli baza, w której nie ma tabel.
w takim razie źle się wyraziłem, chodzi mi o pustą tabele.
Słyszałeś o takim wynalazku, który nazywa się google?
SELECT count(*) FROM nazwaTabeli, zwraca ilość rekordów.
instrukcja INSERT INTO mi działa, natomiast SELECT * FROM już nie działa
co robię źle?
mam taka funkcję:
void baza_danych::spr()
{
sqlite3 *db;
string rezultat;
stringstream *ss= new stringstream[10000];
char *zErrMsg = 0;
int rc;
int indeks_bazy=0;
rc = sqlite3_open ("scores.sqlite", &db);
if( rc ){
fprintf(stderr, "Nie można otworzyć bazy: %s\n", sqlite3_errmsg(db));
}
else
{
fprintf(stderr, "Baza danych otwarta!:)\n");
ss[indeks_bazy]<<"insert into scores (Sezon, Data, Druzyna1, Wynik1, Druzyna2, Wynik2, Rezultat) values (1,2,3,4,5,6,7)";
indeks_bazy++;
ss[indeks_bazy]<<"SELECT (*) FROM scores";
}
for(int i = 0; i < indeks_bazy; i++)
{
rc = sqlite3_exec(db, (ss[i].str().c_str()), callback, 0, &zErrMsg);
if( rc!=SQLITE_OK )
{
fprintf(stderr, "SQL error: %s\n", zErrMsg);
sqlite3_free(zErrMsg);
break;
}
}
cout << "koniec";
}
int baza_danych::callback(void *NotUsed, int argc, char **argv, char **azColName)
{
int i;
for(i=0; i<argc; i++)
{
printf("%s = %s\n", azColName[i], argv[i] ? argv[i] : "NULL");
}
printf("\n");
return 0;
}
SELECT * FROM scores
niektóre SQL'e nie akceptują zbędnych nawiasów okrągłych.
wersja SELECT * FROM scores tez nic nie pokazuje
A co miałoby pokazać? o_O Odbierasz gdzieś wyniki tego zapytania?
Czemu dzieciom na komunię zamiast rowerów kupują teraz komputery?...
przecież ten fragment się tym zajmuje:
jestem w błędzie?
for(int i = 0; i < indeks_bazy; i++)
{
rc = sqlite3_exec(db, (ss[i].str().c_str()), callback, 0, &zErrMsg);
if( rc!=SQLITE_OK )
{
fprintf(stderr, "SQL error: %s\n", zErrMsg);
sqlite3_free(zErrMsg);
break;
}
}
cout << "koniec";
}
int baza_danych::callback(void *NotUsed, int argc, char **argv, char **azColName)
{
int i;
for(i=0; i<argc; i++)
{
printf("%s = %s\n", azColName[i], argv[i] ? argv[i] : "NULL");
}
printf("\n");
return 0;
}
czy ten callback jest zadeklarowany jako static?
tak
ok, błąd był masakryczny w pętli for w której następuje przejście po kolejnych zapytaniach zamiast i<=indeks_bazy było i<indeks_bazy i się nie wykonywało ostatnie zapytanie,
dziękuję i przepraszam za problem.
Umiem się już poruszać po bazie danych, jednak nie wiem jak przypisać wartość jakiejś danej z kolumny do zmiennej.
np. chcę przypisać do zmiennej 5 element z kolumny o nazwie Wynik.
?