moin Kai,
16 Sep 23 11:33, from Kai Richter -> Gerhard Strangar, in URL area://PGMRS.GER?msgid=2:240/77+65057840:
Tag auch Gerhard!
Am 16 Sep 23, Gerhard Strangar schrieb an Kai Richter:
wenn es ein Tutorial gibt, weisst Du doch, an welchen stellen es
anders ist.
Das Tutorial ist für die Datenbank benutzende Software, geht also nur
auf die Installation ein. Ich zwischen habe ich etwas bessere Suchstichwörter gefunden, es gibt sehr umfangreiche Beschreibungen der Differenzen.
Wenn ich das richtig überflogen habe, dann fehlen manche
Schlüsselwörter bei sql Anweisungen. Auf den MariaDB Webseiten sieht
man, dass die Entwicklung sich immer weiter vom Original mysql
entfernt.
Das würde leider bedeuten, dass Software wirklich speziell auf die im Hintergrund laufende Datenbank angepasst sein müsste, einen Mindeststandard der kompatibel mit allen DB-Servern ist, scheint es
nicht mehr zu geben.
Damit stehe ich vor der Qual der Wahl der strategischen Ausrichtung.
bei PHP Anwendungen gibt es die Moeglichkeit eines "Wrappers"
Die PHP Anwendung selbst hat Pseudo SQL Aufrufe die dann ueber einen Switch zu den jeweils individuellen Datenbank Subroutinen fuehren.
So gibt es beispielsweise eine Function OpenSQLdb()
und bei der Einrichtung der Applikation hast du eine Datenbank Schnittstelle wie MSSQL, MySQL, Oracle, PostGre, MariaDB oder was auch immer angegeben und
dann ruft OpenSQLdb() dann die jeweils spezifische Subroutine OpenSQL DB auf wie es mit dem PHP plugin fuer die jeweilige SQL Version ausschaut.
Der Switch sieht dann etwa wie folgt aus:
/* $dbtype = "MySQL"; */
/* $dbtype = "mSQL"; */
/* $dbtype = "postgres"; */
/* $dbtype = "postgres_local";// When postmaster start without "-i" option. */ /* $dbtype = "ODBC"; */
/* $dbtype = "ODBC_Adabas"; */
/* $dbtype = "Interbase"; */
/* $dbtype = "Sybase"; */
/*
* sql_connect($host, $user, $password, $db)
* returns the connection ID
wobei sql_connect() die Wrapper Funktion ist ..
und in jedem SQL type spezifischen Subroutine als Wrapper Funktion zur Verfuegung steht
switch($dbtype) {
case 'MySQL':
include("".$the_include."/mysql.php");
break;
case 'mysql4':
include("".$the_include."/mysql4.php");
break;
case 'postgres':
include("".$the_include."/postgres7.php");
break;
case 'mssql':
include("".$the_include."/mssql.php");
break;
und in dem jeweiligen Subsegment gibt es dann
jeweils Aufrufe fuer DB oeffnen
function sql_db($sqlserver, $sqluser, $sqlpassword, $database, $persistency = true)
#
Datenbank schliessen
function sql_close()
// Base query method
//
function sql_query($query = "", $transaction = FALSE)
und andere
Bei MySQL muss im PHP das Modul fuer MySQL mit eingebunden sein,
damit die PHP function dann funktioniert.
$this->db_connect_id = @mysql_pconnect($this->server, $this->user, $this->password);
Wenn es bei einer Applikation ein Subset an Datenbanken als Option zur Verfuegung stehen, muss innerhalb der Applikation dann so ein aehnlicher Wrapper existieren, so das bei Aufruf DB open die jeweilige spezifische Routine fuer DBopen() einmal fuer MySQL, das andere mal fuer MariaDB, usw funktionieren kann ...
Fuer DBopen koennte das wie folgt aussehen:
function sql_connect($host, $user, $password, $db)
{
global $dbtype;
switch ($dbtype) {
case "MySQL":
$dbi=@mysql_connect($host, $user, $password);
mysql_select_db($db);
return $dbi;
break;;
case "mSQL":
$dbi=msql_connect($host);
msql_select_db($db);
return $dbi;
break;;
case "postgres":
$dbi=@pg_connect("host=$host user=$user password=$password port=5432 dbname=$db");
return $dbi;
break;;
Fuer MySQL wird mysql_connect() aufgerufen,
bei mSQL msql_connect()
und bei PostGres pg_connect()
Bei PHP hast du dann die unterschiedlichen Extensions
php_mysql.dll
php_pgsql.dll
php_sqlite.dll
php_sybase.dll
usw
die dann per php.ini eingebunden sein muessen
Dieses Wrapper Verfahren wuerde an sich mit jeder Programmiersprache funktionieren. Nur muss es eben vorgesehen sein, damit es funktioniert ...
Tschuess
Kai
* Origin: Kuckuck! (2:240/77)
regards, uli ;-)
--- GoldED-NSF/W32-MINGW 1.1.5-20090710
* Origin: AMBROSIA - Bad Ueberkingen - Germany (2:240/1120)