In phpmyadmin brauchst du das garnicht da dir phpmyadmin diese automatisch anzeigt.
Last_Insert_ID funktioniert auch ur wenn du nur eine Datensatz einfügst. Sind es meherer wird nur die letzte ID zurückgegeben.
Ob du die gleiche verbindung verwendet kann dir hier keiner sagen da niemand deinen Source sieht.
Man kann ja eine Verbindung öffnen commando absetzen und dann connect schließen.
Wenn mann das für jeden Query macht dann hast du nicht die immer die gleiche Verbindung.
Mahlzeit!
Gibt es eine Möglichkeit ein select-Statement quasi zu "simulieren", um an die Spalten-Informationen zu gelangen? Also irgendwie Statement absetzen, und dann ein leeres Recordset kriegen oder sowas?! Hintergrund der Geschichte: Ich benötige die selektierten Spalten (darunter können natürlich auch berechnete sein, wie count(*) oder sowas) ohne das Abfrage-Ergebnis, für Tabellenbeschreibungen und zum initialisieren bestimmter Anzeige-Steuerelemente.
Du kannst jeden Fragebogen als vector<bool> (oder bei konstanter Größe als bitset<50>) auffassen und alle Fragebögen in einen großen vector<> packen. Den kannst du dann entweder selber durchsuchen oder die STL-Algorithmen darauf loslaufen lassen:
typedef bitset<50> bogen;
struct question_answered
{
int nr;
question_answered(int n):nr(n){}
bool operator()(const bogen& b)
{ return b[nr]; }
};
...
vector<bogen> paket;
int anzahl = count_if(paket.begin(),paket.end(),question_answered(0));//wie of wurde Frage 1 mit "JA" beantwortet?
Unix-Tom schrieb:
Wieso sollte ein DB damit Probleme haben. Dafür sind sie da.
Und wenn du jetzt auf verschiedene Fälle anspricht:
z.B. Userverwaltung,
2 Laden den gleichen Userdatensatz. Biede ändern ihn. Der 2te überschreibt die Daten des ersten.
Da kann dir IMHO niemand so einfach helfen da es da keine Kochrezepte für sowas gibt.
Ist immer von Fall zu Fall verschieden.
In diesem Fall z.B. durch sperren des Datensatzes. Der 2te darf ihn zwar lesen aber nicht ändern.
Ob auf einer Tabelle mit Satzschutz gearbeitet werden soll oder besser nicht, muss immer von Fall zu Fall unterschieden werden.
Besteht Satzschutz auf einem Datensatz (Oracle sperrt einzelne Datensätze) so kann kein anderer User diesen Satz bearbeiten. Das kann gut sein (keine Konflikte wie Unix-Tom sie beschrieb), aber auch schlecht, und zwar wenn ein User einen Satz ewig gesperrt hat, weil er z. B. das Stammdatenprogrammm offengelassen hat.
Satzschutz wird in Oracle durch ein "select for update nowait" bewerkstelligt.
Alle anderen Programm müssen dann auch mit "select for update nowait" arbeiten, sonst wird bei einem Update auf den gesperrten Datensatz so lange gewartet, bis er freigegeben ist (und das kann u. U. dauern, siehe Stammdatenprogramm offenlassen).
Schickt man vor dem Update ein "select for update nowait" ab, dann wirft dieses bei bestehendem Satzschutz einen Datenbankfehler.
Danke erstmal.
Könnte mir jemand vielleicht noch ein Buch empfehlen?
Wie gesagt würde ich auch zusätzliche gerne bei C#/ASP.NET mit Datenbanken einsteigen. Was bietet sich hier an und ist das dann auch ohne weiteres mit C++ nutzbar (die Technologie)?
Das es eine Zugriffsverletzung gitb kann auch daran liegen das du ein Result freigibst obwohl keine da war.
Handy ist ja mal so mal so.
Es kommt eben dann ein Timeout und ein MySQL-Error aus der Bibliothek.
Ein Insert/Update,Delete sollte aber keine Probleme machen den da wandert nicht viel Übers Netz. Wie gesagt solltest du mal dein Programm ansehen.
Eine Zugriffsverletzung hatte ich in den letzten 8 Jahren der libmysql.dll/libmysql.so nicht entdeckt.
Ich habe ihm eigentlich Grundsätzlich ja auch davon abgeraten. (Verwende ja selbst MSSQL, früher MySQL) Er weiß aber denke ich besser als ich ob er so viele konkurierende Schreibzugriffe hat. Ich denke er sollte ein DB nehmen welche einfach ist (da keine Erfahrung) und auch einfach Wartbar. Bei MSSQL braucht man schon etwas Wissen (Transactionlog welches die Platte vollschreibt u.s.w.)
Ich habe mit Postgres keine Erfahrung.
Wüsste nicht wie das geht. Es gibt in jedem Fall keine Systemtabelen die diese Infos liefern.
Der Code in den Stored Prcoedures ist in gewissen Sinne kompiliert und wird bei bedarf ausgeführt. Du müsstest also eine vlle Syntaxanalyse (auch er Views) betreiben.
MFC schrieb:
Mit CRecordset und so ist das recht easy, kann man auch gut auf Access Datebanken zugreifen.
Das ist auch nur eine Möglichkeit, es gibt noch viele andere.
Nur wenn mann MFC Benutzt es gipt ja ausnahmen die einen wollen und die anderen können kein MFC Nutzen
ohne wird es schon n bissle mehr arbeit
Ich habe eben nochmal kurz in Access geschaut und du kannst bei Abfragen einstellen, was mit einem Feld passieren soll.
Du gehst einfach in die Entwurfsansicht der Abfrage und dann oben in der Menüleiste auf "Ansicht / Funktionen".
Dann gibt es ein extra Feld bei Abfragen in der Entwurfsansicht.
Das sollte dann in etwa so aussehen in der Entwurfsansicht:
Feld: ID
Tabelle: Buecher
Funktion:
Sortierung:
Anzeigen: Ja/Nein
Kriterien:
oder:
Wie du siehst ist das Feld Funktion jetzt vorhanden, wenn es nicht schon vorher da war.
Dort kannst du für das ausgewählte Feld die Funktion auswählen. Ob Summe,.... dort gibt es dann auch die Funktion Aufzählung, die dir die Anzahl der Datensätze in einer Tabelle liefert.
MFG
danke für die schnelle Antwort!
Wenn man das so ließt klinkt das ganz Logisch, aber ich kam irgendwie nicht drauf.
Ich werde es nachher sofort ausprobieren!
DANKE!!