2010-06-25 5 views
0

Je peux me connecter à Oracle 10g (en utilisant le pilote ojdbc14.jar) avec java. Mais quand j'utilise le même code dans une servlet ou un fichier avec l'extension .jsp, j'obtiens une exception de classe non trouvée. Je ne suis pas capable de comprendre pourquoi cela arrive. Avons-nous différentes chaînes de connexion pour JDBC dans java et jsp? C'est ce que j'utilise pour se connecter à Oracle iavec à la fois, java et jsp:Création d'une connexion JDBC avec Oracle 10g en utilisant jsp

Class.forName("oracle.jdbc.OracleDriver"); 
String url = "jdbc:oracle:thin:@localhost:1521:xe"; 
//Xe being the database name 
String usr = "username"; 
String pwd = "pwd"; 

fonctionne très bien avec java, mais donne une erreur avec jsp.

+0

Vous avez oublié de parler de l'erreur. Il y a des sortes d'erreurs, chacune racontant à sa manière la cause du problème. Ne rien dire de l'erreur rendra la cause impossible à déterminer et le problème sera difficile à résoudre. – BalusC

+0

Lorsque j'utilise oracle.jdbc.OracleDriver, il me donne une exception de classe non trouvée. – Logan

+0

Je sais que le post est assez vieux mais j'ai pensé à écrire l'erreur que je peux voir dans votre code. Vous pouvez utiliser oracle.jdbc.driver.OracleDriver à la place et essayer. – somnathchakrabarti

Répondre

1

Il ne devrait pas y avoir de différence réelle entre les deux. Le fichier jar du pilote se trouve-t-il dans votre sous-répertoire WEB-INF/lib /? Une exception de classe non trouvée signifie généralement que votre jar n'a pas été trouvé sur le chemin de classe.

+0

Le fichier de pilotes est inclus dans le chemin de classe. Si je crée un fichier java dans le même projet, cela fonctionne très bien. Le problème est avec jsp seulement. – Logan

+0

Quel serveur utilisez-vous? Et quel chemin dans le dossier du serveur avez-vous placé le ojdbc14.jar? – JoseK

+0

@Logan - ce n'est pas ce qu'il vous a demandé. Le JAR est-il dans WEB-INF/lib? Si vous utilisez un système CLASSPATH, vous devez savoir que votre serveur d'applications l'ignore. – duffymo

2

Si vous utilisez une variable d'environnement CLASSPATH, votre serveur d'applications l'ignore. C'est probablement pourquoi cela "fonctionne" avec Java mais pas avec les JSP.

Je vous conseille de ne pas compter sur CLASSPATH de cette façon. Apprenez à le configurer correctement pour chaque situation.

Je déconseille également de mettre du code scriptlet dans les pages JSP. Cela va devenir un cauchemar d'entretien en peu de temps.

Si vous devez placer des appels de base de données dans une JSP, apprenez comment utiliser JSTL et ses balises <sql>.

0
<%@page import="java.sql.*"%> 
<%@page import="oracle.jdbc.driver.*" %> 
<%@page import="oracle.sql.*;" %> 
<%@page contentType="text/html" pageEncoding="UTF-8"%> 
<!DOCTYPE html> 
<html> 
<head> 
    <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"> 
    <title>JSP Page</title> 
</head> 
<body> 
    <form id="form1" name="form1" method="get" action="but1.jsp"> 
<label> 
    Sr No:<input type="text" name="txt" /></br> 
    Name: <input type="text" name="txt1" /> 
</label> 
<p>&nbsp;</p> 
<p> 
    <input type="submit" name="but1" id="but1" value="Submit"> 


    </input> 
    <% String s=request.getParameter("txt"); 
    System.out.print(s); 

    String s1=request.getParameter("txt1"); 


Connection con; 

Statement st; 

ResultSet rs; 

try{ 
     System.out.println("hi"); 
    Class.forName("oracle.jdbc.OracleDriver"); 
     System.out.println("1"); 
     con=DriverManager.getConnection("jdbc:oracle:thin:@localhost:1521:XE","oracle-uname","oracle-password"); 
     System.out.println("2"); 
    st=con.createStatement(); 
     System.out.println("3"); 
    String query="insert into table1(srno, name) values ("+s+",'"+s1+"')"; 
     System.out.println("4"); 
     int rRs=st.executeUpdate(query); 
     System.out.println("5"); 
     String q="Select * from table1 where srno="+s+""; 
     System.out.println("cats"); 
    rs=st.executeQuery(q); 
     System.out.println("catty"); 
     while(rs.next()) 
     { 
      System.out.println("6"); 
    out.println("number is: "+rs.getString(1));%> 
      </br> 
      <%out.print("name is: "+rs.getString(2));   
     } 
    } 

catch(Exception ee) 

{ 
    System.out.println(ee.getMessage()); 
} 
%> 
</body> 
</html> 

"jdbc: oracle: thin: @localhost: 1521: XE" = chemin

pour définir chemin .. services> Bases de données> pilotes> oracle mince> connecter en utilisant> ajouter pot ojdbc6.jar > suivant> url JDBC (en bas)> set uname à un système et un mot de passe pour le mot de passe oracle> test de connexion

l'URL JDBC constitue le chemin ie "jdbc: oracle: thin: @localhost: 1521: XE"

tout le meilleur

+0

alors, quel est le point dans votre réponse? Je ne comprends pas ce que vous voulez dire – emecas

4

J'ai trouvé la solution à cette ...

c'est très facile ... je serais spécifique à la base de données d'oracle et au serveur d'apache tomcat.

télécharger ojdbc6.jar d'Oracle ou toute autre source

lieu dans votre tomcat/lib/(peu importe si vous utilisez xampp ou tout ensemble d'ampli, il est là) VOTRE SERVEUR son REDÉMARRER un must, sinon vous ne vous demanderiez que lolz.

essayez ce code ça marche .. !!

<%@ page import="java.sql.*" %> 

<HTML> 
<HEAD> 
<TITLE>Simple JSP to Oracle connection Example</TITLE> 
</HEAD> 
<BODY> 
<% 
    Connection conn = null; 
    try 
    { 
     Class.forName("oracle.jdbc.driver.OracleDriver"); 
     conn = DriverManager.getConnection("jdbc:oracle:thin:@localhost:1521:orcl", "scott", "tiger"); 
     out.println("connected....!!"); 

    } 

    catch(Exception e) 
    { 
     out.println("Exception : " + e.getMessage() + ""); 
    } 


%> 
</BODY> 
</HTML>