麻煩幫我看下這個報錯是哪里的問題
求大神解答。。。。。
報錯信息:
java.sql.SQLException: No suitable driver found for jdbc:oracle:thin:@172.17.11.60:1521:HDQTLS
at java.sql.DriverManager.getConnection(DriverManager.java:596)
at java.sql.DriverManager.getConnection(DriverManager.java:215)
at util.DBHelper.getConnection(DBHelper.java:34)
at dao.ItemsDAO.getAllItems(ItemsDAO.java:22)
at org.apache.jsp.index_jsp._jspService(index_jsp.java:173)
at org.apache.jasper.runtime.HttpJspBase.service(HttpJspBase.java:70)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:729)
at org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:438)
at org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:396)
at org.apache.jasper.servlet.JspServlet.service(JspServlet.java:340)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:729)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:292)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:207)
at org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:52)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:240)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:207)
at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:212)
at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:106)
at org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:502)
at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:141)
at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:79)
at org.apache.catalina.valves.AbstractAccessLogValve.invoke(AbstractAccessLogValve.java:616)
at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:88)
at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:522)
at org.apache.coyote.http11.AbstractHttp11Processor.process(AbstractHttp11Processor.java:1095)
at org.apache.coyote.AbstractProtocol$AbstractConnectionHandler.process(AbstractProtocol.java:672)
at org.apache.tomcat.util.net.AprEndpoint$SocketProcessor.doRun(AprEndpoint.java:2500)
at org.apache.tomcat.util.net.AprEndpoint$SocketProcessor.run(AprEndpoint.java:2489)
at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1145)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:615)
at org.apache.tomcat.util.threads.TaskThread$WrappingRunnable.run(TaskThread.java:61)
at java.lang.Thread.run(Thread.java:745)
代碼如下:
package util;
import java.sql.Connection;
import java.sql.DriverManager;
public class DBHelper {
? ?
private static final String driver = "oracle.jdbc.driver.OracleDriver"; //數(shù)據(jù)庫驅(qū)動
//連接數(shù)據(jù)庫的URL地址
private static final String url="jdbc:oracle:thin:@172.17.11.60:1521:HDQTLS";?
private static final String username="dbusrmkt";//數(shù)據(jù)庫的用戶名
private static final String password="futuremkt";//數(shù)據(jù)庫的密碼
? ??
private static Connection conn=null;
//靜態(tài)代碼塊負(fù)責(zé)加載驅(qū)動
static?
{
try
{
Class.forName(driver);
}
catch(Exception ex)
{
ex.printStackTrace();
}
}
//單例模式返回數(shù)據(jù)庫連接對象
public static Connection getConnection() throws Exception
{
if(conn==null)
{
conn = DriverManager.getConnection(url, username, password);
return conn;
}
return conn;
}
public static void main(String[] args) {
try
{
? Connection conn = DBHelper.getConnection();
? if(conn!=null)
? {
? System.out.println("數(shù)據(jù)庫連接正常!");
? }
? else
? {
? System.out.println("數(shù)據(jù)庫連接異常!");
? }
}
catch(Exception ex)
{
ex.printStackTrace();
}
}
}
PS:以上我run了一遍能返回---數(shù)據(jù)庫連接正常! ?這個提示
package dao;
import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.util.ArrayList;
import util.DBHelper;
import entity.Items;
//商品的業(yè)務(wù)邏輯類
public class ItemsDAO {
// 獲得所有的商品信息
public ArrayList<Items> getAllItems() {
Connection conn = null;
PreparedStatement stmt = null;
ResultSet rs = null;
ArrayList<Items> list = new ArrayList<Items>(); // 商品集合
try {
conn = DBHelper.getConnection();
String sql = "select * from items;"; // SQL語句
stmt = conn.prepareStatement(sql);
rs = stmt.executeQuery();
while (rs.next()) {
Items item = new Items();
item.setId(rs.getInt("id"));
item.setName(rs.getString("name"));
item.setCity(rs.getString("city"));
item.setNumber(rs.getInt("number"));
item.setPrice(rs.getInt("price"));
item.setPicture(rs.getString("picture"));
list.add(item);// 把一個商品加入集合
}
return list; // 返回集合。
} catch (Exception ex) {
ex.printStackTrace();
return null;
} finally {
// 釋放數(shù)據(jù)集對象
if (rs != null) {
try {
rs.close();
rs = null;
} catch (Exception ex) {
ex.printStackTrace();
}
}
// 釋放語句對象
if (stmt != null) {
try {
stmt.close();
stmt = null;
} catch (Exception ex) {
ex.printStackTrace();
}
}
}
}
// 根據(jù)商品編號獲得商品資料
public Items getItemsById(int id) {
Connection conn = null;
PreparedStatement stmt = null;
ResultSet rs = null;
try {
conn = DBHelper.getConnection();
String sql = "select * from items where id=?;"; // SQL語句
stmt = conn.prepareStatement(sql);
stmt.setInt(1, id);
rs = stmt.executeQuery();
if (rs.next()) {
Items item = new Items();
item.setId(rs.getInt("id"));
item.setName(rs.getString("name"));
item.setCity(rs.getString("city"));
item.setNumber(rs.getInt("number"));
item.setPrice(rs.getInt("price"));
item.setPicture(rs.getString("picture"));
return item;
} else {
return null;
}
} catch (Exception ex) {
ex.printStackTrace();
return null;
} finally {
// 釋放數(shù)據(jù)集對象
if (rs != null) {
try {
rs.close();
rs = null;
} catch (Exception ex) {
ex.printStackTrace();
}
}
// 釋放語句對象
if (stmt != null) {
try {
stmt.close();
stmt = null;
} catch (Exception ex) {
ex.printStackTrace();
}
}
}
}
//獲取最近瀏覽的前五條商品信息
public ArrayList<Items> getViewList(String list)
{
System.out.println("list:"+list);
ArrayList<Items> itemlist = new ArrayList<Items>();
int iCount=5; //每次返回前五條記錄
if(list!=null&&list.length()>0)
{
? ?String[] arr = list.split(",");
? ?System.out.println("arr.length="+arr.length);
? ?//如果商品記錄大于等于5條
? ?if(arr.length>=5)
? ?{
? ? ? for(int i=arr.length-1;i>=arr.length-iCount;i--)
? ? ? {
? ? ?itemlist.add(getItemsById(Integer.parseInt(arr[i]))); ?
? ? ? }
? ?}
? ?else
? ?{
? ? for(int i=arr.length-1;i>=0;i--)
? ? {
? ? itemlist.add(getItemsById(Integer.parseInt(arr[i])));
? ? }
? ?}
? ?return itemlist;
}
else
{
return null;
}
}
}
=======jsp如下==============================
<%@ page language="java" import="java.util.*" contentType="text/html; charset=utf-8"%>
<%@ page import="entity.Items"%>
<%@ page import="dao.ItemsDAO"%>
<%
String path = request.getContextPath();
String basePath = request.getScheme()+"://"+request.getServerName()+":"+request.getServerPort()+path+"/";
%>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
? <head>
? ? <base href="<%=basePath%>">
? ??
? ? <title>My JSP 'index.jsp' starting page</title>
<meta http-equiv="pragma" content="no-cache">
<meta http-equiv="cache-control" content="no-cache">
<meta http-equiv="expires" content="0"> ? ?
<meta http-equiv="keywords" content="keyword1,keyword2,keyword3">
<meta http-equiv="description" content="This is my page">
<!--
<link rel="stylesheet" type="text/css" href="styles.css">
-->
<style type="text/css">
? div{
? ? ?float:left;
? ? ?margin: 10px;
? }
? div dd{
? ? ?margin:0px;
? ? ?font-size:10pt;
? }
? div dd.dd_name
? {
? ? ?color:blue;
? }
? div dd.dd_city
? {
? ? ?color:#000;
? }
</style>
? </head>
??
? <body>
? ? <h1>商品展示</h1>
? ? <hr>
??
? ? <center>
? ? <table width="750" height="60" cellpadding="0" cellspacing="0" border="0">
? ? ? <tr>
? ? ? ? <td>
? ? ? ? ??
? ? ? ? ? <!-- 商品循環(huán)開始 -->
? ? ? ? ? ?<%?
? ? ? ? ? ? ? ?ItemsDAO itemsDao = new ItemsDAO();?
? ? ? ? ? ? ? ?ArrayList<Items> list = itemsDao.getAllItems();
? ? ? ? ? ? ? ?if(list!=null&&list.size()>0)
? ? ? ? ? ? ? ?{
? ? ? ? ? ? ? for(int i=0;i<list.size();i++)
? ? ? ? ? ? ? {
? ? ? ? ? ? ? ? ?Items item = list.get(i);
? ? ? ? ? ?%> ??
? ? ? ? ? <div>
? ? ? ? ? ? ?<dl>
? ? ? ? ? ? ? ?<dt>
? ? ? ? ? ? ? ? ?<a href="details.jsp?id=<%=item.getId()%>"><img src="images/<%=item.getPicture()%>" width="120" height="90" border="1"/></a>
? ? ? ? ? ? ? ?</dt>
? ? ? ? ? ? ? ?<dd class="dd_name"><%=item.getName() %></dd>?
? ? ? ? ? ? ? ?<dd class="dd_city">產(chǎn)地:<%=item.getCity() %> 價格:¥ <%=item.getPrice() %></dd>?
? ? ? ? ? ? ?</dl>
? ? ? ? ? </div>
? ? ? ? ? <!-- 商品循環(huán)結(jié)束 -->
? ? ? ??
? ? ? ? ? <%
? ? ? ? ? ? ? ? ? ?}
? ? ? ? ? ? ? }?
? ? ? ? ? %>
? ? ? ? </td>
? ? ? </tr>
? ? </table>
? ? </center>
? </body>
</html>
2016-03-29
回復(fù) 隔壁的小蕭:如圖
2016-03-24
找到答案了,是oracle的驅(qū)動包沒添加上