Prezentacja programu PowerPoint

Transkrypt

Prezentacja programu PowerPoint
Wyższa Szkoła Technologii
Teleinformatycznych w Świdnicy
Internetowe bazy danych
wykład 11
dr inż. Jacek Mazurkiewicz
e-mail: [email protected]
Terminarz czasów ostatecznych




10.06.2010 – Zaliczenie Laboratorium IBD
- godz. 8:00 – 13:00, s. 16
22.06.2010 – Egzamin #0 IBD
- godz. 9:45 – 11:20, s. 7
02.07.2010 – Egzamin #1 IBD
- godz. 13:00 – 15:00, s. 7
20.09.2010 – Egzamin Poprawkowy IBD
- godz. 10:00 – 12:00, s. 7
2
ODBC (1)





Open Database Connectivity (ODBC) to powszechnie
stosowany interfejs API (application programming interface)
służący do łączenia się z bazami danych
oparty na specyfikacji Call Level Interface pochodzącym z
X/Open oraz ISO/IEC, jako języka dostępu do danych używa
SQL
istnieje kilka implementacji ODBC API dla systemów
Uniksowych, w systemie Windows ODBC jest zwykle
instalowany razem z systemem.
PHP może obsługiwać każdą implementację ODBC, ale musi
być w tym celu odpowiednio skonfigurowany, ponieważ
ODBC nie jest w chwili obecnej domyślną opcją.
w PHP istnieją cztery opcje konfiguracji związane z ODBC: -with-unixODBC, --with-custom-ODBC, --with-iodbc
oraz --with-openlink
3
ODBC (2)





ODBC tym różni się od MySQL i innych API baz danych tym,
że wszystkie odwołania do bazy danych wykonuje za
pośrednictwem sterownika bazy danych
należy zainstalować program zarządzający sterownikami, na
przykład unixODBC, a następnie sterownik do twojego
systemu bazy danych
aplikacja wywołując funkcję kontaktuje się z zarządcą
sterowników
zarządca ten jest odpowiedzialny za załadowanie
odpowiedniego sterownika bazy danych i przekazanie do
niego żądania
sterownik bazy danych wywołuje odpowiednią funkcję bazy
danych, która realizuje nasze żądanie.
4
ODBC (3)


plik odbc.ini zawiera opis źródeł danych:
po zainstalowaniu i
skonfigurowaniu wszystkich
komponentów korzystanie z
ODBC w PHP jest bardzo
podobne do korzystania z
MySQL
[localdsn]
Server=satabase.server.com
Driver=OOB
Port=8888
Transport=tcpip
LogonUser=prodplaner
LogonAuth=password
TargetDSN=LocalOracle
TargetUser=prodplaner
TargetAuth=password
CREATE TABLE employees
( id tinyint(4) DEFAULT '0' NOT NULL auto_increment,
first varchar(20),
last varchar(20),
adress varchar(255),
position varchar(50),
PRIMARY KEY (id),
UNIQUE id (id)
)
5
ODBC (4)
<html>
<head>
<title>Pobieranie danych z MySQL</title>
</head>
<body>
<?php
// Ukrywamy komunikaty błędów i sami je obsługujemy
$aDBLink = @mysql_connect( "db.server.com", "user", "pass" );
if ( !empty( $aDBLink ) )
{
// wybór bazy danych MySQL
if ( mysql_select_db( "mydb", $aDBLink ) == True )
{
$aSQL = "select * from employees";
// Wykonanie zapytania SELECT
$aQResult = mysql_query( $aSQL, $aDBLink );
if ( $aQResult == True )
{
// Pobranie wiersza danych i wypisanie dwóch pól
while ( $aRow = mysql_fetch_array( $aQResult ) )
{
$aFName = $aRow["first"];
$aPos
= $aRow["position"];
print( "$aFName, $aPos<br>" );
}
6
ODBC (5)
mysql_free_result( $aQResult );
}
else
{
print( "Błąd wykonania zapytania<br>" );
}
}
else
{
print( "Błąd wyboru bazy danych<br>" );
}
}
else
{
print( "Błąd przy podłączaniu do bazy danych<br>" );
}
?>
</body>
</html>
7
ODBC (6)
<html>
<head>
<title>Pobioeranie danych z bazy danych ODBC</title>
</head>
<body>
<?php
putenv("ODBCINI=/usr/local/unixODBC/etc/odbc.ini");
// Ukrywamy komunikaty błędów i sami je obsługujemy
$aDBLink = @odbc_connect( "localdsn", "prodplanner", "agdec" );
if ( !empty( $aDBLink ) )
{
$aSQL = "select * from employees";
$aQResult = @odbc_exec( $aDBLink, $aSQL );
if ( $aQResult == True )
{
$aRow = array();
$aRowNum = 1;
while ( odbc_fetch_into( $aQResult, $aRowNum, &$aRow ) )
{
$aFName = $aRow[1];
$aPos
= $aRow[4];
print( "$aFName, $aPos<br>" );
$aRowNum++;
}
8
ODBC (7)
odbc_free_result( $aQResult );
}
else
{
print( "Błąd wykonania zapytania<br>" );
}
}
else
{
print( "Błąd podłączenia do bazy danych<br>" );
}
?>
</body>
</html>



nazwy funkcji są inne, koncepcja jest nieomal identyczna
wywołanie putenv() na początku skryptu umieszcza w
środowisku programu ścieżkę do pliku inicjalizującego ODBC
do pól tabeli odwołujemy się dla uproszczenia za pomocą
numerów a nie nazwy
9