import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.SQLException;
import com.mysql.jdbc.ResultSet;
import com.mysql.jdbc.Statement;
public class SelectDBDemo
{
public static void main(String[] args)
{
try{
//加载MySql数据库驱动
Class.forName("org.git.mm.mysql.Driver");
}catch(java.lang.ClassNotFoundException e){
System.out.print("Class not found exception occur.Message is:");
System.out.print(e.getMessage());
}
//连接数据库,并在数据库中查找是否存在用户名为username,对应密码为password的用户
try{
Statement stmt;
ResultSet rs;

//声明并初始化数据库连接地址
String url="jdbc:mysql://localhost:3306/test";

//声明并初始化数据库登陆用户名和密码
String user="root";
String passwordOfDB="root";
Connection conn=null;

//连接数据库并验证数据
try{
conn=DriverManager.getConnection(url, user, passwordOfDB);
}catch(Exception ex){
ex.printStackTrace();
}

//使用SQL语句操作数据库,在数据库表中查找是否有符合条件的记录
stmt=(Statement)conn.createStatement();
rs=(ResultSet)stmt.executeQuery("select * from userinfo");

//获取每条记录信息中的数据信息,并显示出来
while(rs.next()){
int id=rs.getInt(1);
String name=rs.getString(2);
String password=rs.getString(3);
int age=rs.getInt(4);
String gender=rs.getString(5);
String email=rs.getString(6);

//显示记录信息
System.out.println("id:"+id);
System.out.println("username:"+name);
System.out.println("password:"+password);
System.out.println("age:"+age);
System.out.println("gender:"+gender);
System.out.println("email:"+email+"\n");
}
rs.close();
stmt.close();
conn.close();
}catch(SQLException e){
System.out.println("SQL Exception occur.Message is:");
System.out.print(e.getMessage());
} }}
编译报错:at java.sql.DriverManager.getConnection(DriverManager.java:602)
at java.sql.DriverManager.getConnection(DriverManager.java:185)
at SelectDBDemo.main(SelectDBDemo.java:32)
Exception in thread "main" java.lang.NullPointerException
at SelectDBDemo.main(SelectDBDemo.java:38)

解决方案 »

  1.   

    Class.forName("com.mysql.jdbc.Driver")
      

  2.   

    你import的Connection Statement等几个类有问题,后面获取连接后强制类型装换也有问题,应用java.sql包下的类也不用转换,还有driver对5.0以上的驱动已经换了,你试试下面的程序再讨论import java.sql.Connection;
    import java.sql.DriverManager;
    import java.sql.SQLException;
    import java.sql.ResultSet;
    import java.sql.Statement;
    public class SelectDBDemo
    {
        public static void main(String[] args)
        {
            try{
    //加载MySql数据库驱动
    //            Class.forName("org.git.mm.mysql.Driver");
                Class.forName("com.mysql.jdbc.Driver");
            }catch(java.lang.ClassNotFoundException e){
                System.out.print("Class not found exception occur.Message is:");
                System.out.print(e.getMessage());
            }
    //连接数据库,并在数据库中查找是否存在用户名为username,对应密码为password的用户
            try{
                Statement stmt;
                ResultSet rs;//声明并初始化数据库连接地址
                String url="jdbc:mysql://localhost:3306/test";//声明并初始化数据库登陆用户名和密码
                String user="root";
                String passwordOfDB="root";
                Connection conn=null;//连接数据库并验证数据
                try{
                    conn=DriverManager.getConnection(url, user, passwordOfDB);
                }catch(Exception ex){
                    ex.printStackTrace();
                }//使用SQL语句操作数据库,在数据库表中查找是否有符合条件的记录
                stmt=conn.createStatement();
                rs=stmt.executeQuery("select * from userinfo");//获取每条记录信息中的数据信息,并显示出来
                while(rs.next()){
                    int id=rs.getInt(1);
                    String name=rs.getString(2);
                    String password=rs.getString(3);
                    int age=rs.getInt(4);
                    String gender=rs.getString(5);
                    String email=rs.getString(6);//显示记录信息
                    System.out.println("id:"+id);
                    System.out.println("username:"+name);
                    System.out.println("password:"+password);
                    System.out.println("age:"+age);
                    System.out.println("gender:"+gender);
                    System.out.println("email:"+email+"\n");
                }
                rs.close();
                stmt.close();
                conn.close();
            }catch(SQLException e){
                System.out.println("SQL Exception occur.Message is:");
                System.out.print(e.getMessage());
            }    }}
      

  3.   

    conn=DriverManager.getConnection(url, user, passwordOfDB); 
    从错误提示来看,这里返回了null,即conn==null
    所以
    stmt=(Statement)conn.createStatement();
    这里调用conn的方法的时候出现空指针异常
      

  4.   

    Exception in thread "main" java.lang.NullPointerException
    at SelectDBDemo.main(SelectDBDemo.java:38)
      

  5.   

    这句的含义是将名称为com.mysql.jdbc.Driver的类动态加入到JVM当中,后面的Connection实际上是调用Driver的方法实现的,你写的原来的驱动是mysql很早版本的驱动类的名称,估计是你加的mysql驱动里面没这个类了,所以没有驱动类在JVM当中,导致Connection无法获得
      

  6.   

    org.jgt.mm.mysql.driver 是比较老的不通用的写法。估计你的驱动jar已经不支持这种写法了。PS:为什么MySql会出现不同的driverClassName?
    是因为org.gjt.mm.mysql.Driver 许久以前是那个时代最好的MySql JDBC,但不是MySQL公司的,后来MySql将这个驱动收为官方的JDBC驱动,随之而来的是驱动的package改变,driverClassName也就跟着改变了。
      

  7.   

    加载mysql数据库的驱动,mysql驱动程序包要拷贝到工程目录中,使用上面的代码就不会有错了。
      

  8.   


    加载mysql的数据库驱动程序,需要将mysql的驱动jar文件拷贝到工程目录中。
      

  9.   


    加载mysql的数据库驱动程序,需要将mysql的驱动jar文件拷贝到工程目录中。