【问题标题】:javax.servlet.jsp.JspException: Unable to get connection, DataSource invalid: "java.sql.SQLException: No suitable driver foundjavax.servlet.jsp.JspException:无法获得连接,数据源无效:“java.sql.SQLException:找不到合适的驱动程序
【发布时间】:2013-12-05 16:24:32
【问题描述】:

在 JSP 文件中定义:

    <sql:setDataSource      
     driver="com.microsoft.sqlserver.jdbc.SQLServerDriver"
     url="jdbc:microsoft.sqlserver://localhost:1433;databaseName=GP"         
     user="sa" 
     password="sa123"
     var="dSource"/>   

    <sql:query dataSource="dSource" var="result">
         SELECT * FROM GP.FE_ENROLL_DATA 
    </sql:query>

堆栈跟踪:

javax.servlet.jsp.JspException: Unable to get connection, DataSource 
invalid: "java.sql.SQLException: No suitable driver found for dSource" at

org.apache.taglibs.standard.tag.common.sql
              .QueryTagSupport.getConnection( QueryTagSupport.java:276) at

org.apache.taglibs.standard.tag.common
                    .sql.QueryTagSupport.doStartTag(QueryTagSupport.java:159) at
org.apache.taglibs.standard.tag.el.sql.QueryTag.doStartTag(QueryTag.java:85) at
org.apache.jsp.enrollmentRecord_jsp
                ._jspx_meth_sql_005fquery_005f0(enrollmentRecord_jsp.java:477) at
org.apache.jsp.enrollmentRecord_jsp._jspService(enrollmentRecord_jsp.java:105) at
org.apache.jasper.runtime.HttpJspBase.service(HttpJspBase.java:70) at
javax.servlet.http.HttpServlet.service(HttpServlet.java:728) at
org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:432) at
org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:390) at
org.apache.jasper.servlet.JspServlet.service(JspServlet.java:334) at
javax.servlet.http.HttpServlet.service(HttpServlet.java:728) at
org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:305) at
org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:210) at
org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:222) at
org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:123) at
org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:502) at
org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:171) at
org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:100) at
org.apache.catalina.valves.AccessLogValve.invoke(AccessLogValve.java:953) at
org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:118) at
org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:408) at
org.apache.coyote.http11.AbstractHttp11Processor.process(AbstractHttp11Processor.java:1041) at
org.apache.coyote.AbstractProtocol$AbstractConnectionHandler.process(AbstractProtocol.java:603) at
org.apache.tomcat.util.net.JIoEndpoint$SocketProcessor.run(JIoEndpoint.java:310) at
java.util.concurrent.ThreadPoolExecutor$Worker.runTask(Unknown Source) at
java.util.concurrent.ThreadPoolExecutor$Worker.run(Unknown Source) at
java.lang.Thread.run(Unknown Source)

【问题讨论】:

  • 你把 sqldriver.jar 放到类路径了吗?
  • 是的。我在 WebContnt\WEB-INF\lib 中有 sqljdbc4.jar

标签: java sql sql-server jsp servlets


【解决方案1】:

您的连接网址是

url="jdbc:microsoft.sqlserver://localhost:1433;databaseName=GP"         

据我所知,您的网址should be either

url="jdbc:microsoft:sqlserver://localhost:1433;databaseName=GP"         

对于 SQL Server 2000。注意 : 而不是 .。它可以交替具有形式

jdbc:sqlserver://[serverName[\instanceName][:portNumber]][;property=value[;property=value]] 

for SQL Server 2012.

【讨论】:

  • 我在定义
  • @OOP_LADY 您的 DataSource 名为 dSource 是根据您在 sql:setDataSource 中指定的 URL 构建的。您正在注册的驱动程序没有映射到您想要的 URL,这就是为什么它显示 no suitable driver
  • 我试过 url="jdbc:sqlserver://sqlserver\sqlexpress://localhost:1433;databaseName=GP" ----------------- -------------------------------------------------- ------------------ 无法获取连接,DataSource 无效:“java.sql.SQLException:找不到适合 dSource 的驱动程序”
  • @oop 你必须为你使用的数据库找出合适的 URL。
  • 连接 con = null;字符串 url = "jdbc:jtds:sqlserver://localhost:1433/";字符串 db = "GP";字符串驱动程序=“net.sourceforge.jtds.jdbc.Driver”;字符串用户名 =“sa”;字符串密码="sa123";整数总和 = 0;声明 st;尝试{ Class.forName(driver).newInstance(); con = DriverManager.getConnection(url+db,用户名,密码);字符串查询 = "SELECT * from FE_ENROLL_DATA"; st = con.createStatement();结果集 rs = st.executeQuery(query); while(rs.next()){System.out.println(rs.getString(1));}} 捕获(异常 e)
【解决方案2】:

您的连接网址是:

url="jdbc:microsoft.sqlserver://localhost:1433;databaseName=GP"         

将其替换为以下网址:

url="jdbc:sqlserver://localhost:1433;databaseName=GP"     

或:

url="jdbc:microsoft:sqlserver://localhost:1433;databaseName=GP"       

【讨论】:

    猜你喜欢
    • 2023-03-19
    • 2020-11-29
    • 2023-03-18
    • 1970-01-01
    • 2017-07-27
    • 2013-07-04
    • 2016-01-01
    • 1970-01-01
    • 2016-11-28
    相关资源
    最近更新 更多