47 lines
		
	
	
		
			1.8 KiB
		
	
	
	
		
			Markdown
		
	
	
	
	
	
			
		
		
	
	
			47 lines
		
	
	
		
			1.8 KiB
		
	
	
	
		
			Markdown
		
	
	
	
	
	
| ---
 | |
| layout: default_docs
 | |
| title: Loading the Driver
 | |
| header: Chapter 3. Initializing the Driver
 | |
| resource: media
 | |
| previoustitle: Chapter 3. Initializing the Driver
 | |
| previous: use.html
 | |
| nexttitle: Connecting to the Database
 | |
| next: connect.html
 | |
| ---
 | |
| 		
 | |
| Before you can connect to a database, you need to load the driver. There are two
 | |
| methods available, and it depends on your code which is the best one to use.
 | |
| 
 | |
| In the first method, your code implicitly loads the driver using the `Class.forName()`
 | |
| method. For PostgreSQL™, you would use:
 | |
| 
 | |
| Class.forName("org.postgresql.Driver");
 | |
| 
 | |
| This will load the driver, and while loading, the driver will automatically
 | |
| register itself with JDBC.
 | |
| 
 | |
| ### Note
 | |
| 
 | |
| The `forName()` method can throw a `ClassNotFoundException` if the driver is not
 | |
| available.
 | |
| 
 | |
| This is the most common method to use, but restricts your code to use just PostgreSQL™.
 | |
| If your code may access another database system in the future, and you do not
 | |
| use any PostgreSQL™-specific extensions, then the second method is advisable.
 | |
| 
 | |
| The second method passes the driver as a parameter to the JVM as it starts, using
 | |
| the `-D` argument. Example:
 | |
| 
 | |
| `java -Djdbc.drivers=org.postgresql.Driver example.ImageViewer`
 | |
| 
 | |
| In this example, the JVM will attempt to load the driver as part of its initialization.
 | |
| Once done, the ImageViewer is started.
 | |
| 
 | |
| Now, this method is the better one to use because it allows your code to be used
 | |
| with other database packages without recompiling the code. The only thing that
 | |
| would also change is the connection URL, which is covered next.
 | |
| 
 | |
| One last thing: When your code then tries to open a `Connection`, and you get a
 | |
| No driver available `SQLException` being thrown, this is probably caused by the
 | |
| driver not being in the class path, or the value in the parameter not being
 | |
| correct. | 
