Connection strings
Include filer
Det smarteste er at gemme ens datakald i en include fil eller i global.asa. På denne måde skal du kun ændre det et sted hvis du ønsker at skifte database, f.eks. fra Access til en MySQL database. For at bruge et af nedenstående kald skal du fjerne ' tegnet. Et ' tegn foran linien gør at ASP ved at det er en bemærkning og bruger ikke linien.
Access
<%
' *** MS Access, DSNless
'OLEDB kald til Access 2000
strConnect = _
"Provider=Microsoft.Jet.OLEDB.4.0;" &_
"Data Source=d:\home\FTPBrugernavn\db\database.mdb;"
'OLEDB kald til Access 97
strConnect = _
"Provider=Microsoft.Jet.OLEDB.3.51;" &_
"Data Source=d:\home\FTPBrugernavn\db\database.mdb;"
'ODBC til alle Access versioner.
'Er langsom og virker IKKE til servere der kører MDAC 2.6.
strConnect = _
"Driver={Microsoft Access Driver (*.mdb)};" &_
"DBQ=d:\home\FTPBrugernavn\db\database.mdb;"
'ODBC. Simpel metode hvis databasen ligger i samme mappe
'som siden det kaldes fra. Ikke anbefalet.
strConnect = _
"Driver={Microsoft Access Driver (*.mdb)};" &_
"DBQ=" & Server.Mappath("database.mdb") & ";"
%>
MySQL
<%
' *** MySQL, DSNless
strConnect = _
"Driver={MySQL ODBC 3.51 Driver};" & _
"Server=mysql.dit-domaene.dk;" &_
"Port=3306;" & _
"Option=131072;" & _
"Stmt=;" & _
"Database=SQLBrugernavn;" & _
"Uid=SQLBrugernavn;" & _
"Pwd=SQLKodeord"
%>
MS SQL (Microsoft SQL Server)
<%
' *** MS SQL, OLEDB, DSNless til lokal server
strConnect = _
"Provider=SQLOLEDB.1;" &_
"Data Source=(local);" &_
"Initial Catalog=SQLBrugernavn;" &_
"User ID=SQLBrugernavn;" &_
"Password=SQLKodeord;"
' *** MS SQL, OLEDB, DSNless til remote server
strConnect = _
"Provider=SQLOLEDB.1;" &_
"Data Source=mssql.dit-domaene.dk,1433;" &_
"Initial Catalog=SQLBrugernavn;" &_
"User ID=SQLBrugernavn;" &_
"Password=SQLKodeord;"
"Network Library=DBMSSOCN"
' Hvis du skal bruge named instance, så brug i stedet strengen:
' "Data Source=mssql.dit-domaene.dk\MSDE01SERVERNAVN;" & _
%>
DSN
<%
' *** DSN kald for alle typer datakilder
' DSN: Eksempler på DSN kald. For at bruge et DSN skal du have
' oprettet et ODBC link på serveren. Bemærk at dette er langsomt,
' upraktisk og bestemt ikke anbefales.
strConnect = _
"Dsn=Brugernavn;" &_
"Uid=Brugernavn;" &_
"Pwd=Kodeord;"
'strConnect = _
"Dsn=sk5kndf8"
%>
Tekstfiler
<%
' *** DSN-less forbindelse til en tekstfil (text file):
strConnect = _
"Provider=Microsoft.Jet.OLEDB.4.0;" &_
"Data Source=d:\home\FTPBrugernavn\db\textfile.txt;" &_
"Extended Properties=""text;HDR=Yes;FMT=Delimited"""
%>
Excel
<%
' *** DSN-less forbindelse til en Excel file:
strConnect = _
"Provider=Microsoft.Jet.OLEDB.4.0;" &_
"Data Source=c:\somepath\mySpreadsheet.xls;" &_
"Extended Properties=""Excel 8.0;HDR=Yes"""
' HDR=Yes betyder at øverste række indeholder
' overskrifter og derfor skal springes over.
%>
Hvis du vil læse mere om OLEDB, System DSN osv. så prøv at læse: System DSN or DSN-less Connection? og OLEDB for Me.
FAQ
Hvorfor virker min connection string ikke efter serverflytning?
Ved overgang fra f.eks. MDAC (MSDASQL) 2.5 til 2.6 er der en del gamle connection strings der ikke længere virker. Tjek at du bruger den sidste nye connection string som specificeret ovenfor.
Tjek også at du ved boolean (true/false) kald i Access, altid bruger true/false
og ikke tjekker på om værdien er lig med -1/0/1:
SELECT * FROM tabel WHERE felt = TRUE. Tjekker du på værdien,
vil du få forskellige resultater i OLEDB og ODBC, samt MS SQL/Access. For eksempel er
True=1 i MS SQL, men i Access er True=-1,
afhængigt af connection string. Du bør derfor
altid bruge: SELECT * FROM tabel WHERE felt = TRUE/FALSE i Access.
Hvorfor virker min connection string ikke i Javascript?
I Javascript og lignende scriptsprog skal du angive filplaceringer med dobbelte
backslashes, som for eksempel:
"Data Source= d:\\home\\FTPBRUGERNAVN\\db\\database.MDB;".
Hvorfor ikke bruge en System DSN i stedet for en DSN-LESS
En del mennesker der har brugt System DSN (almindeligvis kun kaldet DSN) i lang tid vil fortælle dig at dette er den bedste metode (og det var det også engang). Ifølge tests på Access, MySQL og MS SQL databaser er dette ikke sandt længere. At bruge en System DSN er betragtelig langsommere end et OLEDB kald, koster penge i oprettelse og er meget upraktisk hvis du ønsker at skifte database. Hvis muligt anbefaler vi derfor klart at vores brugere bruger en DSN-LESS forbindelse, som beskrevet nedenstående.
Hvordan kodeordsbeskytter jeg en Access database?
Via Jet OLEDB, kan man sende ekstra parametre, så hvis du tilføjer følgende
til din connection string Jet OLEDB:Database Password=KODEORD;
kan du bruge kodeordsbeskyttede databaser. Bemærk at dette kodeord er kendt for at
være let at bryde, så du bør stadig ikke på nogen måde gøre din database tilgængelig
for tredjepart.
Hvad med andre connecters end ovenstående?
Her er flere der sjældent bliver brugt.
' Microsoft ISAM 1.1 OLE DB Provider Provider=Microsoft.ISAM.OLEDB.1.1 ' Microsoft OLE DB Provider for Indexing Service Provider=MSIDXS.1 ' Internet Publishing Provider=MSDAIPP.DSO.1 ' Microsoft OLE DB Provider for ODBC Drivers Provider=MSDASQL.1 ' Microsoft OLE DB Provider for OLAP Services Provider=MSOLAP.1 ' Microsoft OLE DB Provider for Oracle Provider=MSDAORA.1 ' MSDataShape ' Kan bruges til SQL og giver meget vide rammmer Provider=MSDataShape.1 ' OLE DB Provider for Microsoft Directory Services Provider=ADsDSOObject
PHP eksempler
<?
# DSN-lss forbindelse til Access
$db = ADONewConnection('access');
$dsn = .
"Driver={Microsoft Access Driver (*.mdb)};" .
"Dbq=d:\home\FTPBrugernavn\db\database.mdb;" .
"Uid=Admin;" .
"Pwd=;";
$db->Connect($dsn);
#DSN-less forbindelse til MS SQL Server:
$db = ADONewConnection('odbc_mssql');
$dsn = .
"Driver={SQL Server};" .
"Server=localhost;" .
"Database=northwind;";
$db->Connect($dsn,'userid','password');
# Forbindelse til MySQL:
function connect() {
mysql_connect("IP/SERVER","USERNAME","PASSWORD")
or die("Problem DataBase Connection");
mysql_select_db("DATABASENAME")
or die("Could not select database");
}
# DSN forbindelse: Forbind til en DSN der hedder
# "mindb" med brugernavn Navn og kodeord Kode
$connect = odbc_connect("mindb", "Navn", "Kode");
?>
Ekstern hjælp
| MS Universal Data Access Web Site |
| Alverdens connectionstrings |
Forklaringer
| Kommando/alternativ | Beskrivelse |
|---|---|
| Initial Catalog=TABLE | Sætter standard databasen. |
| Database=SQLBrugernavn | Vælg databasen. |
| Uid/User ID=SQLBrugernavn | Sætter brugernavnet. |
| Pwd/Password=SQLKodeord | Sætter kodeordet. |
| Persist Security Info=[True|False] | Sikkerhed. |
| Network Library/Network=xxx | Vælg Network Library (protokol), se tabellen nedenfor. |
Netværksprotokoller
| Library | Beskrivelse |
|---|---|
| dbnmpntw | Named Pipes |
| dbmssocn | Winsock TCP/IP |
| dbmsspxn | SPX/IPX |
| dbmsvinn | Banyan Vines |
| dbmsrpcn | Multi-Protocol (Windows RPC) |
