丢丢丢嘿嘿 2017-06-09 02:30 采纳率: 100%
浏览 1180
已采纳

链接数据库空指针异常 和 url地址异常求大牛教

代码
package util;

import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.ResultSetMetaData;
import java.sql.SQLException;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;

public class DBUtil {
private String driver;
private String url;
private String username;
private String password;
private Connection con;
private PreparedStatement pstmt;
private ResultSet rs;
public void setDriver(String driver){
this.driver=driver;
}
public void setUrl(String url){
this.url=url;
}
public void setUsername(String username){
this.username=username;
}
public void setPassword(String password){
this.password=password;
}
public DBUtil(){
driver="com.microsoft.jdbc.sqlserver.SQLServerDriver";
url="jdbc:sqlserver://127.0.0.1:1433;databaseName=yyghxt";
username="sa";
password="123456";

}
private Connection getConnection() throws SQLException{
try{
Class.forName(driver);
con=DriverManager.getConnection(url,username,password);

}catch(ClassNotFoundException e){
    e.printStackTrace();
}

return con;

}
private PreparedStatement getPrepareStatement(String sql){
try{
pstmt=getConnection().prepareStatement(sql);

}catch(SQLException e){
    e.printStackTrace();
}
return pstmt;

}

private void setParams(String sql,String[]params){
pstmt=this.getPrepareStatement(sql);

for(int i=0;i<params.length;i++)
    try{
        pstmt.setString(i+1, params[i]);

    }catch(SQLException e){
        e.printStackTrace();
    }

}
public List getList(String sql,String[]params){
List list=new ArrayList();
try{
this.setParams(sql, params);
ResultSet rs=pstmt.executeQuery();
ResultSetMetaData rsmd= rs.getMetaData();
while(rs.next()){
Map m=new HashMap();
for(int i=1;i<=rsmd.getColumnCount();i++){
String colName=rsmd.getColumnName(i);
m.put(colName,rs.getString(colName));
}
list.add(m);
}
}catch(SQLException e){
e.printStackTrace();
}finally{
close();
}
return list;
}
public Map getMap(String sql,String[]params){
List list=getList(sql,params);
if(list.isEmpty())
return null;
else
return(Map)list.get(0);
}
public int update(String sql,String[]params){
int recNo=0;
try{
setParams(sql,params);
recNo=pstmt.executeUpdate();

}catch(Exception e){
    e.printStackTrace();
}finally{
    close();
}
return recNo;

}
private void close(){
try{
if(rs!=null)
rs.close();
if(pstmt!=null)
pstmt.close();
if(con!=null)
con.close();
}catch(SQLException e){

}

}
}
报错信息
java.sql.SQLException: [Microsoft][SQLServer 2000 Driver for JDBC]Unable to connect. Invalid URL.
at com.microsoft.jdbc.base.BaseExceptions.createException(Unknown Source)
at com.microsoft.jdbc.base.BaseExceptions.getException(Unknown Source)
at com.microsoft.jdbc.base.BaseDriver.connect(Unknown Source)
at java.sql.DriverManager.getConnection(Unknown Source)
at java.sql.DriverManager.getConnection(Unknown Source)
at util.DBUtil.getConnection(DBUtil.java:45)
at util.DBUtil.getPrepareStatement(DBUtil.java:56)
at util.DBUtil.setParams(DBUtil.java:66)
at util.DBUtil.getList(DBUtil.java:80)
at util.DBUtil.getMap(DBUtil.java:99)
at beans.UserInfo.checkName(UserInfo.java:52)
at servlet.userInfoController.doPost(userInfoController.java:34)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:661)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:742)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:231)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:166)
at org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:52)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:193)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:166)
at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:198)
at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:96)
at org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:478)
at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:140)
at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:80)
at org.apache.catalina.valves.AbstractAccessLogValve.invoke(AbstractAccessLogValve.java:624)
at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:87)
at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:342)
at org.apache.coyote.http11.Http11Processor.service(Http11Processor.java:799)
at org.apache.coyote.AbstractProcessorLight.process(AbstractProcessorLight.java:66)
at org.apache.coyote.AbstractProtocol$ConnectionHandler.process(AbstractProtocol.java:861)
at org.apache.tomcat.util.net.NioEndpoint$SocketProcessor.doRun(NioEndpoint.java:1455)
at org.apache.tomcat.util.net.SocketProcessorBase.run(SocketProcessorBase.java:49)
at java.util.concurrent.ThreadPoolExecutor.runWorker(Unknown Source)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(Unknown Source)
at org.apache.tomcat.util.threads.TaskThread$WrappingRunnable.run(TaskThread.java:61)
at java.lang.Thread.run(Unknown Source)
六月 09, 2017 10:29:44 上午 org.apache.catalina.core.StandardWrapperValve invoke
严重: Servlet.service() for servlet [userInfoController] in context with path [/yyghxt] threw exception
java.lang.NullPointerException
at util.DBUtil.setParams(DBUtil.java:70)
at util.DBUtil.getList(DBUtil.java:80)
at util.DBUtil.getMap(DBUtil.java:99)
at beans.UserInfo.checkName(UserInfo.java:52)
at servlet.userInfoController.doPost(userInfoController.java:34)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:661)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:742)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:231)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:166)
at org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:52)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:193)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:166)
at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:198)
at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:96)
at org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:478)
at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:140)
at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:80)
at org.apache.catalina.valves.AbstractAccessLogValve.invoke(AbstractAccessLogValve.java:624)
at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:87)
at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:342)
at org.apache.coyote.http11.Http11Processor.service(Http11Processor.java:799)
at org.apache.coyote.AbstractProcessorLight.process(AbstractProcessorLight.java:66)
at org.apache.coyote.AbstractProtocol$ConnectionHandler.process(AbstractProtocol.java:861)
at org.apache.tomcat.util.net.NioEndpoint$SocketProcessor.doRun(NioEndpoint.java:1455)
at org.apache.tomcat.util.net.SocketProcessorBase.run(SocketProcessorBase.java:49)
at java.util.concurrent.ThreadPoolExecutor.runWorker(Unknown Source)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(Unknown Source)
at org.apache.tomcat.util.threads.TaskThread$WrappingRunnable.run(TaskThread.java:61)
at java.lang.Thread.run(Unknown Source)

  • 写回答

4条回答 默认 最新

  • sinat_38913556 2017-06-09 02:50
    关注

    driver="com.microsoft.jdbc.sqlserver.SQLServerDriver";
    这个语句跟版本有关系有的jdbc在前面,有的就是sqlserver在前面。
    com.microsoft.jdbc.sqlserver.SQLServerDriver
    com.microsoft.sqlserver.jdbc.SQLServerDriver

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(3条)

报告相同问题?

悬赏问题

  • ¥20 为什么我写出来的绘图程序是这样的,有没有lao哥改一下
  • ¥15 js,页面2返回页面1时定位进入的设备
  • ¥200 关于#c++#的问题,请各位专家解答!网站的邀请码
  • ¥50 导入文件到网吧的电脑并且在重启之后不会被恢复
  • ¥15 (希望可以解决问题)ma和mb文件无法正常打开,打开后是空白,但是有正常内存占用,但可以在打开Maya应用程序后打开场景ma和mb格式。
  • ¥15 绘制多分类任务的roc曲线时只画出了一类的roc,其它的auc显示为nan
  • ¥20 ML307A在使用AT命令连接EMQX平台的MQTT时被拒绝
  • ¥20 腾讯企业邮箱邮件可以恢复么
  • ¥15 有人知道怎么将自己的迁移策略布到edgecloudsim上使用吗?
  • ¥15 错误 LNK2001 无法解析的外部符号