Data source name: Difference between revisions

Content deleted Content added
No edit summary
Line 8:
* the ___location of the data source
* the name of a [[database driver]] which can access the data source
* a [[User identifier | user ID]] for data access (if required)
* a user password for data access (if required)
 
Line 18:
Two kinds of DSN exist:
 
* '''Machine DSNs''' - stored in collective configuration files (e.g., /etc/odbc.ini, ~/.odbc.ini) and/or system resources (e.g., Windows Registry HKLM\Software\ODBC\odbc.ini)
* '''File DSNs''' - stored in the filesystem with one DSN per file
 
These are further broken down into
* '''System DSNs''' - accessible by any and all processes and users of the system, stored in a centralized ___location (e.g., /etc/odbc.ini, /etc/odbc_file_dsns/<filename>)
* '''User DSNs''' - accessible only by the user who created the DSN, stored in a user-specific ___location (e.g., ~/.odbc.ini, ~/odbc_file_dsns/<filename>)
 
== Example of use ==
Software (e.g., Crystal Reports, Microsoft Excel, PHP, Perl, Python, Ruby) users can submit CRUD (Create, Read, Update, Delete) queries to a data source by establishing a connection to the DSN.
 
ASP ([[VBScript]]) code to open a DSN connection might look like the following:
 
<sourcesyntaxhighlight lang="vb">
Dim DatabaseObject1
Set DatabaseObject1 = Server.CreateObject("ADODB.Connection")
DatabaseObject1.Open("DSN=example;")
</syntaxhighlight>
</source>
 
In [[PHP]] using the PEAR::DB package to open a connection without an external DSN (a "DSN-less connection", i.e., using a Connection String), the code might resemble the following
 
<sourcesyntaxhighlight lang="php">
require_once("DB.php");
//$dsn = "<driver>://<username>:<password>@<host>:<port>/<database>";
$dsn = "mysql://john:pass@localhost:3306/my_db";
$db = DB::connect($dsn);
</sourcesyntaxhighlight>{{Clarifyme|How is this an example of DSN use|date=June 2013}}
 
PHP with PDO.
<sourcesyntaxhighlight lang="php">
$dsn = "mysql:host=localhost;dbname=example";
$dbh = new PDO($dsn, $username, $password);
</syntaxhighlight>
</source>
 
In [[Perl]], using the [[Perl_DBIPerl DBI]] module, each driver has its own syntax for the DSN attributes. The only requirement that DBI makes is that all the information, except for username and password is supplied in a single string argument.
 
<sourcesyntaxhighlight lang="perl">
my $dsn = "DBI:Pg:database=finance;host=db.example.com;port=$port";
$dsn = "DBI:mysql:database=$database;host=$hostname;port=$port";
Line 60:
 
my $dbh = DBI->connect($dsn,'username','password');
</syntaxhighlight>
</source>
 
== See also ==
* [[Datasource]]
* [[ADO.NET]]
Line 72:
 
[[Category:Data access technologies| ]]
 
 
{{database-stub}}