Hallo alle Zusammen, ich versuche Datenbanken mit Visual Studio zu lesen. Es klappt alles sehr gut nur mit eine Luxusproblem und zwar er ändert der Datum der Datenbanken, obwohl er nur gelesen hat. Wie kann das ändern im dem er das Datum nicht ändern sollte? gibt es eine fertige Methode, der diese Änderung verhindern. Ich habe im internet"SQL_MODE_READ_ONLY" was gefunden, aber das weiss es nicht ob es brauchbar ist? Danke für jeden Tips
als Beispiel wenn ich eine Datein (word, text) und nicht ändere dann muss es auch die alte Datum der Dateien gleich unverändert bleiben, weil es keine Änderung durchgefüht wurde. Bei mir obwohl ich nur von der datenbanken nur lese ändert sich das Datum der dateien,ob es geändert wurde was nicht wahr ist!!!!!
simo schrieb: > Ich habe im internet"SQL_MODE_READ_ONLY" was gefunden, aber das weiss es > nicht ob es brauchbar ist? Wie wäre es mit ausprobieren?
Peter II schrieb: > Welche Datenbank, welches Datum ändert sicht? Wie PeterII schon geschrieben hat: Meine Güte kannst du mal etwas konkretere Angaben machen. Meinst du Oracle, DB/2, MySql, SQL Server oder etwa über das unsägliche Access? Wie programmierst du die Datenbank. Über native Treiberbibliotheken oder über ODBC oder was? Welche Programmiersprache? Basic C-sharp, C++, J++, ...
Ich programmierde Datenbanken: über das unsägliche Access :-) und über ODBC Die Programmiersprache ist C++ (Visual Studio 2010) Danke
Hallo, ich habe es probiert den Befehl "SQL_MODE_READ_ONLY", aber es ändert isch nichts. Die Datenbanken (mdb) ändern sich bei jede Öffnung, obwohl es nur geöffnet waren und keine Änderungen durchgeführt worden. Hat jemenden eine Idee, wo es daran liegen könnte? Für jede Hilfe bin ich dankbar
Das dürfte ein grundlegendes Problem von Access sein. Möglicherweise kannst Du im ODBC-Setup der Acess-Datenquelle ein "read-only"-Flag setzen, also nicht in Deinem Programm, sondern da, wo Du die DSN für Deine Access-Datei einrichtest.
simo schrieb: > Hat jemenden eine Idee, wo es daran liegen könnte? nein, aber warum stört dich das? Du könntest mal verscuchen die Datei-Ready-Only zu machen. > ich habe es probiert den Befehl "SQL_MODE_READ_ONLY", aber es ändert > isch nichts. was meinst du als Befehl? "SQL_MODE_READ_ONLY" ist maximal ein Paramete aber kein befehl. Wo gibt du ihn denn überhaupt ein?
> aber kein befehl. Wo gibt du ihn denn überhaupt ein? ich gebe den Parameter bei der Methode: // Connect! DB = SQLDriverConnect(conn_h, NULL, (SQLCHAR*) _dsn.c_str(), SQL_NTS, (SQLCHAR*) szConnectOutput, _countof(szConnectOutput), &nResult, SQL_MODE_READ_ONLY); Peter II schrieb: > nein, aber warum stört dich das? Problem ist bei der User, dass er nicht weiss ob es in der Datenbanken was geändert (aus versehen Z.B) wurde. > Du könntest mal verscuchen die Datei-Ready-Only zu machen? Ich versuche den ganzen Zeit, aber Ergebnis ist immer gleich
Ich könnte mir vorstellen, dass dieser Wechsel des Dateidatums durchaus seine Gründe hat. Während des Zugriffs, selbst wenn er nur lesend ist, muss die Datenbank Schicht die betreffenden Records locken, damit nicht während des Lesezugriffs ein anderer Schreibzugriff dazwischenkommt. Bei einer filebasierten Lösung (also nicht mit einem dezidiertem Server) geht das aber nur, wenn in der Datei selber der Lockschutz gemacht wird (also in einem Byte in der Datei vermerkt wird, dass der Record momentan gelockt ist). E Voila, schon hast du einen Schreibzugriff, obwohl du nur aus der DB liest. Immer drann denken: Eine DB hat auch das Problem, dass mehere Clients gleichzeitig auf die Daten zugreifen können wollen und dass das die DB nicht durcheinander bringen oder inkonsistente Ergebnisse liefern darf. Alles was diese Clients gemeinsam haben ist, dass sie alle auf das gleiche File zugreifen. Also kann jegliche dazu notwendige Synchronisierung nur über diese Datei abgewickelt werden.
Karl Heinz Buchegger schrieb: > Während des Zugriffs, selbst wenn er nur lesend ist, muss die Datenbank > Schicht die betreffenden Records locken, damit nicht während des > Lesezugriffs ein anderer Schreibzugriff dazwischenkommt. Wenn die komplette Datenbank im Nur-Lese-Betrieb "angefasst" wird, dann sollte dieses Record-Locking entfallen, weil nicht erforderlich. Und wie ich bereits schrieb, ist das eine Konfigurationsoption des verwendeten ODBC-Treibers.
Hallo alle zusammen, Um eine Dateien Schreibgeschützt zu gestalten ist wie folgenden umzugehen: ..... ..... CFileStatus fStatus; const int flagReadOnly = 0x01; printf("'Dateien ist Schreibgeschützt'...\n"); CFile::GetStatus(inputFileName, fStatus); fStatus.m_attribute = fStatus.m_attribute | flagReadOnly; CFile::SetStatus(inputFileName, fStatus); ........ euch noch einen schönen Tag
simo schrieb: > Um eine Dateien Schreibgeschützt zu gestalten ist wie folgenden > umzugehen: Das ist schön, hier aber nicht hilfreich, da nicht mit Dateioperationen auf die Datenbankdatei zugegriffen wird, sondern über eine ODBC-Verbindung.
ja das stimmt aber geht es darum über die DB zugegeriffen (nur lesen) und am Ende wird die DB schreibgeschutzt erstellt, damit der User weiss es wurde nichts geändert. Wie gesagt es ist eine Luxus Prob muss man nicht tun...
Sicher, das ist ein Luxusproblem, bloß helfen dabei Hinweise auf CreateFile einfach überhaupt nicht, da --wie ich nicht das erste Mal hier schrieb-- eine ODBC-Verbindung genutzt wird, und man beim Einrichten dieser spezifischen ODBC-Verbindung konfigurieren kann, ob nur Lesend auf die Datenbank zugegriffen werden soll. Und wenn der Access-ODBC-Treiber auch dann der Ansicht sein sollte, das Dateidatum ändern zu müssen, müsste man sich dessen Quelltext besorgen und das Verhalten dort ändern. Wenn der Quelltext nicht besorgbar ist --was bei einem MS-Produkt mehr als wahrscheinlich ist--, müsste man einen eigenen Access-ODBC-Treiber entwickeln, was bei dem Luxusproblem hier wirklich völlig illusorisch ist.
man könnte die ACCESS Datei auf auf ein ReadyOny Share oder Datenträger legen, dann kann der Treiber das Datum nicht veränder. Die Frage ist ob es dann überhaupt noch geht.
simo schrieb: > Problem ist bei der User, dass er nicht weiss ob es in der Datenbanken > was geändert (aus versehen Z.B) wurde. Du mutest dem Nutzer also lieber zu, sich zu merken, welche Datei seine Daten enthält und welches Datum diese Datei nach der letzten gewollten Änderung hatte, statt dass Du die Datenbank einfach erweiterst und dort die Änderungsdaten vermerkst? Das könntest Du dem Nutzer dann plakativ präsentieren. 42m
Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.