Blauwe lucht met lichte witte wolken

Veelgestelde vragen

Database

In uw pakket wordt standaard het gebruik van Active Server Pages ondersteund. Hierbij hoort natuurlijk ook de ondersteuning voor Access databases. Echter, dit is vaak erg lastig, omdat er diverse factoren bij komen kijken. Om het gebruik van Access databases iets eenvoudiger te maken volgt hieronder een toelichting.

Let op! In verband met een bug in de MDAC (Microsoft Data Access Components, het component dat communicatie verzorgt tussen de webserver en de Access database) drivers van Microsoft, bieden wij geen ondersteuning bij problemen met Microsoft Access 97 databases. Wij raden u aan om van Access 2000, Access XP (2003) of Access 2007 gebruik te maken.

 


Voorbeeld connectionstrings

Er zijn verschillende manieren om verbinding te maken met een Access database. Via een OLE DB provider of via een ODBC (-Open Database Connectivity-) driver. Een OLE DB connectiestring is:

Access 2007, 2003

"Provider=Microsoft.ACE.OLEDB.12.0;Data Source=d:wwwuwinlognaamdatabasedatabase.accdb;"

ODBC-connectie voorbeelden

MS Access ODBC (2007) : "Driver={Microsoft Access Driver (*.mdb, *.accdb)};Dbq=d:wwwexample.comdatabasedatabase.mdb;"

MS Access ODBC (2000, 2003) : "Driver={Microsoft Access Driver (*.mdb)};Dbq=d:wwwexample.comdatabasedatabase.mdb;"

Over het algemeen geldt dat een Ole Db connectie sneller is dan een ODBC connectie en wordt daarom door VEVIDA aanbevolen.

In deze voorbeeld Ole Db connecties kunt u ook logingegevens opnemen. Plaats achter de database naam:

User;Password=;

In sommige gevallen moet dan nog het type van de database in de connectiestring gedefinieerd worden:

"Provider=Microsoft.ACE.OLEDB.12.0;Data Source=d:wwwexample.comdatabasedatabase.mdb;Jet OLEDB:Engine;"

Voor meer informatie, bijvoorbeeld: http://msdn.microsoft.com/en-us/library/aa140022.aspx,http://en.wikibooks.org/wiki/JET_Database/Creating_and_connecting.

Omdat "Provider" nogal uiteenlopende waarden kan hebben (wat bij ODBC minder het geval is), is het moeilijk te bepalen hoe uw connection string eruit moet zien met verschillende databases. Op http://www.connectionstrings.com en http://www.carlprothman.net/Default.aspx?tabid=81 vindt u een zo compleet mogelijk overzicht van connectiestrings.

 

Lezen uit een database

Om met behulp van ASP gegevens uit een database te lezen is onderstaande code afdoende. U dient de stringD:wwwexample.comdatabasedb.mdb uiteraard te vervangen door de lokatie van uw database bestand. De genoemde map database komt overeen met de map database in de root van uw FTP-site.

NB: In dit voorbeeld is het niet nodig om het commando Server.MapPath te gebruiken. Dit commando zal ook in deze setup niet functioneren.

<%@LANGUAGE=VBSCRIPT%>
<%
Option Explicit
Dim Conn, strConn

Set Conn = Server.CreateObject("ADODB.Connection")
strConn = "Provider=Microsoft.ACE.OLEDB.12.0;Data Source=D:wwwexample.comdatabasedb.mdb;"
Conn.Open strConn

Dim DTBrs
Set DTBrs = Server.CreateObject("ADODB.Recordset")
DTBrs.Open "tblTabel", Conn, 3, 3

' Doe hier wat u wilt doen in de database
' U kunt hier de ADO commando's DTBrs("VELDNAAM") of DTBrs.Fields("VELDNAAM") gebruiken. 

DTBrs.Close
Conn.Close
Set DTBrs = nothing
Set Conn = nothing

De 3, 3 aan het eind van de 4e regel kan vervangen worden door de officiele VB constanten. Hiervoor dient u echter te beschikken over het bestand adovbs.inc, dit bestand is hier te downloaden.

Schrijven naar een database

Het schrijven naar een database is wat lastiger, omdat hiervoor specifieke rechten moeten worden toegekend aan de database. Om dit te vereenvoudigen kunt u alle databases het best in één directory plaatsen, waarbij wij u aanraden dit in d:wwwexample.comdatabase te doen. Op deze directory hebben wij standaard de rechten geplaatst waarmee u in de database kunt schrijven.

Een voorbeeld script voor schrijven ziet er als volgt uit:

 <%@LANGUAGE=VBSCRIPT%>
 <%
 Option Explicit
 Dim Conn, strConn
 
 Set Conn = Server.CreateObject("ADODB.Connection")
 strConn = "Provider=Microsoft.ACE.OLEDB.12.0;Data Source=D:wwwexample.comdatabasedb.mdb;"
 Conn.Open strConn
 
 Dim DTBrs
 Set DTBrs = Server.CreateObject("ADODB.Recordset")
 DTBrs.Open "tblTabel", Conn, 3, 3
 
 ' Doe hier wat u wilt doen in de database
 ' U kunt hier de ADO commando's DTBrs("VELDNAAM") of DTBrs.Fields("VELDNAAM") gebruiken. 
 
 DTBrs.Close
 Conn.Close
 Set DTBrs = nothing
 Set Conn = nothing
 %>

Of, om een nieuw record aan te maken:

 <%
 DTBrs.Addnew
 DTBrs("VELDNAAM") = "gegevens"
 DTBrs("VELDNAAM2") = "gegevens"
 DTBrs.Update
 %>

En sluit ALTIJD de geopende connecties en recordsets weer af!:

<%
DTBrs.Close
Conn.Close
Set DTBrs = Nothing
Set Conn = Nothing
 %>

Access database verkleinen en optimaliseren

Als een database regelmatig gewijzigd wordt, raken delen va de database gefragmenteerd ("verdeeld"). Hierom moet regelmatig de Compact Database Utility van Access gedraaid worden, om de database te "defragmenteren". Tevens wordt hiermee de database verkleind, wat de performance verbetert en downloadtijd vermindert.

Beschikt u niet over het programma MS Access, dan kunt u de database compacten (verkleinen) met de JetComp utility. Deze kunt u bij Microsoft downloaden:
Jet compact utility.

Of online via een ASP-script:

 <%@ %>
 <%
 Option Explicit
 
 ' (c)2005 - 2008 VEVIDA Services BV
 ' 20051020.1947 - Jan Reilink <info@vevida.com>
 '           Laatste wijziging: 20080826.1710
 '
 ' Het onderstaande ASP script verkleint (compact) een Access 
 ' database waarna het script redirect naar een op te geven 
 ' pagina, bijvoorbeeld als onderdeel van een CMS.
 '
 ' Wijzig "example.com" in uw eigen inlognaam en de database
 ' naam "database.mdb" naar de naam van uw database.
 
 Const Jet_Conn_Partial = "Provider=Microsoft.ACE.OLEDB.12.0; Jet OLEDB:Engine; Data source="
 ' Const Jet_Conn_Partial = "Provider=Microsoft.Jet.OLEDB.4.0; Data source="
 
 Dim LoginNaam, DatabaseNaam, strKlaarURL
 Dim strDataBaseFile, strTempFile, strBackupFile
 Dim fso, objJRO, SourceFile, DuplicateFile, CompactedFile
 
 ' Uw loginnaam
 LoginNaam = "example.com"
 
 ' Databasenaam
 DatabaseNaam = "database.mdb" ' of .accdb voor Access 2007
 
 ' Bron database bestand
 strDataBaseFile = "d:www" & LoginNaam & "database" & DatabaseNaam
 
 ' Compacted database bestand
 strTempFile = "d:www" & LoginNaam & "databasetmp_" & DatabaseNaam
 
 ' Eventueel Backup bestandsnaam, gebruik accdb als extensie voor Access 2007
 ' strBackupFile = Replace(strDataBaseFile, "accdb","BAK")
 strBackupFile = Replace(strDataBaseFile, "mdb","BAK")
 
 ' de bestandsnaam of url van de pagina waarnaar het script moet 
 ' doorverwijzen zodra het klaar is. Standaard naar de root ("/")
 strKlaarURL = "/"
 
 ' Onder deze regel hoeft u niets aan te passen, tenzij
 ' u het maken van een backup uit wilt schakelen
 ' ---------------------------------------------------------------------
 
 Set objJRO = Server.CreateObject("JRO.JetEngine")
 Set fso = CreateObject("Scripting.FileSystemObject")
 
 If (fso.FileExists(strDataBaseFile)) Then
 Set SourceFile = fso.GetFile(strDataBaseFile)
 
 ' Eventueel back-up van de database maken
 SourceFile.Copy strBackupFile
 
 If (fso.FileExists(strTempFile)) Then
 Set DuplicateFile = fso.GetFile(strTempFile)
 DuplicateFile.Delete
 Response.Write "Bestaande tempfile is verwijderd!"
 End If
 
 objJRO.CompactDatabase Jet_Conn_Partial & strDataBaseFile, Jet_Conn_Partial & strTempFile
 SourceFile.Delete
 Set CompactedFile = fso.GetFile(strTempFile)
 CompactedFile.Copy strDataBaseFile
 CompactedFile.Delete
 
 ' het script verwijst door naar de volgende pagina zodra het klaar is met
 ' het compacten van de database.
 Response.Redirect strKlaarURL
 
 ' of, geef een tekstuele bevestiging (comment de Response.Redirect regel hierboven)
 ' Response.Write strDataBaseFile & " verkleind."
 
 Else
 Response.Write "<b>" & strDataBaseFile & "</b> - Het bestand is niet gevonden!"
 End If
 
 Set fso = Nothing
 Set objJRO = Nothing
 %>

Acccess-gerelateerde foutmeldingen

ASP- en Access-foutmeldingen zijn helaas erg generiek.

Service Unavailable: De voornaamste oorzaak van een Service Unavailable melding is dat de applicatiepool (AppPool), waarin de website draait, stop staat. Dit kan zijn wegens een crash van die AppPool, een crash van een "parser" of driver in die AppPool, of vanwege een moedwillige stopzetting door VEVIDA (bijvoorbeeld bij misbruik, al dan niet door derden).
De foutmelding (0x)8004005 betekent voornamelijk: Access denied, of vaak in een andere vorm: Operation Must Use an Updateable Query. Simpelweg betekent het dat het script bepaalde rechten niet heeft om een actie uit te voeren. De foutmelding "Operation Must Use an Updateable Query" wordt voornamelijk gegeven wanneer een Access-database geen schrijfrechten voor de IUSR (-bezoeker-) heeft. Via MYVEVIDA zijn de schrijfrechten toe te kennen via de link website instellingen. Verwijder hierbij www, vul er "database" voor in de plaats en klik op schrijfrechten toekennen. Ook kan het zijn dat het webruimte quotum vol is, waardoor er geen extra data in de database weggeschreven kan worden.
Couldn't use ; file already in use. : Deze Access database-gerelateerde foutmelding wordt veroorzaakt als een gebruiker een database opent en geen create permissies op de betreffende folder heeft. Er kan door de Jet database engine geen lock-bestand weggeschreven worden. Dit kan twee oorzaken hebben:

  • De schrijf-/modify rechten op de database-folder ontbreken;
  • Het quotum voor een gebruiker (FTP of IUSR) is vol;

Links naar meer informatie:


Online beheer van een Access database

Het volledig online beheren van een Access database is mogelijk met een pakket zoals dbadmin. De configuratie wijst zichzelf, documentatie en een "dutch language pack" zijn aanwezig.
Het is aan te raden om dbadmin in een beschermde folder te plaatsen. Het pakket genereert een 'dbadmin.xml' bestand met uw databases. Plaatst u deze in dezelfde beschermde folder, of in de database folder.
Dbadmin kunt u ook hier downloaden, inclusief alle beschikbare talen.

Dit pakket is niet door VEVIDA ontwikkeld en is niet "Access 2007 ready".


Tips en aanwijzingen voor het werken met Access databases

Microsoft wijdt een grote pagina aan tips en aanwijzingen voor het werken met, en optimaliseren van, Jet (Access) databases:
How to keep a Jet 4.0 database in top working condition.

1. Belangrijke tip
Veel problemen kunt u zelf oplossen door de "vriendelijke" foutmeldingen van Internet Explorer uit te schakelen. U ziet dan in plaats van de mededeling "HTTP 500 error" een foutmelding met de melding in welke regel er een fout in uw code voorkomt.
U kunt deze optie vinden bij internet opties op het tabblad geavanceerd.

De Web Application Stress Tool is een handige tool waarmee u kunt zien of uw scripting goed is:
http://www.microsoft.com/technet/archive/itsolutions/intranet/downloads/webstres.mspx

2. Gebruik een efficient database ontwerp
Een efficient ontworpen database verbetert de performance van de database. Een efficient ontworpen database.

3. Gebruik geen gereserveerde woorden of gereserveerde karakters voor objectnamen en/of veldnamen
Gereserveerde woorden of karakters die alleen gebruikt worden in of combinatie met andere woorden, gescheiden door spaties, kunnen databasecorruptie veroorzaken.

4. Maak regelmatig een backup van uw database
Bedenk een backup schema wat overeenkomt met de hoeveelheid data die u kunt/mag verliezen. Bijvoorbeeld, als u het zich kunt veroorloven om een dag aan data te verliezen, maak dagelijks een backup. Is een week nog verloorloofd, maak een weekelijkse backup. Een volldige backup van het database bestand is de beste manier om zeker te weten dat u de database kunt herstellen, mocht deze corrupt raken.

5. Microsoft Jet (lees: Access) is een gedeeld databasebestandssysteem.
Een gedeeld databasebestandssysteem betekent; het bestand kan door meerdere gebruikers gedeeld worden en het verwerken van het bestand gebeurt aan de kant van de client. Meerdere client processen gebruiken lees, schrijf en bestandslocking operaties op hetzelfde bestand. Als een proces niet afgerond kan worden bestaat de kans dat het bestand in een incomplete staat of in een corrupte staat blijft staan. Een proces wordt mogelijk niet afgerond door de volgende redenen:

o Als een client onverwacht stopt (men sluit de browser, de PC crasht, enz)

o Als een netwerkverbinding naar de server wegvalt (de gebruiker zit plotseling zonder internet)

Microsoft Jet is niet bedoelt voor high-stress server applicaties, high-concurrency server applicaties of 24 uur per dag, zeven dagen per week server applicaties. Dit is inclusief server applicaties zoals web applicaties, e-commerce applicaties, transactionele applicaties en server-berichten applicaties. Voor deze typen applicaties, de beste oplossing is om te kiezen voor een echt client/server database systeem, zoals MySQL of MS SQL Server.
Als u Microsoft Jet in high-stress applicaties zoals Microsoft Internet Information Server (IIS) gebruikt kunt u één van de volgende problemen ondervinden:

o Database corruptie

o Stabiliteitsproblemen, zoals IIS (de applicatiepool) crasht, of "locking up"

o Onverwachte fouten of continu driver (MDAC, OLE DB provider) fouten om te verbinden met een geldige database

6. Minimaliseer het aantal gelijktijdige connecties vanaf iedere client
We raden u aan om steeds slechts één connectie met een Microsoft Access database te makne. Iedere verbinding vertegenwoordigt een individuele client verbinding met de database, zelfs als deze verbindingen vanaf hetzelfde clientproces afkomstig zijn.
Om performance en netwerk I/O (Input/Output) te optimaliseren en om de multi-user stress op de backend database te verminderen, ontwerp de applicatie om een enkele connectie met de database te maken. Verdeel deze verbinding over meerdere recordsets mocht dit nodig zijn. Dit heeft het bijkomende voordeel dat lees- en schrijfvertragingen in de applicatie tegengegaan worden. Standaard is er een vertraging van vijf seconden tussen het schrijven van een waarde naar de database en de mogelijkheid om deze geüpdate waarde te lezen als er voor het lezen en schrijven twee verschillende connecties worden gemaakt. Dit geldt ook als de twee verbindingen door hetzelfde proces gemaakt worden.

7. Maak gebruik van ADO om te verbinden met een Microsoft Access database
Als u een verbinding maakt met een Microsoft Access database via ADO dan raden wij aan om de Microsoft Jet OLE DB Provider te gebruiken, in plaats van de Microsoft Access ODBC driver. Meer informatie hierover kunt u vinden op:
Using Microsoft Jet with IIS


Mocht u een reactie hebben naar aanleiding van dit artikel dan kunt u dit via de communicatiemodule op MyVEVIDA naar ons sturen.

Terug

Database

U kunt de back-up van een MySQL-database (de ‘mysqldump’) via de command line interface (CLI) importeren. Dat is vooral handig als uw database groter is dan 10 MiB. (Een kleinere MySQL-database kunt u eenvoudig online importeren via phpMyAdmin.)

Het programma ‘mysql’ is nodig om een mysqldump via de CLI te importeren. U kunt dat installeren met de MySQL Workbench of MySQL Community Server.

Met deze regel code overschrijft u een bestaande database met uw mysqldump. Pas de cursief gedrukte gegevens aan voor uw eigen domein en database. Plak de regel ten slotte in het venster van de CLI:

mysql --host=mysql.domein.nl --user=gebruikersnaam --password=wachtwoord --database=databasenaam < bestandsnaam.sql

U vindt uitgebreide informatie over de beschikbare opties in de documentatie van de mysql command line tool.

In sommige gevallen bevat een mysqldump het SQL-commando CREATE DATABASE databasenaam;. Dat levert een foutmelding op, omdat uw gebruikersaccount niet geautoriseerd is om een nieuwe database aan te maken. Open daarom eerst het bestand (bijvoorbeeld in Kladblok) en verwijder die regel voordat u de mysqldump importeert.

Terug

Database

U kunt zelf back-ups maken van een MySQL-database via de command line interface (CLI). Daarvoor gebruikt u het programma mysqldump, dat bijvoorbeeld onderdeel is van de de MySQL Workbench of MySQL Community Server.

Hebt u de MySQL Workbench 5.2 op Microsoft Windows geïnstalleerd? Dan vindt u het programma ‘mysqldump’ in de map C:Program FilesMySQLMySQL Workbench 5.2 CE.

Met deze regel code maakt u een back-up van uw MySQL-database. Pas de cursief gedrukte gegevens aan voor uw eigen domein en database. Plak de regel ten slotte in het venster van de CLI:

mysqldump --host=mysql.domein.nl --user=gebruikersnaam --password=wachtwoord --opt --routines --all-databases > bestandsnaam.sql

U vindt uitgebreide informatie over de beschikbare opties in de (Engelstalige) documentatie van de mysqldump command line tool.

Terug

Database

U kunt eenvoudig zelf een back-up van uw MySQL-database maken via phpMyAdmin, een online applicatie om uw database te beheren.

  • Log in met de gebruikersnaam en het wachtwoord van uw database en de juiste databaseserver
  • Klik op het tabblad Exporteer

De snelle exportmethode is meestal voldoende. (Wilt u meer controle over de manier waarop de back-up wordt samengesteld? Dan kiest u voor de uitgebreide exportmethode. U kunt daarmee alle instellingen zelf wijzigen.)

  • Klik op de knop Start

De back-up is gedownload en heeft bijvoorbeeld als naam net3-nl-mysql-16.vevida.net.sql. U kunt dat bestand later gebruiken om de back-up te importeren als dat nodig is.

Terug

Serverhosting connector | Database

Microsoft SQL Server, onderdeel van het Windows Server System, is een relationeel database management totaalpakket voor gegevensbeheer. Het is de basis van moderne toepassingen voor e-commerce en business intelligence. Met Microsoft SQL Server kunnen dergelijke toepassingen heel snel ontwikkeld en ingezet worden. Daarbij kan de software meegroeien met de applicatie. Meer info over Microsoft SQL Server via deze site.



Een relationele database slaat de data op in tabellen die een relatie met elkaar hebben, in plaats van in één lange waslijst. Een groot voordeel hiervan is snelheid en flexibiliteit. SQL staat voor Structured Query Language, SQL is de standaard taal om databases te benaderen. SQL statements worden gebruikt om bepaalde taken uit te voeren zoals het updaten van data in een database, of juist het ophalen van data uit een database. Naast SQL ondersteunt Microsoft SQL Server ook Transact-SQL (T-SQL), wat een superset van SQL is, met bijvoorbeeld ondersteuning voor stored procedures.

 

Microsoft SQL Server database versie

U krijgt een Microsoft SQL Server 2008 database. Deze database mag maximaal 150 MB groot zijn. U kunt de database benaderen via de hostnaam sql.uwdomein.nl.

U krijgt bij uw database een inlognaam (gebruiker) met wachtwoord. Uw krijgt de rol "db_securityadmin" voor deze gebruiker.

 

Microsoft SQL Server database onderhouden

Een Microsoft SQL Server database kunt u bijvoorbeeld onderhouden door middel van de Microsoft SQL Server Enterprise Manager of Aqua data studio. Dit laatste programma is geschikt voor meerdere soorten databases. U kunt deze bijvoorbeeld ook gebruiken voor het onderhoud van een MySQL database. U kunt door middel van deze tools uw database vanaf uw eigen computer beheren.

 

Microsoft SQL Server database back-up maken

Een eenvoudige manier om back-ups te kunnen maken van uw MS-SQL database is de import/export feature van SQL Server Management Studio. U kunt zo alle data per tabel exporteren naar een tekstbestand en dat bestand slaat u vervolgens veilig op op uw eigen systeem.
Dit alles doet u via de vertrouwde SQL Server Management Studio.

U begint met het inloggen op de database server, waarna u rechts klikt op de
database in kwestie. In het context menu kiest u vervolgens de optie 'tasks',
waarna u kiest voor 'export data...'. Vervolgens dient u de wizard te doorlopen
en krijgt u de vraag van welke database en welke tabel u een backup wilt maken.
Daarnaast krijgt u diverse mogelijkheden om de backup naartoe te schrijven,
waaronder een andere database server, een excell spreadsheet of een platte tekst
bestand.

Wanneer u gegevens wil importeren gebruikt u dezelfde methode, enkel
kiest u dan voor de optie 'import data...'.

Terug

Database

Een database is een gestructureerde collectie van data. Het kan alles zijn van een simpele webwinkel lijst tot een plaatjes gallerij of alle informatie van een bedrijfsnetwerk. Om data toe te voegen en de opgeslagen data te bewerken heeft u een database management systeem zoals MySQL nodig.

Standaard is in het hostingpakket één MySQL-database opgenomen. Een extra MySQL-database kost 12 euro ex BTW per jaar extra. U kunt in MyVEVIDA zelf uw pakket uitbreiden met een extra database.


MySQL is een relationeel database management systeem. Een relationele database slaat de data op in aparte tables in plaats van in één lange waslijst. Een groot voordeel hiervan is snelheid en flexibiliteit. MySQL is één van de meest populaire open source databases vanwege de snelle performance, hoge betrouwbaarheid en een het eenvoud in gebruik. MySQL wordt wereldwijd gebruik in meer dan 6 miljoen installaties, variërend van grote corporaties tot gespecialiseerde embedded applicaties. SQL staat voor Structured Query Language, SQL is de standaard taal om databases te benaderen.
SQL statements worden gebruikt om bepaalde taken uit te voeren zoals het updaten van data in een database, of juist het ophalen van data uit een database. De standaard SQL commando's zoals "Select", "Insert", "Update", "Delete", "Create" en "Drop" kunnen worden gebruikt om datgene te bewerkstelligen wat iemand met een database wil.

Een voorbeeld query is:

 

SELECT * FROM table;

Hierbij wordt alle (*) data uit (FROM) table opgevraagd (SELECT).


MySQL database benadering vanuit PHP

Om contact te leggen naar een MySQL server heeft u de volgende vier gegevens nodig:

1. de hostnaam, veelal mysql.uwdomein.com;
2. de databasenaam;
3. de gebruikersnaam;
4. het wachtwoord;

De functie om de connectie op te bouwen is mysql-connect:

<?php
$link = mysql_connect('mysql.uwdomein.com', 'mysql_gebruikersnaam', 'mysql_wachtwoord');
if (!$link) {
  die('Could not connect: ' . mysql_error());
}
echo 'Connected successfully';
mysql_close($link);
?>

Als er een connectie naar de database server tot stand is gebracht dient u de database selecteren die u wilt gebruiken. Daarvoor gebruikt u de mysql-select-db functie. Ook controleert u of het is gelukt om die database te selecteren:

 <?php
 $link = mysql_connect('mysql.uwdomein.com', 'mysql_gebruikersnaam', 'mysql_wachtwoord');
 if (!$link) {
   die('Not connected : ' . mysql_error());
 }
 
 // make foo the current db
 $db_selected = mysql_select_db('foo', $link);
 if (!$db_selected) {
   die ('Can't use foo : ' . mysql_error());
 }
 ?>

Een tweede mogelijkheid is om van de PEAR class MDB2 gebruik te maken. Een voorbeeld connect en disconnect is:

 <?php
 require_once 'MDB2.php';
 
 $dsn = 'mysql://gebruikersnaam:wachtwoord@hostnaam/databasenaam';
 $options = array(
   'debug' => 2,
   'result_buffering' => false,
 );
 
 $mdb2 =& MDB2::factory($dsn, $options);
 if (PEAR::isError($mdb2)) {
   die($mdb2->getMessage());
 }
 
 // ...
 
 $mdb2->disconnect();
 ?>

Uitgebreide documentatie kunt u vinden op PEAR::MDB2 documentatie website.


MySQL database benadering vanuit ASP

Om contact te leggen naar een MySQL-server via ASP heeft u de volgende vier gegevens nodig:

1. de hostnaam, veelal mysql.uwdomein.com;
2. de databasenaam;
3. de gebruikersnaam;
4. het wachtwoord;

U kunt het beste gebruik maken van de MySQL ODBC 5.1 Driver. De string om de connectie op te bouwen is (uitleg opties):

<%@ %>
<% 
Option Explicit
Dim strConnection
Set strConnection = Server.CreateObject("ADODB.Connection")
strConnection.Open      "Provider=MSDASQL;" & _
    "Driver={MySQL ODBC 5.1 Driver};" & _
   "Server=mysql.uwdomein.com;" & _
  "Database=databasenaam;" & _
  "UID=gebruikersnaam;" & _
  "PWD=wachtwoord;"
 
If strConnection.errors.count = 0 Then
  Response.write "Connected OK"
End If
 
strConnection.Close
Set strConnection = nothing
%>

Doormiddel van de Provider=MSDASQL wordt de Microsoft OLE DB voor ODBC aangesproken:

The Microsoft OLE DB Provider for ODBC (MSDASQL) is a technology that allows applications that are built on OLEDB and ADO (which uses OLEDB internally) to access data sources through an ODBC driver. MSDASQL is an OLEDB provider that connects to ODBC, instead of a database.

 

MySQL database benadering vanuit ASP.NET

Connector/NET
Sinds 11 februari 2010 is het gebruik van de native MySQL Connector/NET mogelijk voor het maken van een verbinding met een MySQL-database. Hiervoor is een aangepaste, en beperkte, System.Net.SocketPermission-configuratie ingesteld.

Informatie over deze connector vindt u op de onderstaande url:
http://dev.mysql.com/doc/refman/5.0/en/connector-net.html.

Een VB.NET voorbeeld:

<%@ Page debug="true" %>
<%@ Import Namespace = "System.Data" %>
<%@ Import Namespace = "MySql.Data.MySqlClient" %>
 
<script runat="server">
Sub Page_Load(sender As Object, e As EventArgs)
  Dim myConnection  As MySqlConnection
  Dim myDataAdapter As MySqlDataAdapter
  Dim myDataSet     As DataSet
  Dim strSQL        As String
  Dim iRecordCount  As Integer
 
  ' pooling=true of false is hieronder mogelijk
  myConnection = New MySqlConnection("server=mysql_hostnaam;" & _
    "user id=mysql_gebruikersnaam;" & _
    "password=mysql_wachtwoord;" & _
    "database=mysql_databasenaam;")
 
  strSQL = "SHOW TABLES;"
 
  myDataAdapter = New MySqlDataAdapter(strSQL, myConnection)
  myDataSet = New Dataset()
  myDataAdapter.Fill(myDataSet, "mytable")
 
  MySQLDataGrid.DataSource = myDataSet
  MySQLDataGrid.DataBind()
End Sub
</script>
 
<html>
  <head>
    <title>Simple MySQL Database Query</title>
  </head>
  <body>
 
    <form runat="server">
      <asp:DataGrid id="MySQLDataGrid" runat="server" />
    </form>
  </body>
</html>

De MySQL Connector/NET is niet serverbreed geïnstalleerd op onze webservers, zoals de MySQL Connector/ODBC wel is. De MySql.Data.dll assembly kan in de ~/bin directory van de desbetreffende applicatie geplaatst worden.

Entity Framework bovenop MySQL Connector/NET
(voor de wat gevorderde ontwikkelaars)
Maakt u een Entity Framework bovenop MySQL Connector/NET, de volgende -extra- informatie:

De correcte connectiestring in je web.confog of app.config dient het stuk na provider connection string tussen ' en ' te hebben ipv de door VS2008 & MySQL Connector/Net gegenereerde " en ". Deze werken namelijk wel op je development omgeving, maar niet op een webserver bij VEVIDA.

Goede connectie string:

 <add name="modelEntities" connectionString="metadata=res://*/Model.csdl|
 res://*/Model.ssdl|res://*/Model.msl;provider=MySql.Data.MySqlClient;
 provider connection string='server=mysql.server.ext;User Id=mysqluser;
 Persist Security Info=True;database=mysqldb;password=mysqlpwd'" 
 providerName="System.Data.EntityClient" />

Automatisch (verkeerde) gegenereerde connectie string:

 <add connectionString="metadata=res://*/Model.csdl|
 res://*/Model.ssdl|res://*/Model.msl;provider=MySql.Data.MySqlClient;
 provider connection string="server=mysql.server.ext;User;
 Persist Security Info=True;database=mysqldb;password=mysqlpwd"" 
 providerName="System.Data.EntityClient" />

Ook is het handig om in je web.config een DBFactory op te nemen zodat je zeker bent dat de appicatie de MySQL.Data.dll aanspreekt in je ~/bin directory.

<system.data>
  <DbProviderFactories>
    <clear />
    <add invariant="MySql.Data.MySqlClient" 
      description=".Net Framework Data Provider for MySQL" 
      type="MySql.Data.MySqlClient.MySqlClientFactory, MySql.Data, 
      Version=6.2.2.0, Culture=neutral, PublicKeyToken=c5687fc88969c44d" />
  </DbProviderFactories>
</system.data>


Connector/ODBC
Met de MySQL Connector/ODBC kunt u een verbinding maken met een MySQL database vanuit .NET. Informatie over deze connector vindt u op de onderstaande url:
http://dev.mysql.com/doc/refman/5.0/en/connector-odbc.html.

Het C#-voorbeeld voor .NET op de bovengenoemde pagina is hieronder omgezet naar ASP.NET. Het originele voorbeeld vindt u op de onderstaande url.
http://dev.mysql.com/doc/refman/5.0/en/odbc-net-op-c-sharp-cp.html.

<%@ Page Trace="False" Debug="False" EnableViewState="False" %>
<%@ import Namespace="System.Data.Odbc" %>
 
<script runat="server">
private void Page_Load(object sender, System.EventArgs e) {
  try {
    // Connection string for MyODBC 5.1
    string MyConString = "DRIVER={MySQL ODBC 5.1 Driver};" +
      "Provider=MSDASQL;" +
      "SERVER=mysql.hostnaam.nl;" +
      "DATABASE=databasenaam;" +
      "UID=inlognaam;" +
      "PASSWORD=wachtwoord;" +
      "OPTION=3";
 
    // Connect to MySQL using MyODBC
    OdbcConnection MyConnection = new OdbcConnection(MyConString);
    MyConnection.Open();
 
    Response.Write("<br /> !!! success, connected successfully !!!<br />");
 
    // Display connection information
    Response.Write("Connection Information:<br />");
    Response.Write("Connection String:" + MyConnection.ConnectionString + "<br />");
    Response.Write("Connection Timeout:" + MyConnection.ConnectionTimeout + "<br />");
    Response.Write("Database:" + MyConnection.Database + "<br />");
    Response.Write("DataSource:" + MyConnection.DataSource + "<br />");
    Response.Write("Driver:" + MyConnection.Driver + "<br />");
    Response.Write("ServerVersion:" + MyConnection.ServerVersion + "<br />");
 
    // Close all resources
    MyConnection.Close();
  } catch (OdbcException MyOdbcException) { //Catch any ODBC exception ..
    for (int i=0; i < MyOdbcException.Errors.Count; i++) {
      Response.Write("ERROR #" + i + "<br />" +
        "Message: " + MyOdbcException.Errors[i].Message + "<br />" +
        "Native: " + MyOdbcException.Errors[i].NativeError.ToString() + "<br />" +
        "Source: " + MyOdbcException.Errors[i].Source + "<br />" +
        "SQL: " + MyOdbcException.Errors[i].SQLState + "<br />");
    }
  }
}
</script>


MySQL database benadering vanuit Perl

Om contact te leggen naar een MySQL server middels Perl heeft u de volgende vier gegevens nodig:

1. de hostnaam, veelal mysql.uwdomein.com;
2. de databasenaam;
3. de gebruikersnaam;
4. het wachtwoord;

U kunt gebruik maken van DBD:mysql om de verbinding op te bouwen.

De string om de connectie op te bouwen is:

#!C:/Perl/bin/perl
use strict;
use CGI qw/:standard/;
use DBI;
 
my ($dbh, $sth, $count);
$dbh = DBI->connect ("DBI:mysql:host=mysql.uwdomein.com;database=databasenaam", 
  "gebruikersnaam", "wachtwoord", {PrintError => 0, RaiseError => 1});
 
my $query = "SHOW TABLES";
$sth = $dbh->prepare ("$query");
$sth->execute ();
 
print header;
 
$count = 0;
while (my @val = $sth->fetchrow_array ()) {
  ++$count;
}
print p ("$count rows total");
 
$sth->finish ();
$dbh->disconnect ();


MySQL database onderhouden

De database kunt u onderhouden middels phpMyAdmin. Na het downloaden van phpMyAdmin kunt u deze uploaden naar uw website (bijvoorbeeld in http://www.uwdomein.com/phpmyadmin/), waarna u de juiste gegevens dient te wijzigen in het bestandje config.inc.php.
Aan te raden is de directory welke u gebruikt voor phpMyAdmin te beveiligen d.m.v. de rechten voor de IUSR te verwijderen, u kunt dan met uw FTP-inloggegevens inloggen op phpMyAdmin folder en tables aanmaken.

Ook kunt u gebruik maken van mySQL-Front (mocht deze download niet werken dan kunt deze altijd downloaden bij http://www.mysqlfront.de/), dit is een programma die u op uw lokale PC kunt installeren. Na installatie kunt u uw inloggegevens invoeren en verbinding maken met de server.
MySQL CC en MySQL Administrator zijn client programma's ontwikkelt door de makers van MySQL.

Een backup van uw database, of het overzetten van databases, kunt u doen middels mySQLdump of mySQL-Front (de import/export functie).
mySQLdump is een utility om een dump van een database te maken voor backup doeleinden, of voor het verzenden van data naar een andere SQL server (dit hoeft niet persee een mySQL server te zijn). De dump bevat SQL statements om de tables aan te maken en, indien nodig, te vullen. Beschikt u over de MySQLclient-tools (Windows of Linux) dan kunt u het volgende commando gebruiken om een dump (backup) van uw MySQL database te maken (plaats het commando op één regel):

 mysqldump --opt -h mysql.uwdomein.com -u database_usernaam -p
 --databases databasenaam >> databasenaam.sql

De -p zorgt er voor dat pas na het drukken op [ENTER] een wachtwoord ingevoerd moet worden.

Op deze manier heeft u altijd een backup van uw database op uw lokale computer.


MySQL database optimalisatie

Optimalisatie is een gecompliceerd onderdeel van databasegebruik en -beheer, omdat u kennis dient te hebben van het gehele systeem. U kunt namelijk de snelheid van uw database aanzienlijk verbeteren door bijvoorbeeld gebruik te maken van table indexes.

Op http://dev.mysql.com/doc/refman/5.0/en/optimization.html kunt u hier meer over lezen, met name de hoofdstukken:

En

Het is belangrijk om regelmatig een OPTIMIZE TABLE-query uit te voeren op alle tabellen van een database. Het verwijdert o.a. zogenaamde "overhead" -space/ruimte: ruimte die beschikbaar is gekomen nadat records verwijderd zijn, maar nog steeds voor de database ingebruik is. De data in de tabellen raken gefragmenteerd (verspreid).
Met onderstaand PHP script is het mogelijk om alle tabellen in een MySQL database te optimaliseren. Het PHP script kunt u op uw website plaatsen (geef het bijvoorbeeld de naam db_optimize.php) en via uw website, online, opvragen.

<?php
/**
* (c)2005 - 2009 VEVIDA Services BV
*
* 20090701.1100 - Jan Reilink <info at vevida.com>
* Script om alle tabellen in een MySQL database te optimaliseren.
*/
 
// MySQL configuratie
$dbhostnaam = 'mysql.example.com';
$dbusername = 'mysql_gebruikersnaam';
$dbpassword = 'mysql_wachtwoord';
$db = 'mysql_databasenaam';
 
// Maak verbinding met de MySQL server  
$link = mysql_connect($dbhostnaam, $dbusername, $dbpassword);
if (!$link) {
  die('Could not connect: ' . mysql_error());
}
 
// Selecteer de database, of geef een foutmelding
$db_selected = mysql_select_db($db, $link);
if (!$db_selected) {
  die ('Can't use '.$db. ' : ' .mysql_error());
}
 
// Maak een query
$listquery = "SHOW TABLES FROM `".$db."`";
$dbtables = mysql_query($listquery);
 
/**
* Vraag alle tabellen uit de database op en plaats deze in een array.
* Een tellertje op het aantal geoptimaliseerde tabellen is ook 
* altijd leuk :-)
*/
$t = 1;
while ($row = mysql_fetch_array($dbtables, MYSQL_NUM)) {
$optimizequery = "OPTIMIZE TABLE `".$row[0]."`";
$result = mysql_query($optimizequery);
 
/**
* Geef een melding dat de betreffende tabel geoptimaliseerd is,
* of "exit" met een foutmelding, als er iets fout gegaan is.
*/
if (!$result) {
  exit(mysql_error());
} else {
  print 'OK, table '.$row[0].' geoptimaliseerd.<br />';
  $t = $t + 1;
}

echo '<br />Klaar! In totaal '.$t.' tabellen geoptimaliseerd.';
?>


MySQL database grootte

Met onderstaand PHP script is het mogelijk om op te vragen hoe groot een MySQL database is. Het PHP script kunt u op uw website plaatsen (geef het bijvoorbeeld de naam db_size.php) en via uw website, online, opvragen.

 <?php
 /**
 *  Script om op te vragen hoe groot een MySQL database is
 *  Invoer: $dbhostnaam, $db, $dbusername, $dbpassword
 *
 *  v20090330.1630
 *  Copyright 2004 - 2009 VEVIDA Services B.V. - Jan Reilink <info at vevida.com>
 *
 */
 ?>
 
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html>
  <head>
    <title>MySQL database grootte (PHP)</title>
    <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
    <meta content="VEVIDA Services BV" />
  </head>
  <body>
    <p style="font-family: Verdana, Arial, Helvetica, sans-serif; font-size: 12px;">
 
<?php
$dbhostnaam = "mysql.uwdomein.com";
$db = "mysql_databasenaam";
$dbusername = "mysql_gebruikersnaam";
$dbpassword = "mysql_wachtwoord";
 
mysql_connect($dbhostnaam,$dbusername,$dbpassword);
mysql_select_db($db) or die ("Fout, kan de database niet openen");
 
function get_dbsize($db) {
  $query = "SHOW TABLE STATUS FROM `".$db."`";
  if ($result = mysql_query($query)) {
    $tables = 0;
    $rows = 0;
    $size = 0;
    while ($row = mysql_fetch_array($result,MYSQL_ASSOC)) {
      $rows += $row["Rows"];
      $size += $row["Data_length"];
      $size += $row["Index_length"];
      $tables++;
    }
  }
 
  $data[0] = $size;
  $data[1] = $tables;
  $data[2] = $rows;
  return $data;
}
 
$result = get_dbsize($db);
 
print "Database <b>" .$db . "</b> heeft de volgende gegevens:<br /><br />";
 
$megabytes = $result[0] / 1024 / 1024;
$megabytes = round($megabytes, 3);
 
print "<span style="font-variant: normal;">";
print_r( $result[0] . "t" . " bytes, " . "in MegaBytes maakt dit, " . $megabytes . " MBrn");
print "<br />";
print_r( $result[1] . "tt" ." tablesrn");
print "<br />";
print_r( $result[2] . "tt" ." rowsrn");
print "</span>";
?>
    </p>
 
    <p style="font-family: Verdana, Arial, Helvetica, sans-serif; font-size: 12px;">
      Controle gedaan op:
 <?php
 /**
  * geeft de datum weer in het formaat: Fri, 03 Feb 2006 11:02:09 +0100
  */
 echo date("r");
 ?>
 
       <br /><br />
      <span style="font-size: 10px; padding-left: 3px;">
        © 2004 - 2009 <a href="http://www.vevida.com" target="_blank">VEVIDA Services BV</a>.
      </span>
    </p>
   </body>
 </html>


LOAD DATA LOCAL INFILE

Met de MySQL LOAD DATA LOCAL INFILE-functie is het mogelijk om lokale bestanden met data, op het bestandssysteem van de webserver, met één statement aan de database toe te voegen. Met deze functie kunt u in één keer een bulk data, bijvoorbeeld uit een .csv-bestand, aan de database toevoegen.

Een voorbeeldscript:

<?php
/**
 * (c)2005 - 2009 VEVIDA Services BV
 * 20090720.1000 - Jan Reilink <info at vevida.com>
 *
 * LOAD DATA LOCAL INFILE voorbeeld.
 */
$link = mysql_connect('mysql.[domein].org', '[gebruikersnaam]', '[wachtwoord]');
if (!$link) {
  die('Could not connect: ' . mysql_error());
}
echo 'Connected successfully <br/>';
 
// maak '[dbnaam]' de geselecteerde db
$db_selected = mysql_select_db('[dbnaam]', $link);
if (!$db_selected) {
  die('Can't use foo : ' . mysql_error() .'<br/>');
}
 
/**
 * let op het aantal backslashes ('').
 * de specifieke query is afhankellijk van het .csv bestand.
 */
$datafile = 'd:www[FTP-inlognaam].orgwwwdata_bestand.csv';
$query = "LOAD DATA LOCAL INFILE '{$datafile}' INTO TABLE `tabelnaam` 
  FIELDS TERMINATED BY ';' LINES TERMINATED BY 'rn' (rij1, rij2, rij3, rij4, rij5)";
$result = mysql_query($query, $link);
 
if (!$result) {
  die('Query is mislukt: ' . mysql_error() .'<br/>' .$query);
} else {
  echo 'query succeeded succesfully.';
}
 
mysql_close($link);
?>

Let op dat u deze functie niet via de phpMyAdmin applicatie kunt gebruiken.

 

phpMyAdmin

http://www.phpmyadmin.net:

phpMyAdmin is a tool written in PHP intended to handle the administration of MySQL over the Web.

In MyVEVIDA is een voorgeïnstalleerde phpMyAdmin beschikbaar, voor klanten die beschikken over een MySQL database. U vindt deze phpMyAdmin door in te loggen op MyVEVIDA. Beschikt u over een MySQL database, dan is hier een kopje "Uw mySQL server" opgenomen.
Hierdoor hoeft u niet zelf meer een phpMyAdmin op uw website te plaatsen, alhoewel u natuurlijk vrij bent om dit te wél te doen.
Gaat u naar de phpMyAdmin pagina, dan moet u uw MySQL gebruikernaam en wachtwoord invoeren en de betreffende MySQL server selecteren uit het drop-down menu. Uw database wordt automatisch geselecteerd. De verbinding maakt gebruik van een beveiligde SSL (HTTPS) verbinding, de login geschiedt via een cookie. Uw browser dient dit te ondersteunen.


Externe hulp

Mocht u hulp nodig hebben met PHP en mySQL dan is er een uitstekende (Nederlandstalige) handleiding beschikbaar op
http://nl.linux.org/doc/HOWTO/PHP-MySQL-NL.html
MySQL 5.0 Reference Manual

Terug

Veilig betalen

securit

ideal paypal bancontact mastercard visa maestro