[ Majstor_Pućko @ 20.07.2008. 10:42 ] @
Pozdrav svima,
Imam problem sa konektovanjem na MySQL bazu. Evo koda servleta, nasao sam ga na internetu i samo prepravio potrbne stvari:
Code:

/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */


import java.io.*;
import java.net.*;
import java.sql.*;
import java.text.*;
import java.util.*;

import javax.servlet.*;
import javax.servlet.http.*;

/**
 *
 * @author Admin
 */
public class servlet extends HttpServlet {
    public String getServletInfo(){
        return "Servlet connects to MySQL database and displays result of a SELECT";
    }
    public void doGet(HttpServletRequest request, HttpServletResponse response)
            throws IOException, ServletException{
        String loginUser = "root";
        String loginPasswd = "";
        String loginUrl = "jdbc:mysql://localhost:3306/baza2";
        response.setContentType("text/html;charset=UTF-8");
        
        PrintWriter out = response.getWriter();
        
        out.println("<html><head><title>Konekcija</title></head>");        
        out.println("<body><h1>Citanje iz MySQL baze</h1>");
        
        try{
            Class.forName("com.mysql.jdbc.Driver").newInstance();
            Connection dbcon = DriverManager.getConnection(loginUrl, loginUser, loginPasswd);
            Statement statement = dbcon.createStatement();
            
            String query = "SELECT * FROM tabela1";
            
            ResultSet rs = statement.executeQuery(query);
            
            out.println("<table>");           
            while (rs.next()){
                String m_id = rs.getString("id");
                String m_datum = rs.getString("datum");
                String m_naslov = rs.getString("naslov");
                String m_text = rs.getString("text");
                out.println("<tr>");
                out.println("<td>"+ m_id+"</td>");
                out.println("<td>"+m_datum+"</td>");
                out.println("<td>"+m_naslov+"</td>");
                out.println("<td>"+m_text+"</td>"+"</tr>");
                
                }
            out.println("</table>");
            
            rs.close();
            statement.close();
            dbcon.close();
            
        }
        catch (SQLException ex){
            while(ex != null){
                System.out.println("SQL Exeption"+ex.getMessage());
                ex = ex.getNextException();
                
            }
            
        }
        catch(java.lang.Exception ex){
            out.println("<html>");
            out.println("<head><title>");
            out.println("Baza Greska");
            out.println("</title></head><body>");
            out.println("<p>SQL Error:");
            out.println(ex.getMessage());
            out.println("</p></body></html>");
            return;
            
        }
        out.close();
        
    }
}


Kada startujem,servlet radi,i javi mi sledecu gresku: SQL Error: com.mysql.jdbc.Driver
Pogledao sam u NB, imam driver, uspeo sam iz samog NB da se povezem na bazu i da izvrsim SQL query. Tako da mislim da sam omanuo u kodu negde, a posto sam Java pocetnik, nadam se da mi necete uzeti za zlo...
U svakom slucaju hvala!
[ Majstor_Pućko @ 20.07.2008. 12:22 ] @
Isto je i sa Postgre bazom, baza radi, moze da se uspostavi konekcija, nemam pojma...
Ovaj primer mi je vazniji zato sto mi zaista treba konekcija sa postgreom, a mysql sam radio cisto kao pred-test...
Code:

// File: ShowBedrock.java

/* A servlet to display the contents of the PostgreSQL Bedrock database */

import java.io.*;
import java.sql.*;
import java.text.*;
import java.util.*;
import javax.servlet.*;
import javax.servlet.http.*;

public class servlet2 extends HttpServlet 
{
    public String getServletInfo()
    {
       return "Servlet connects to PostgreSQL database and displays result of a SELECT";
    }

    private Connection dbcon;  // Connection for scope of ShowBedrock

    // "init" sets up a database connection
    public void init(ServletConfig config) throws ServletException
    {
        String loginUser = "postgres";
        String loginPasswd = "root";
        String loginUrl = "jdbc:postgresql://localhost:5432/test";

        // Load the PostgreSQL driver
        try 
           {
              Class.forName("org.postgresql.Driver");
              dbcon = DriverManager.getConnection(loginUrl, loginUser, loginPasswd);
            }
        catch (ClassNotFoundException ex)
            {
               System.err.println("ClassNotFoundException: " + ex.getMessage());
               throw new ServletException("Class not found Error");
            }
        catch (SQLException ex)
            {
               System.err.println("SQLException: " + ex.getMessage());
            }
    }

    // Use http GET

    public void doGet(HttpServletRequest request, HttpServletResponse response)
        throws IOException, ServletException
    {
        response.setContentType("text/html");    // Response mime type

        // Output stream to STDOUT
        PrintWriter out = response.getWriter();

        out.println("<HTML><Head><Title>Bedrock</Title></Head>");
        out.println("<Body><H1>Bedrock</H1>");
        
        try
            {
                // Declare our statement
                Statement statement = dbcon.createStatement();

                String query = "SELECT code,title,did ";                
                query +=       "FROM   test ";

                // Perform the query
                ResultSet rs = statement.executeQuery(query);

                out.println("<table border>");

                // Iterate through each row of rs
                while (rs.next())
                {
                   String m_name = rs.getString("code");
                   String m_dept = rs.getString("title");
                   String m_jobtitle = rs.getString("did");
                   out.println("<tr>" + 
                               "<td>" + m_name + "</td>" +
                               "<td>" + m_dept + "</td>" +
                               "<td>" + m_jobtitle + "</td>" +
                               "</tr>");
                }

                out.println("</table></body></html>");
                statement.close();
            }
        catch(Exception ex)
            {
                out.println("<HTML>" +
                            "<Head><Title>" +
                            "Bedrock: Error" +
                            "</Title></Head>\n<Body>" +
                            "<P>SQL error in doGet: " +
                            ex.getMessage() + "</P></Body></HTML>");
                return;
            }
         out.close();
    }
}


Javlja ovo:

Code:

HTTP Status 500 -

type Exception report

message

description The server encountered an internal error () that prevented it from fulfilling this request.

exception

javax.servlet.ServletException: Class not found Error
    servlet2.init(servlet2.java:37)
    org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:102)
    org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:286)
    org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:844)
    org.apache.coyote.http11.Http11Protocol$Http11ConnectionHandler.process(Http11Protocol.java:583)
    org.apache.tomcat.util.net.JIoEndpoint$Worker.run(JIoEndpoint.java:447)
    java.lang.Thread.run(Thread.java:619)

note The full stack trace of the root cause is available in the Apache Tomcat/6.0.16 logs.
Apache Tomcat/6.0.16
[ nedeljko_11460 @ 24.07.2008. 10:45 ] @
Cao,

Bacio sam pogled na kod i sve mi deluje ok, kazes da greska postoji kada pokusas da pokrenes aplikaciju tako da problem moze bude u tome
sto neophodne jar fajlove nisi prekopirao u lib folder na serveru. Prebaci jar file koji predstavlja drajver na sledecu lokaciju

[TomcatHome]/common/lib ili mozes ga staviti unutar tvoje aplikacije
[Aplikacija]/WEB-INF/lib

Probaj pa javi....
[ SteleStudent @ 29.07.2008. 21:01 ] @
ono sto je mene zezalo sa mysql bazom jeste to da nisam mogao da koristim nalog bez lozinke tj, za password ako ubacim prazan string - "" nece da se konektuje. MOzda je to problem mada ne mora da znaci. U svakom slucaju ja bih ti preporucio da probas da postavis novi nalog za bazu sa lozinkom! pa da probas sa tim :).
Ponavljam, mozda uopste nije ovo problem, ali ja sam naisao na tako nesto pa cisto reko da ti pomognem da se ne mucis na isti fazon kao ja :)

Poz
[ Majstor_Pućko @ 06.08.2008. 22:07 ] @
Zahvaljujem na odgovorima, problem sam resio sledeceg dana posle pokretanja teme, pao sam na krajnje glupoj stvari, nisam ubacio jar fajl drajvera u projekat. Tako da je nedeljko u pravu, inace kod sasvim lepo radi, i u kod mene je i za MySQL i za PostgreSQL prihvatio prazan string kao password. Tako da ako nekome bude trebalo, cisto da kazem da radi.
Hvala vam puno.