質問: ### 前提・実現したいこと ただ今、「スッキリわかるサーブレット&JSP入門」という本で勉強しております。 この本の中で、JAVAを使ってデータベースを操作する項目があるのですが、 「java.sql.SQLException: No suitable driver found for jdbc:h2:file:C:/data/example」 というエラーが出て実行できません。 ネットで調べたところ、クラスパスに問題があるようです。 実行>実行構成>クラスパス のところにJARファイルを追加していますし、またファイルのWEB-INF/libの箇所にきちんとJARファイルを入れております。 またデータベースはH2Consoleを使ってC:/data/exampleの箇所に作成済みです。 なにがいけないのでしょうか。 わかる方いらっしゃいましたら、ご教授よろしくお願いいたします。 ![![イメージ説明](https://teratail.storage.googleapis.com/uploads/contributed_images/3193c852f1bfe64ce5bab5404f574dec.png)](998074cc794afc100e920e17eb9efb39.png) ![イメージ説明](https://teratail.storage.googleapis.com/uploads/contributed_images/4194cf5255768a99e3d207ec0d9cc519.png) ### 該当のソースコード package main; import java.sql.Connection; import java.sql.DriverManager; import java.sql.PreparedStatement; import java.sql.ResultSet; import java.sql.SQLException; public class SelectEmployeeSample { public static void main(String[] args){ Connection conn=null; try{ Class.forName("org.h2.Driver"); conn=DriverManager.getConnection(" jdbc:h2:file:C:/data/example","sa",""); String sql="SELECT ID,NAME,AGE FROM EMPLOYEE"; PreparedStatement pStmt=conn.prepareStatement(sql); ResultSet rs=pStmt.executeQuery(); while(rs.next()){ String id=rs.getString("ID"); String name=rs.getString("NAME"); int age=rs.getInt("AGE"); System.out.println("ID:"+id); System.out.println("NAME:"+name); System.out.println("AGE:"+age+"\n"); } }catch(SQLException e){ e.printStackTrace(); } catch(ClassNotFoundException e){ e.printStackTrace(); } finally{ if(conn!=null){ try{ conn.close(); } catch(SQLException e){ e.printStackTrace(); } } } } } ### 補足情報(言語/FW/ツール等のバージョンなど) Eclispeを使用しております。バージョンはVersion: Mars.2 Release (4.5.2) です。
回答: 提示のコードは実際に動かしているものそのままですか? であれば、JDBC接続文字列の先頭に余計なスペースが入っていますよ。 「No suitable driver found」というメッセージはJDBCドライバーが見つからないだけでなく、接続文字列が誤っている場合にも表示されます。