日期:2014-05-18  浏览次数:20761 次

直接用Java(不用JSP)连接MySQL数据库的问题
我使用的是MySQL   4.1.10,下载的JDBC驱动程序是mysql-connector-java-3.1.7-bin.jar,使用jdk1.5.0_06。  

我把mysql-connector-java-3.1.7-bin.jar放到D:盘,在CLASSPATH里添加了这么一条:D:\mysql-connector-java-3.1.7-bin.jar;  
直接写了个Java类来连接MySQL,但是老是出现如下错误:  

java.sql.SQLException:   No   suitable   driver  
at   java.sql.DriverManager.getConnection(DriverManager.java:545)  
at   java.sql.DriverManager.getConnection(DriverManager.java:171)  
at   QueryAllMySQL.main(QueryAllMySQL.java:27)  
Exception   in   thread   "main "   java.lang.NullPointerException  
at   QueryAllMySQL.main(QueryAllMySQL.java:45)  

但是我查找网上的信息,大都使用JSP来完成连接MySQL数据库,于是我使用jakarta-tomcat-5.5.7,并且把mysql-connector-java-3.1.7-bin.jar放到\jakarta-tomcat-5.5.7\common\lib目录下,然后写了一个Servlet类,其中连接MySQL的语句和上面一样,并且成功地连接了数据库。  

那说明我的MySQL数据库、JDBC驱动都没问题,老是出现上面的问题就不知道哪错了,请大家指教!  

Java类源代码如下:  

import   java.sql.*;  

public   class   QueryAllMySQL  
{  
private   static   Connection   connection   =   null;  
private   static   Statement   statement   =   null;  

public   static   void   main(String[]   args)   throws   Exception  
{  
//   加载数据库驱动  
try  
{  
Class.forName( "com.mysql.jdbc.Driver ");  
}  
catch(ClassNotFoundException   ex)  
{  
ex.printStackTrace();  
}  

try  
{  
//   连接数据库  
connection   =   DriverManager.getConnection   (DATABASE_URL,DATABASE_USR,DATABASE_PASSWORD);  

//   查询表  
statement   =   connection.createStatement();  
ResultSet   resultSet   =   statement.executeQuery( "use   student;SELECT   *   FROM   studentInfo ");  

//   显示查询数据  
printInfo(resultSet);  
}  
catch(SQLException   ex)  
{  
ex.printStackTrace();  
}  

finally  
{  
try  
{  
connection.close();  
statement.close();  
}  
catch(SQLException   ex)  
{  
ex.printStackTrace();  
}  
}  
}  

//   查询数据显示方法  
private   static   void   printInfo(ResultSet   rs)  
{  
StringBuffer   results   =   new   StringBuffer();  

try  
{  
ResultSetMetaData   metaData   =   rs.getMetaData();  
int   numberOfColumns   =   metaData.getColumnCount();  

for(int   i=1;i <=numberOfColumns;i++)  
{  
results.append(metaData.getColumnName(i)   +   "\t ");  
}  
results.append( "\n ");  

while(rs.next())  
{  
for(int   i=1;i <=numberOfColumn