java错误(找不到合适的驱动程序)
public class ReportView extends JFrame { Connection con=null; void showReport() throws SQLException, ClassNotFoundException, JRException { con=DriverManager.getConnection("jdbc:postgresql://localhost:5432/Test"); JasperReport report=JasperCompileManager.compileReport("Testing.jrxml"); JasperPrint print=JasperFillManager.fillReport(report,null,con); JRViewer viewer=new JRViewer(print); viewer.setOpaque(true); viewer.setVisible(true); this.add(viewer); this.setSize(300, 200); this.setVisible(true); this.setDefaultCloseOperation(EXIT_ON_CLOSE); }
这是错误:
线程“main”java.sql.SQLException中的exception:没有为jdbc找到合适的驱动程序:postgresql:// localhost:5432 / Test at java.sql.DriverManager.getConnection(Unknown Source) at java.sql.DriverManager.getConnection(Unknown Source)
怎么了?
- 你需要在某个地方加载驱动程序。
Class.forName("org.postgresql.Driver");
- 您将需要程序的类路径中的postgresql驱动程序.jar文件。
您需要将postgreSQL JDBC驱动程序放在类路径上。
有关说明 ,请参阅官方文档 。
你有没有将Postgresql驱动程序添加到类路径中?
我不知道,但这对我来说非常合适。 我在本地运行Sun和PostgreSQL 8.1的JDK 1.6.0_21:
package persistence; import java.sql.*; import java.util.*; /** * util.DatabaseUtils * User: Michael * Date: Aug 17, 2010 * Time: 7:58:02 PM */ public class DatabaseUtils { private static final String DEFAULT_DRIVER = "org.postgresql.Driver"; private static final String DEFAULT_URL = "jdbc:postgresql://localhost:5432/party"; private static final String DEFAULT_USERNAME = "pgsuper"; private static final String DEFAULT_PASSWORD = "pgsuper"; /* private static final String DEFAULT_DRIVER = "com.mysql.jdbc.Driver"; private static final String DEFAULT_URL = "jdbc:mysql://localhost:3306/party"; private static final String DEFAULT_USERNAME = "party"; private static final String DEFAULT_PASSWORD = "party"; */ public static void main(String[] args) { long begTime = System.currentTimeMillis(); String driver = ((args.length > 0) ? args[0] : DEFAULT_DRIVER); String url = ((args.length > 1) ? args[1] : DEFAULT_URL); String username = ((args.length > 2) ? args[2] : DEFAULT_USERNAME); String password = ((args.length > 3) ? args[3] : DEFAULT_PASSWORD); Connection connection = null; try { connection = createConnection(driver, url, username, password); DatabaseMetaData meta = connection.getMetaData(); System.out.println(meta.getDatabaseProductName()); System.out.println(meta.getDatabaseProductVersion()); String sqlQuery = "SELECT PERSON_ID, FIRST_NAME, LAST_NAME FROM PERSON ORDER BY LAST_NAME"; System.out.println("before insert: " + query(connection, sqlQuery, Collections.EMPTY_LIST)); connection.setAutoCommit(false); String sqlUpdate = "INSERT INTO PERSON(FIRST_NAME, LAST_NAME) VALUES(?,?)"; List parameters = Arrays.asList( "Foo", "Bar" ); int numRowsUpdated = update(connection, sqlUpdate, parameters); connection.commit(); System.out.println("# rows inserted: " + numRowsUpdated); System.out.println("after insert: " + query(connection, sqlQuery, Collections.EMPTY_LIST)); } catch (Exception e) { rollback(connection); e.printStackTrace(); } finally { close(connection); long endTime = System.currentTimeMillis(); System.out.println("wall time: " + (endTime - begTime) + " ms"); } } public static Connection createConnection(String driver, String url, String username, String password) throws ClassNotFoundException, SQLException { Class.forName(driver); if ((username == null) || (password == null) || (username.trim().length() == 0) || (password.trim().length() == 0)) { return DriverManager.getConnection(url); } else { return DriverManager.getConnection(url, username, password); } } public static void close(Connection connection) { try { if (connection != null) { connection.close(); } } catch (SQLException e) { e.printStackTrace(); } } public static void close(Statement st) { try { if (st != null) { st.close(); } } catch (SQLException e) { e.printStackTrace(); } } public static void close(ResultSet rs) { try { if (rs != null) { rs.close(); } } catch (SQLException e) { e.printStackTrace(); } } public static void rollback(Connection connection) { try { if (connection != null) { connection.rollback(); } } catch (SQLException e) { e.printStackTrace(); } } public static List
这是结果:
PostgreSQL 8.1.3 before insert: [{first_name=Foo, person_id=55, last_name=Bar}, {first_name=Foo, person_id=52, last_name=Bar}, {first_name=Foo, person_id=53, last_name=Bar}, {first_name=Foo, person_id=54, last_name=Bar}, {first_name=Foo, person_id=56, last_name=Bar}, {first_name=SEAMUS, person_id=2, last_name=DUFFY}, {first_name=MICHAEL, person_id=1, last_name=DUFFY}] # rows inserted: 1 after insert: [{first_name=Foo, person_id=56, last_name=Bar}, {first_name=Foo, person_id=52, last_name=Bar}, {first_name=Foo, person_id=53, last_name=Bar}, {first_name=Foo, person_id=54, last_name=Bar}, {first_name=Foo, person_id=55, last_name=Bar}, {first_name=Foo, person_id=57, last_name=Bar}, {first_name=SEAMUS, person_id=2, last_name=DUFFY}, {first_name=MICHAEL, person_id=1, last_name=DUFFY}] wall time: 344 ms