PBOSL_ExDatabase lib

Anwendungen, Tools, Userlibs und anderes nützliches.
Benutzeravatar
ts-soft
Beiträge: 22292
Registriert: 08.09.2004 00:57
Computerausstattung: Mainboard: MSI 970A-G43
CPU: AMD FX-6300 Six-Core Processor
GraKa: GeForce GTX 750 Ti, 2 GB
Memory: 16 GB DDR3-1600 - Dual Channel
Wohnort: Berlin

PBOSL_ExDatabase lib

Beitrag von ts-soft »

Nach vielen Schwierigkeiten (TailBite will die SQLConfigDataSource_()
API-Function nicht übersetzen usw.), hab ich es doch noch geschafft :D

Es wurden die hier im Board geposteten Funktionen integriert, deshalb
nochmals danke an alle Helfer, besonders MK-Soft!

Die Lib funktioniert auch mit Unicode-Anwendungen (aber nur
ANSI-Zeichensatz)

Da ich keine SQL-Profi bin :mrgreen: müßte das ganze nochmals ausgiebig
getestet werden!

Folgende Funktionen sind enthalten:
Result.l = ExamineTables(DBNR.l)
Result.l = NextTable()
Result.s = GetTableName()
Result.s = GetTableType()

Result.l = AddDSN(databasename.s [, driver.s][, user.s, pass.s])
Result.l = RemoveDSN(databasename.s [, driver.s])

Result.l = RepairMDB(databasename.s [, user.s, pass.s])
Result.l = CompactMDB(databasename.s [, user.s, pass.s])
Result.l = CreateEmptyMDB(databasename.s [, user.s, pass.s])
Damit ihr testen könnt, hier der Downloadink:
DOWNLOAD

Also bitte fleissig Testen!

Gruß
Thomas

// Nachtrag:
Bei AddDSN und RemoveDSN ist der Datenbankname mit Extension und
Pfad anzugeben, bei OpenDatabase darf nur der Datenbankname ohne
Pfad und Extension angegeben werden!


// Nachtrag:
Link verweist jetzt auf die aktuelle Version von mk-soft, der das Projekt
zur Zeit weiterführt. Aktuelle Beschreibung in einen der letzten Threads :wink:
Zuletzt geändert von ts-soft am 10.01.2009 16:12, insgesamt 2-mal geändert.
PureBasic 5.73 LTS | SpiderBasic 2.30 | Windows 10 Pro (x64) | Linux Mint 20.1 (x64)
Nutella hat nur sehr wenig Vitamine. Deswegen muss man davon relativ viel essen.
Bild
Benutzeravatar
ts-soft
Beiträge: 22292
Registriert: 08.09.2004 00:57
Computerausstattung: Mainboard: MSI 970A-G43
CPU: AMD FX-6300 Six-Core Processor
GraKa: GeForce GTX 750 Ti, 2 GB
Memory: 16 GB DDR3-1600 - Dual Channel
Wohnort: Berlin

Beitrag von ts-soft »

Kleines Update:
-CreateMDB löscht evtl. bereits vorhandene Datei gleichen Namens
-RemoveDSN überflüssige Parameter User + Passwort entfernt

Download im ersten Thread

// Nachtrag:
Hier noch ein Beispielcode, damit das grundsätzliche Vorgehen deutlich wird

Code: Alles auswählen

; Original by PAMKKKKK
; angepaßt für PBOSL_ExDatabase und PB4 by ts-soft

EnableExplicit

InitDatabase()

Define.s dbName = "c:\exDatabase_test.mdb" ; könnt Ihr anpassen

; DSN besteht aus Datenbanknamen ohne Pfad und Extension!
Define.s DSN = GetFilePart(dbName) : DSN = Left(DSN, Len(DSN) - (Len(GetExtensionPart(DSN)) + 1))

If CreateEmptyMDB(dbName); leere Datenbank erstellen
  AddDSN(dbName) ; DSN hinzufügen
EndIf

; Datenbank verbinden
Define.l db = OpenDatabase(#PB_Any, DSN, "", "")
Define.s SQL

If db

  ; SQL Befehl zum Tabelle erstellen
  SQL = "Create table Adress (id autoincrement, vorname text(50), nachname text(50), constraint Adress unique(id));"
  If DatabaseQuery(db, SQL) ; SQL Befehl ausführen
  
    ; SQL Befehl zum einfügen von Daten in die Tabelle
    SQL = "Insert into Adress (vorname, nachname) values ('Thomas', 'Schulz')"
    DatabaseQuery(db, SQL) ; SQL Befehl ausführen

    SQL = "Insert into Adress (vorname, nachname) values ('Max' ,'Mustermann')"
    DatabaseQuery(db, SQL) ; SQL Befehl ausführen

    SQL = "Insert into Adress (vorname, nachname) values ('Erika', 'Mustermann')"
    DatabaseQuery(db, SQL) ; SQL Befehl ausführen
    
  Else
    Debug "Data already exists"
  EndIf
  
  If ExamineTables(db)
    Debug "Tabellen in Database:"
    Debug ""
    While NextTable()
      Debug GetTableName() + "  <--  " + GetTableType()
    Wend
    Debug "" : Debug ""
  EndIf
  
  ; SQL Befehl zum Auslesen von Daten der Tabelle
  SQL = "Select * from Adress order by nachname asc;"
  If DatabaseQuery(db, SQL) ; SQL Befehl ausführen
  
    Debug "Daten in Tabelle 'Adress'" : Debug ""
    
    While NextDatabaseRow(db) ; gelesene Daten aus der Datenbank durchlaufen
    
      Debug Str(GetDatabaseLong(db, 0)) + ": " + GetDatabaseString(db, 1) + " " + GetDatabaseString(db, 2) ; gelesene Daten aus der Datenbank ausgeben
    
    Wend
  EndIf
  
  CloseDatabase(db)
  
EndIf

RemoveDSN(dbName); DSN wieder entfernen
PS: Unicode funktioniert noch nicht :(
PureBasic 5.73 LTS | SpiderBasic 2.30 | Windows 10 Pro (x64) | Linux Mint 20.1 (x64)
Nutella hat nur sehr wenig Vitamine. Deswegen muss man davon relativ viel essen.
Bild
Benutzeravatar
ts-soft
Beiträge: 22292
Registriert: 08.09.2004 00:57
Computerausstattung: Mainboard: MSI 970A-G43
CPU: AMD FX-6300 Six-Core Processor
GraKa: GeForce GTX 750 Ti, 2 GB
Memory: 16 GB DDR3-1600 - Dual Channel
Wohnort: Berlin

Beitrag von ts-soft »

@Kiffi
Danke fürs testen :wink:

Scheint kein grosses Interesse oder kein Bedarf zu bestehen, auch gut,
spare ich mir das Hilfe schreiben, hab ich sowieso keinen Bock drauf :mrgreen:

Da meine SQL-Kenntnisse nicht ausreichen, es genügend zu testen, bzw.
festzustellen ob es allen Ansprüchen genügt ist es eingestellt.

Werde mich dann erstmal nur privaten Projekten widmen,

gruß
Thomas
PureBasic 5.73 LTS | SpiderBasic 2.30 | Windows 10 Pro (x64) | Linux Mint 20.1 (x64)
Nutella hat nur sehr wenig Vitamine. Deswegen muss man davon relativ viel essen.
Bild
Benutzeravatar
bluejoke
Beiträge: 1244
Registriert: 08.09.2004 16:33
Kontaktdaten:

Beitrag von bluejoke »

Halt, Moment!

Du weißt doch, wie das hier im Forum läuft: Bei guten Projekten postet solange niemand was, bis der entnervt aufgibt. Hab jetzt aber auch leider keine Anwendung, wo ich das Ding testen könnte, aber Interesse besteht auf jeden Fall.

Keep it going!
Simon
Ich bin Ausländer - fast überall
Windows XP Pro SP2 - PB 4.00
Benutzeravatar
ts-soft
Beiträge: 22292
Registriert: 08.09.2004 00:57
Computerausstattung: Mainboard: MSI 970A-G43
CPU: AMD FX-6300 Six-Core Processor
GraKa: GeForce GTX 750 Ti, 2 GB
Memory: 16 GB DDR3-1600 - Dual Channel
Wohnort: Berlin

Beitrag von ts-soft »

>> Halt, Moment!
Na gut, dann darfste auch die engl. Hilfe im desc-Format (ähnl. Docmaker)
schreiben :mrgreen:
Wenn fragen bestehen, schickste PM oder Skype Me :wink:
PureBasic 5.73 LTS | SpiderBasic 2.30 | Windows 10 Pro (x64) | Linux Mint 20.1 (x64)
Nutella hat nur sehr wenig Vitamine. Deswegen muss man davon relativ viel essen.
Bild
Benutzeravatar
dige
Beiträge: 1235
Registriert: 08.09.2004 08:53

Beitrag von dige »

Danke ts-soft! kann ich grad gut gebrauchen :D
"Papa, ich laufe schneller - dann ist es nicht so weit."
Benutzeravatar
bluejoke
Beiträge: 1244
Registriert: 08.09.2004 16:33
Kontaktdaten:

Beitrag von bluejoke »

Puuuh. Dige hat sich gerade noch rechtzeitig darum gerissen.
Ich bin Ausländer - fast überall
Windows XP Pro SP2 - PB 4.00
Benutzeravatar
Morty
Beiträge: 268
Registriert: 22.10.2004 07:20
Wohnort: Erfurt
Kontaktdaten:

Beitrag von Morty »

Auch von mir Dank an ts-soft.
Passt genau zu meinem derzeitigen Projekt.

Morty
Benutzeravatar
Morty
Beiträge: 268
Registriert: 22.10.2004 07:20
Wohnort: Erfurt
Kontaktdaten:

Beitrag von Morty »

... und da hab ich doch vielleicht was gefunden.

Und zwar schlägt die Funktion CreateEmptyMDB() fehl, wenn man im Datenbanknamen (bzw. dem Verzeichnis) ein Leerzeichen hat.

Sprich:

Code: Alles auswählen

CreateEmptyMDB("C:\Programme\Purebasic\test_bd.mdb")
funktioniert, aber

Code: Alles auswählen

CreateEmptyMDB("C:\Programme\Purebasic v4\test_bd.mdb")
funktioniert leider nicht.

Morty
Benutzeravatar
ts-soft
Beiträge: 22292
Registriert: 08.09.2004 00:57
Computerausstattung: Mainboard: MSI 970A-G43
CPU: AMD FX-6300 Six-Core Processor
GraKa: GeForce GTX 750 Ti, 2 GB
Memory: 16 GB DDR3-1600 - Dual Channel
Wohnort: Berlin

Beitrag von ts-soft »

Morty hat geschrieben:... und da hab ich doch vielleicht was gefunden.

Und zwar schlägt die Funktion CreateEmptyMDB() fehl, wenn man im Datenbanknamen (bzw. dem Verzeichnis) ein Leerzeichen hat.

Sprich:

Code: Alles auswählen

CreateEmptyMDB("C:\Programme\Purebasic\test_bd.mdb")
funktioniert, aber

Code: Alles auswählen

CreateEmptyMDB("C:\Programme\Purebasic v4\test_bd.mdb")
funktioniert leider nicht.

Morty
fixed
PureBasic 5.73 LTS | SpiderBasic 2.30 | Windows 10 Pro (x64) | Linux Mint 20.1 (x64)
Nutella hat nur sehr wenig Vitamine. Deswegen muss man davon relativ viel essen.
Bild
Antworten