JDBC-ODBC Connection - java

I am trying to connect MS Access with Java
Below is the error message
java.sql.SQLException: [Microsoft][ODBC Driver Manager] Data source name not found and no default driver specified
Code-
Class.forName("sun.jdbc.odbc.JdbcOdbcDriver");
String database = "jdbc:odbc:DRIVER={Microsoft Access Driver (*.mdb,*.accdb)};DSN=C:\\ST\\BillingTrackerDB.mdb";
Connection conn=DriverManager.getConnection(database, "", "");

DRIVER={Microsoft Access Driver (*.mdb,*.accdb)}
is an invalid ODBC driver name for Access; it is missing a space. The correct name is
DRIVER={Microsoft Access Driver (*.mdb, *.accdb)}

What version of Java are you using? In Java 8, I was unable to use the JDBC-ODBC bridge as it has been removed in JDK 8. What I have found to use in place of the JDBC-ODBC bridge for connecting to Access Databases is a pure Java solution called UCanAccess. It has done everything I needed, so far.

Related

Identifying the right URL to access a database in Java

I'm wondering which would be the right path/url to access the "aliens" database I have in my MySQL Workbench.
As you can see, the connection name is "new connection_1", the user is "root", and the port is "3306".
Then, I think the database name is aliens.
Until now I've tried this in my eclipse IDE for java:
Connection conn =
DriverManager.getConnection("jdbc:mysql://localhost:3306/aliens","root", "myDatabase");
System.out.println(conn);
The url is now "jdbc:mysql://localhost:3306/aliens","root", "myDatabase", but i receive the following exception:
Exception in thread "main" java.sql.SQLException: No suitable driver found for jdbc:mysql://localhost:3306/aliens
at java.sql/java.sql.DriverManager.getConnection(DriverManager.java:702)
at java.sql/java.sql.DriverManager.getConnection(DriverManager.java:228)
at EdoardoDatabase.main(MainClass.java:9)
Moreover, I would like to print the "connection", nothing else.
YOu'd need a MySql Connector Jar in your classpath and and a Driver set before initiating the connection.
Class.forName("com.mysql.jdbc.Driver");
You can use maven or download the Driver from Mysql page https://www.mysql.com/products/connector/
your Connection String doesn't look bad at all,
your problem is that Java doesn't know to which driver it should map the mysql driver...
if you are sure you have the Mysql jdbc driver on the ClassPath try
Class.forName("com.mysql.jdbc.Driver")
before you do you getConnection()
this calls the static{} block in the Driver registers the mysql driver for JDBC Connection lookups via the Factory

How to connect to Access .mdb database from 64-bit Java?

Hi I have the below code to connect to MS Access database on Windows 7 OS. I have changed the Data Source short cut to point to 64bit odbc then 32 bit. But still getting the error as
java.sql.SQLException: [Microsoft][ODBC Driver Manager] Data source name not found and no default driver specified
at sun.jdbc.odbc.JdbcOdbc.createSQLException(JdbcOdbc.java:6956)
at sun.jdbc.odbc.JdbcOdbc.standardError(JdbcOdbc.java:7113)
at sun.jdbc.odbc.JdbcOdbc.SQLDriverConnect(JdbcOdbc.java:3072)
at sun.jdbc.odbc.JdbcOdbcConnection.initialize(JdbcOdbcConnection.java:323)
at sun.jdbc.odbc.JdbcOdbcDriver.connect(JdbcOdbcDriver.java:174)
at java.sql.DriverManager.getConnection(DriverManager.java:579)
at java.sql.DriverManager.getConnection(DriverManager.java:221)
at TestDBConnection.main(TestDBConnection.java:21)
And my code is :
import java.sql.Connection;
import java.sql.DriverManager;
public class TestDBConnection {
public static void main(String[] args) {
// TODO Auto-generated method stub
try
{
System.out.println("filename");
Class.forName("sun.jdbc.odbc.JdbcOdbcDriver");
String database =
"jdbc:odbc:DRIVER={Microsoft Access Driver (*.mdb)};DBQ=C:\\Test\\Tests.mdb";
Connection conn = DriverManager.getConnection(database, "", "");
} catch(Exception ex) {
ex.printStackTrace();
}
}
}
How ever I have SQL Workbench tool through which I can connect to it but not through java code.
Please need help badly as I am struggling with this from past 3 hours searching on Google.
If your Java app is running in a 64-bit Java Virtual Machine (JVM) then DRIVER={Microsoft Access Driver (*.mdb)} is not going to work because there is no 64-bit version of the Jet database engine. You can...
Download and install the 64-bit version of the Microsoft Access Database Engine from here, and then use DRIVER={Microsoft Access Driver (*.mdb, *.accdb)} in your code.
... or ...
Run your Java app in a 32-bit JVM and continue to use the existing DRIVER= string. The related answer here might prove helpful if you choose this option.
... or ...
Use the UCanAccess JDBC driver for Access databases. It is a free, open-source, pure Java implementation so it works on both 32-bit and 64-bit systems, both Windows and non-Windows. It also works with Java 8 (which has dropped the JDBC-ODBC Bridge). For more details, see:
Manipulating an Access database from Java without ODBC
You can install the 64 ODBC drivers for Access available from Microsoft
http://www.microsoft.com/en-us/download/details.aspx?id=13255
1) you will have to configure System dsn (Driver Microsoft Access Driver(.mdb,.accdb))
2) link .mdb database in above configuration
and write below code.
Class.forName("sun.jdbc.odbc.JdbcOdbcDriver");
String database = "jdbc:odbc:systemdsnname";
Connection conn = DriverManager.getConnection(database, "", "");

How to find MS Access version number in java code

Is there a way to find version number of MS Access using java code. I am using jdbc-odbc bridge to connect with MS Access.
My usecase is to load mdb and accdb driver using JDBC
DriverManager.getConnection("jdbc:odbc:DRIVER={Microsoft Access Driver(.mdb,.accdb);}DBQ=filename")
If i use access 2003 or previous version, accdb driver will not be installed. So, while loading it throws exception. What is the way to resolve it.
Thanks in advance.
Regards,
Ganesan
From the java.sql.Connection you have getMetaData() to get the DatabaseMetaData. Several methods are available here (eg. getDatabaseMajorVersion()) to get version information, if the Driver implement this info.
To use the driver, it must be installed and registered. That you can check:
Enumeration<Driver> driverlist = DriverManager.getDrivers();
while(driverlist.hasMoreElements()) {
System.out.println(driverlist.nextElement().getClass());
}
https://www.tutorialspoint.com/how-to-get-the-list-of-all-drivers-registered-with-the-drivermanager-using-jdbc

Cannot connect to *.dbf file through JDBC drivers

i'm trying to connect to *.dbf (dBase III) file on my Java application, running on a Windows Server 2003 system.
I'm encountering this error and I cannot really understand the meaning (sources for OdbcJdbc.java seems to be unavailable):
[Microsoft][ODBC dBase driver] '(unknown)' is not a valid path error
This is the code I run on my application:
Class.forName("sun.jdbc.odbc.JdbcOdbcDriver");
String database = "jdbc:odbc:DRIVER={Microsoft dBase Driver(*.dbf)};DBQ=D:\\dbNeri\\CARISTAT;";
Connection conn = DriverManager.getConnection(database);
Statement s = conn.createStatement();
String selTable = "SELECT * FROM CARISTAT";
Does it exists a JDBC driver able to connect to dBase files or do I have to import external libraries to do the magic?
Thanks in advance for your help!
Ok guys, I finally found the answer to all my problems.
Without any need to configure a ODBC data source, the mistake in that code was I've targeted directly in my connection string the file name I would like to access.
(In the code up here, I removed "\CARISTAT").
Thus the application run easily and with no more JDBC driver error!!
Thanks anyway for your support!
Are you able to set up a DSN for that database (using ODBC Administrator)? Maybe you just don't have the dBase ODBC drivers installed on that server?
Dbase III is a 16-bit product and Windows Server is a 64-bit environment, which is what causes the compatibility issue.
You will have to use dBDOS to use your DOS based dBase to run our dBase applications on 64-bit platforms.
These sites have more information:
http://pmcgee#dbasellc.com
http://www.dbase.com

java.sql.SQLException: SQL Server version 8 is not supported by this driver. SQL State = 08S01, Error Code = 0

I have upgraded my application to Websphere 7.0from Websphere 6.1. I am using Microsoft SQL server jdbc driver 4.0 for this application. When i use sqljdbc4.jar i get the following error when connecting to database for authentication.
SystemError java.sql.SQLException: SQL Server version 8 is not supported by this driver. SQL State = 08S01, Error Code = 0
How to get rid of this.
Yes, as per the Microsoft SQL Server JDBC type 4.0 driver system requirements page:
The JDBC driver supports connections to a SQL Azure Database and SQL Server 2005 and later.
It sounds like you're running SQL Server 2000.
Either change driver (e.g. to jTDS) or upgrade to a more recent release of SQL Server (which would presumably be a rather bigger task...)
You not need change your driver, only your url connection.
Try this:
String url = "jdbc:sqlserver://"+SERVER+":"+PORT+";databaseName="+DATABASE+ ";user=" +USER+ ";password=" +PASS+ ";";
change for
String url ="jdbc:jtds:sqlserver://"+SERVER+":"+PORT+";databaseName="+DATABASE+ ";user=" +USER+ ";password=" +PASS+ ";";

Categories