当前位置:编程学习 > JAVA >>

dao连接不到数据库

classname = "com.microsoft.sqlserver.jdbc.SQLServerDriver";
url = "jdbc:sqlserver://localhost:1433;DatabaseName=HR";
try {
Class.forName(classname).newInstance();
System.out.println("加载数据库驱动成功!");
} catch (Exception e) {
e.printStackTrace();
System.out.println("加载数据库驱动失败!");



另外在myeclipse中组装sql语句时,表名是user还是数据库里的名字dbo.user呢? jar包添加了,在浏览器中提示是:
java.lang.NullPointerException
service.LoginService.login(LoginService.java:22)
action.LoginServlet.doPost(LoginServlet.java:82)
javax.servlet.http.HttpServlet.service(HttpServlet.java:637)
javax.servlet.http.HttpServlet.service(HttpServlet.java:717)

在LoginService中的语句就是调用dao.query();应该不会出错,,到底是为什么连接不到数据库呢 
有这方面的成手么,,可以的话留下个联系方式QQ或者邮箱什么的 真心想搞懂这玩意 --------------------编程问答-------------------- 表名是user,dbo.user不是表名,只是sqlserver那么显示的
报的是空指针啊,你设下断点,看dao是不是空的,是的话就是没连到数据库,话说这块我也记不住,每次都是去复制以前的,⊙﹏⊙b汗 --------------------编程问答--------------------
引用 1 楼  的回复:
表名是user,dbo.user不是表名,只是sqlserver那么显示的
报的是空指针啊,你设下断点,看dao是不是空的,是的话就是没连到数据库,话说这块我也记不住,每次都是去复制以前的,⊙﹏⊙b汗
 
我就不了解为什么啊,,愁呀 ,,还有如果sqlserver是windows身份验证的话,,是不是在conn = DriverManager.getConnection(url); 里面就不用写名和密码了。。其他的都没有问题 就是连不到数据库 郁闷了 --------------------编程问答-------------------- 应该是class没加载上newInstance()时出错了 --------------------编程问答--------------------
引用 3 楼  的回复:
应该是class没加载上newInstance()时出错了

我试了把newInstance去掉。。也不好使。。还有要是这个出错的怎么解决咯~? --------------------编程问答-------------------- user在sqlserver里是关键字啊  应该写[user]??? --------------------编程问答--------------------
引用 5 楼  的回复:
user在sqlserver里是关键字啊  应该写[user]???
 我写的是users。。。。就是那一个形式      --------------------编程问答--------------------
引用 1 楼  的回复:
表名是user,dbo.user不是表名,只是sqlserver那么显示的
报的是空指针啊,你设下断点,看dao是不是空的,是的话就是没连到数据库,话说这块我也记不住,每次都是去复制以前的,⊙﹏⊙b汗

java.lang.ClassNotFoundException: com.microsoft.sqlserver.jdbc.SQLServerDriver
at org.apache.catalina.loader.WebappClassLoader.loadClass(WebappClassLoader.java:1484)
at org.apache.catalina.loader.WebappClassLoader.loadClass(WebappClassLoader.java:1329)
at java.lang.ClassLoader.loadClassInternal(ClassLoader.java:319)
at java.lang.Class.forName0(Native Method)
at java.lang.Class.forName(Class.java:169)
at DAO.dao.<init>(dao.java:23)   //Class.forName(classname).newInstance();
看起来真的是dao木有实例。。怎么解决呢 ·? --------------------编程问答-------------------- 连接数据库的不就那几行代码吗,调试一下,看到底哪里最先为空啊,知道哪行代码出差了,改还不容易啊
conn = DriverManager.getConnection(url); 
一般上面的这句为空的可能性比较大 --------------------编程问答--------------------
引用 7 楼  的回复:
引用 1 楼  的回复:

表名是user,dbo.user不是表名,只是sqlserver那么显示的
报的是空指针啊,你设下断点,看dao是不是空的,是的话就是没连到数据库,话说这块我也记不住,每次都是去复制以前的,⊙﹏⊙b汗

java.lang.ClassNotFoundException: com.microsoft.sqlserver.jdbc.SQLServerDriver……

java.lang.ClassNotFoundException写的很清楚啊  com.microsoft.sqlserver.jdbc.SQLServerDriver这个没有找到检查一下你的驱动包 是否是sqlserver的 --------------------编程问答-------------------- 估计就是驱动问题,类无法加载嘛。。要不就是你的URL写错了呗,或者 CLASSNAME写错了呗,都试试,还有你的那个空指针异常,开DeBug调试一下就知道哪儿报的了 --------------------编程问答--------------------
引用 10 楼  的回复:
估计就是驱动问题,类无法加载嘛。。要不就是你的URL写错了呗,或者 CLASSNAME写错了呗,都试试,还有你的那个空指针异常,开DeBug调试一下就知道哪儿报的了

恩 问题已经解决啦~~嘿嘿 谢谢啦亲 --------------------编程问答-------------------- Class.forName(classname).newInstance();
加载驱动就加载驱动呗,何必来个实例呢,静态代码块中有过了都。 --------------------编程问答--------------------
引用 12 楼  的回复:
Class.forName(classname).newInstance();
加载驱动就加载驱动呗,何必来个实例呢,静态代码块中有过了都。
 恩。。我开始也没有写 后来查的菜改过 最后成功的时候还是没有写的~ --------------------编程问答-------------------- package com.yxq.toolsbean;

import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement;

public class DB {
    private final String url = "jdbc:microsoft:sqlserver://localhost:1433;DatabaseName=db_Blog";
    private final String userName = "sa";
    private final String password = "123456";
    private Connection con = null;
    private Statement stm=null;
    
    /* 通过构造方法加载数据库驱动 */
    public DB(){
     try {
     Class.forName("com.microsoft.jdbc.sqlserver.SQLServerDriver").newInstance(); 
     } catch (Exception e) {
     e.printStackTrace();
     System.out.println("加载数据库驱动失败!");
     }    
    }
    /* 创建数据库连接 */
    public void createCon() {
        try {
            con = DriverManager.getConnection(url, userName, password);
        } catch (Exception e) {
            e.printStackTrace();
            System.out.println("获取数据库连接失败!");
        }
    }
    /* 获取Statement对象 */
    public void getStm(){
    createCon();
     try {
stm=con.createStatement();
} catch (SQLException e) {
e.printStackTrace();
System.out.println("创建Statement对象失败!");
}
    }
    /** 
     * @功能 对数据库的增加、修改和删除的操作
     * @参数 sql为要执行的SQL语句
     * @返回值 boolean型值 
     */
    public boolean executeUpdate(String sql) {
     System.out.println(sql);
        boolean mark=false;
     try {
     getStm();
            int iCount = stm.executeUpdate(sql);
            if(iCount>0)            
             mark=true;            
            else
             mark=false;
        } catch (Exception e) {
            e.printStackTrace();
    mark=false;
        }
        return mark;
    }
    /* 查询数据库 */
    public ResultSet executeQuery(String sql) {
        ResultSet rs=null;
        try {
            getStm();
            try {
                rs = stm.executeQuery(sql);
            } catch (Exception e) {
             e.printStackTrace();
                System.out.println("查询数据库失败!");
            }
        } catch (Exception e) {
            e.printStackTrace();          
        }
        return rs;
    }
    /* 关闭数据库的操作 */
    public void closed() {
     if(stm!=null)
try {
stm.close();
} catch (SQLException e) {
e.printStackTrace();
System.out.println("关闭stm对象失败!");
}
     if(con!=null)
try {
con.close();
} catch (SQLException e) {
e.printStackTrace();
System.out.println("关闭con对象失败!");
}
    }
}




这是我以前常用的,你试试!
补充:Java ,  Web 开发
CopyRight © 2022 站长资源库 编程知识问答 zzzyk.com All Rights Reserved
部分文章来自网络,