Hypercell ein ] Hypercell aus ] Zeige Navigation ] Verstecke Navigation ]
c++.de  
   

Die mobilen Seiten von c++.de:
http://m.c-plusplus.de
Infos hier [BETA]

  
c++.de ::  Datenbanken ::  sqlite3 Problem
Antwort schreiben
Benutzername:
Titel:
Nachrichtentext:
  :)  :D  ;)  :(  :p  :mad:  :rolleyes:  :eek:  :confused:  :cool:  :o)  :leak:  :live:  :die:  :idea:  :arrow:  :warning: 
                             
                         
         
           
                             
                             
                             
             


BBCode in diesem Beitrag deaktivieren [BBCode]
Smilies in diesem Beitrag deaktivieren
sqlite3 Problem and 303304
     


Themen-Überblick 
(Aktualisieren)
Autor Nachricht
Sitt0030
17:03:34 24.05.2012   Titel:   Zitieren

Ich habe es geschaft. Einfach in der SQLite.c "CP_UTF8" durch "CP_ACP" ersetzen eine neue *.lib erzeugen und es geht. :D

Danke noch einmal Hustbaer
Sitt0030
11:26:37 24.05.2012   Titel:   Zitieren

Danke für euere Hilfe ich werde mal die Infos von hustbaer realisieren und meine Ergebinsse hier berichten.
hustbaer
18:11:54 23.05.2012   Titel:   Zitieren

Windows CE baut man sich ja selber, anscheinend mit einem Tool Namens "sysgen", und da musst du das SYSGEN_CORELOC Flag setzen, damit es im gebauten Windows CE dann das entsprechende Paket gibt. Oder so hänlich. Klick halt auf den MSDN Link der in dem Bug-Ticket verlinkt ist.

Ansonsten schreib die Funktion einfach so um (bzw. neu) dass sie MultiByteToWideChar nicht mehr verwendet. Da wird bloss UTF-8 nach UTF-16 konvertiert, und das ist ziemlich easy und schnell ergoogelt.

Evtl. musst du noch weitere Stellen anpassen wo MultiByteToWideChar verwendet wird.
Sitt0030
10:41:00 23.05.2012   Titel:   Zitieren

Ich finde keinen Fehler der Speicher ist auch ok.

Ich habe mal Herrn Google gefragt und folgendes gefunden.

Zitat:
[sqlite] sqlite3_open returns
SQLITE_NOMEM
Ryan Clark
Wed, 25 Jun 2008 17:41:31 -0700
This is a "known" issue.

http://www.sqlite.org/cvstrac/tktview?tn=2508,6


The fix is to include SYSGEN_CORELOC.
Can someone mention that in the documentation somewhere?
Ryan


Kann mit das einer erklären??
Sitt0030
Scheppertreiber
09:52:02 23.05.2012   Titel:   Zitieren

Ob Du sabberst kann ich nicht wissen und Vollidioten könne kein Forum bedienen ;)

Der OP bekommt ja von sqlite gesagt "mit dem open war's nix". Klar schmiert
es ab wenn man das ignoriert. Die Fehlermeldung ist eigentlich auch klar. Mit
WinCE hatte ich noch nichts zu tun, packt das nochmal 600 KB Daten ? Und wo
will er die herhaben ?
hustbaer
09:31:10 23.05.2012   Titel:   Zitieren

Scheppertreiber schrieb:
Code:
sqlite3 *Database = 0; // <----


In Database schreibt sqlite das Handle rein, das isses nich ...

Ja, das ist mir auch klar :rolleyes:
Manchmal frag' ich mich echt ob ich hier von manchen für einen sabbernden Vollidioten gehalten werde.

Die Sache ist die: garantiert SQLite dass sämtliche Output-Parameter immer, d.h. auch im Fehlerfall überschrieben werden? Und weiter: selbst wenn eine solche Garantie besteht, ist es dann guter Stil sich darauf zu verlassen?

Jetzt könntest du sagen OK, gibt ja noch den Fehlercode, das wird ja wohl reichen. Tut es auch. Nur ... wenn ich für zwei Zeichen + ein Whitespace aus "gültig oder random, und damit wir wissen was von beiden müssen wir nochmal woanders nachsehen" ein "gültig oder 0" machen kann... nen?

ps:
Zitat:
und beim nächsten Zugriff auf die Datenbank schmiert alles ab

Ich behaupte mal das wird ganz einfach daher kommt, weil der OP einen Schrottzeiger übergibt. NULL Werte fängt sqlite nämlich ab. Wenn man aber nicht für "gültig oder 0" sorgt, ...
Scheppertreiber
09:16:34 23.05.2012   Titel:   Zitieren

Code:
sqlite3 *Database = 0; // <----


In Database schreibt sqlite das Handle rein, das isses nich ...


Der OP könnte ja einfach mal im Quellcode sqlites nachsehen wann es die
Meldung absetzt.
hustbaer
03:10:05 23.05.2012   Titel:   Zitieren

Wird vermutlich am Problem nix ändern, aber ...
C++:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
void Test(void)
 {
     int result;
     sqlite3 *Database = 0; // <----
     
     result = sqlite3_open("/Data/File/Sample1.db" , &Database);
 
     if(result == 0)
     {
         // ...
 
         // Das war`s, wir schließen die Datenbank:
         sqlite3_close(Database); // <----
     }
     else
     {
         // Anfrage an Datenbank: Wir wollen alle Felder aus der Spalte "eintrag":
         // Wie wo was huch?
         // Nix Anfrage an Datenbank, wir haben hier nämlich keine Datenbank!
     }
 }
Scheppertreiber
18:56:18 22.05.2012   Titel:   Zitieren

http://de.wikipedia.org/wiki/Microsoft_Windows_CE

Zitat:
Eine der wichtigsten Änderungen, die Windows CE 5.0 mitbringt, betrifft den Speicher: Der interne Datenspeicher befindet sich nicht mehr im flüchtigen RAM, sondern als sogenannter Persistent Storage im Flash-ROM, was nun vor Datenverlust schützt, wenn die Akku-Energie aufgebraucht ist. Außerdem lässt das nunmehr modular aufgebaute Betriebssystem im ROM erstmals ein selektives Update zu und muss nicht mehr komplett geflasht (überschrieben) werden, wenn der Hersteller bzw. OEM Bugfixes, Verbesserungen oder Ergänzungen anbieten will.


Sagen wir mal, es gibt genug Fallen.

also, was ist ?
Sitt0030
16:05:25 22.05.2012   Titel:   Zitieren

Welches OS ?
Ich benutze WinCE.

Zugriffsrechte auf das Verzeichnis ?
Ein einfacher Dateizugriff funktioniert im gleichen Verzeichnis.

Genug Speicher ? Prüfe ich gerade aber die Datei ist nur 600kB groß.

Platte voll ? Platte ist definitiv nicht voll

Gruß Sitt0030

Powered by phpBB © 2001, 2002 phpBB Group :: FI Theme

c++.de ist Teilnehmer des Partnerprogramms von Amazon Europe S.à.r.l. und Partner des Werbeprogramms, das zur Bereitstellung eines Mediums für Websites konzipiert wurde, mittels dessen durch die Platzierung von Werbeanzeigen und Links zu amazon.de Werbekostenerstattung verdient werden kann.

Die Vervielfältigung der auf den Seiten www.c-plusplus.de, www.c-plusplus.info und www.c-plusplus.net enthaltenen Informationen ohne eine schriftliche Genehmigung des Seitenbetreibers ist untersagt (vgl. §4 Urheberrechtsgesetz). Die Nutzung und Änderung der vorgestellten Strukturen und Verfahren in privaten und kommerziellen Softwareanwendungen ist ausdrücklich erlaubt, soweit keine Rechte Dritter verletzt werden. Der Seitenbetreiber übernimmt keine Gewähr für die Funktion einzelner Beiträge oder Programmfragmente, insbesondere übernimmt er keine Haftung für eventuelle aus dem Gebrauch entstehenden Folgeschäden.