2008年1月4日 星期五

使用JDBC時出現No suitable driver的問題

昨天嘗試使用JDBC來連結SQL Server 2005的資料庫,從Microsoft的網站上面download JDBC 1.1 for SQL Server,看這書上的說明,開始準備連結資料庫:

String ConnectionURL = "jdbc:microsoft:sqlserver://localhost:1433;databaseName=Test;user=sa;password=******";
Class.forName("com.microsoft.sqlserver.jdbc.SQLServerDriver");
Connection conn = DriverManager.getConnection(ConnectionURL );

我將我的ConnectionURL依照書上的範例程式輸入,可是確出現"No suitable driver"的Error,到底怎麼回事?

打開JDBC 1.1中附的範本程式碼,如下:


// Create a variable for the connection string. String connectionUrl = "jdbc:sqlserver://localhost:1433;" + "databaseName=AdventureWorks;user=UserName;password=*****"; // Declare the JDBC objects. Connection con = null; Statement stmt = null; ResultSet rs = null; try { // Establish the connection. Class.forName("com.microsoft.sqlserver.jdbc.SQLServerDriver"); con = DriverManager.getConnection(connectionUrl); // Create and execute an SQL statement that returns some data. String SQL = "SELECT TOP 10 * FROM Person.Contact"; stmt = con.createStatement(); rs = stmt.executeQuery(SQL); // Iterate through the data in the result set and display it. while (rs.next()) { System.out.println(rs.getString(4) + " " + rs.getString(6)); }似乎發現問題了,再試著從資料源下手,取出資料源中的URL,如下:

SQLServerDataSource ds = new SQLServerDataSource();
String ConnString = ds.getURL();

透過輸出來看看ConnString的內容,發現竟然是"jdbc:sqlserver://",迷題揭曉了,書上寫錯了,那個應該是舊版的URL的方式,還是使用資料源的方式來取得與設定比較安全,於是修改程式如下:

SQLServerDataSource ds = new SQLServerDataSource();
ds.setServerName(host);
ds.setPortNumber(Integer.parseInt(port));
ds.setDatabaseName(database);
ds.setUser(user);
ds.setPassword(password);
conn = ds.getConnection();

沒有留言: