dao连接不到数据库

seraph2012 2012-05-16 06:27:43
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或者邮箱什么的 真心想搞懂这玩意
...全文
408 14 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
14 条回复
切换为时间正序
请发表友善的回复…
发表回复
seraph2012 2012-05-17
  • 打赏
  • 举报
回复
[Quote=引用 10 楼 的回复:]

估计就是驱动问题,类无法加载嘛。。要不就是你的URL写错了呗,或者 CLASSNAME写错了呗,都试试,还有你的那个空指针异常,开DeBug调试一下就知道哪儿报的了
[/Quote]
恩 问题已经解决啦~~嘿嘿 谢谢啦亲
liuxiaoyu0328 2012-05-17
  • 打赏
  • 举报
回复
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对象失败!");
}
}
}




这是我以前常用的,你试试!
gududixian 2012-05-17
  • 打赏
  • 举报
回复
估计就是驱动问题,类无法加载嘛。。要不就是你的URL写错了呗,或者 CLASSNAME写错了呗,都试试,还有你的那个空指针异常,开DeBug调试一下就知道哪儿报的了
dddsfdfgfdgfdg 2012-05-17
  • 打赏
  • 举报
回复
[Quote=引用 7 楼 的回复:]

引用 1 楼 的回复:

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

java.lang.ClassNotFoundException: com.microsoft.sqlserver.jdbc.SQLServerDriver……
[/Quote]
java.lang.ClassNotFoundException写的很清楚啊 com.microsoft.sqlserver.jdbc.SQLServerDriver这个没有找到检查一下你的驱动包 是否是sqlserver的
seraph2012 2012-05-17
  • 打赏
  • 举报
回复
[Quote=引用 12 楼 的回复:]

Class.forName(classname).newInstance();
加载驱动就加载驱动呗,何必来个实例呢,静态代码块中有过了都。
[/Quote] 恩。。我开始也没有写 后来查的菜改过 最后成功的时候还是没有写的~
zwnylsf 2012-05-17
  • 打赏
  • 举报
回复
Class.forName(classname).newInstance();
加载驱动就加载驱动呗,何必来个实例呢,静态代码块中有过了都。
tom_66 2012-05-16
  • 打赏
  • 举报
回复
连接数据库的不就那几行代码吗,调试一下,看到底哪里最先为空啊,知道哪行代码出差了,改还不容易啊
conn = DriverManager.getConnection(url);
一般上面的这句为空的可能性比较大
seraph2012 2012-05-16
  • 打赏
  • 举报
回复
[Quote=引用 1 楼 的回复:]

表名是user,dbo.user不是表名,只是sqlserver那么显示的
报的是空指针啊,你设下断点,看dao是不是空的,是的话就是没连到数据库,话说这块我也记不住,每次都是去复制以前的,⊙﹏⊙b汗
[/Quote]
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木有实例。。怎么解决呢 ·?
seraph2012 2012-05-16
  • 打赏
  • 举报
回复
[Quote=引用 5 楼 的回复:]

user在sqlserver里是关键字啊 应该写[user]???
[/Quote] 我写的是users。。。。就是那一个形式
zcjzcj111 2012-05-16
  • 打赏
  • 举报
回复
user在sqlserver里是关键字啊 应该写[user]???
seraph2012 2012-05-16
  • 打赏
  • 举报
回复
[Quote=引用 3 楼 的回复:]

应该是class没加载上newInstance()时出错了
[/Quote]
我试了把newInstance去掉。。也不好使。。还有要是这个出错的怎么解决咯~?
dddsfdfgfdgfdg 2012-05-16
  • 打赏
  • 举报
回复
应该是class没加载上newInstance()时出错了
seraph2012 2012-05-16
  • 打赏
  • 举报
回复
[Quote=引用 1 楼 的回复:]

表名是user,dbo.user不是表名,只是sqlserver那么显示的
报的是空指针啊,你设下断点,看dao是不是空的,是的话就是没连到数据库,话说这块我也记不住,每次都是去复制以前的,⊙﹏⊙b汗
[/Quote]
我就不了解为什么啊,,愁呀 ,,还有如果sqlserver是windows身份验证的话,,是不是在conn = DriverManager.getConnection(url); 里面就不用写名和密码了。。其他的都没有问题 就是连不到数据库 郁闷了
银河指北 2012-05-16
  • 打赏
  • 举报
回复
表名是user,dbo.user不是表名,只是sqlserver那么显示的
报的是空指针啊,你设下断点,看dao是不是空的,是的话就是没连到数据库,话说这块我也记不住,每次都是去复制以前的,⊙﹏⊙b汗

81,115

社区成员

发帖
与我相关
我的任务
社区描述
Java Web 开发
社区管理员
  • Web 开发社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧