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汗 --------------------编程问答--------------------
我就不了解为什么啊,,愁呀 ,,还有如果sqlserver是windows身份验证的话,,是不是在conn = DriverManager.getConnection(url); 里面就不用写名和密码了。。其他的都没有问题 就是连不到数据库 郁闷了 --------------------编程问答-------------------- 应该是class没加载上newInstance()时出错了 --------------------编程问答--------------------
我试了把newInstance去掉。。也不好使。。还有要是这个出错的怎么解决咯~? --------------------编程问答-------------------- user在sqlserver里是关键字啊 应该写[user]??? --------------------编程问答-------------------- 我写的是users。。。。就是那一个形式 --------------------编程问答--------------------
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);
一般上面的这句为空的可能性比较大 --------------------编程问答--------------------
java.lang.ClassNotFoundException写的很清楚啊 com.microsoft.sqlserver.jdbc.SQLServerDriver这个没有找到检查一下你的驱动包 是否是sqlserver的 --------------------编程问答-------------------- 估计就是驱动问题,类无法加载嘛。。要不就是你的URL写错了呗,或者 CLASSNAME写错了呗,都试试,还有你的那个空指针异常,开DeBug调试一下就知道哪儿报的了 --------------------编程问答--------------------
恩 问题已经解决啦~~嘿嘿 谢谢啦亲 --------------------编程问答-------------------- 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 开发