Avatar billede mikmakmuk Nybegynder
02. maj 2007 - 13:39 Der er 14 kommentarer og
2 løsninger

klasse til databaseforbindelse

Hej Eksperter,

Jeg har en klasse som ser således ud

package util;
import java.util.Vector;
import java.sql.*;
import javax.sql.*;
import javax.naming.*;


public class Dbp
{
    private Connection conn ;
    private PreparedStatement pstmt;
   
    public Dbp()
    {
        try
        {
        Context init = new InitialContext();
        Context ctx = (Context) init.lookup("java:comp/env");
        DataSource ds = (DataSource) ctx.lookup("jdbc/MIN_DS");
        Connection conn = ds.getConnection();

        }
        catch(Exception s)
        {
            System.out.println("SQL dataforbindelse fejlede"+s);
        }   
    }
   
    public ResultSet select(String sql, Vector params)
    {
        ResultSet r = null;
        try
          {

        PreparedStatement pstmt = conn.prepareStatement(sql,ResultSet.TYPE_SCROLL_INSENSITIVE,
                                      ResultSet.CONCUR_UPDATABLE);
         
            for (int i=0; i < params.size(); i++) {
            pstmt.setString(i+1, (String)params.elementAt(i));
            } 
     
        r = pstmt.executeQuery();
 
        }
        catch(SQLException s)
        {
            System.out.println("Select fejlede: "+s);
        }     
        catch (Exception e) {
              e.printStackTrace();
        }
        finally {
              try {
                conn.close();
              } catch (Exception e) {
            e.printStackTrace();
              }
        }
        return r;
    }
   
    public void insertUpdate(String sql, Vector params)
    {
        try
        {
            PreparedStatement pstmt = conn.prepareStatement(sql);         
            for (int i=0; i < params.size(); i++) {
            pstmt.setString(i+1, (String)params.elementAt(i));
            } 
            pstmt.executeUpdate();

        }
        catch(SQLException s)
        {
            System.out.println("update/insert fejlede");
        }       
    }
   
   
}

Den compiler fint, men den virker ikke.

Jeg vil gerne kunne kalde den fra min jsp side således

<%
Dbp d = new Dbp();

try {
       
        Vector vi = new Vector();
                       
            ResultSet rs    = d.select("SELECT * from users", vi);
         
          while(rs.next()){
           
          out.print(rs.getString(2));
          out.print(rs.getString(3));
          }
       
        } catch (SQLException s) {
            System.out.println("<h3>Start.jsp SQL fejl: " + s.toString() + " "
            + s.getErrorCode() + " " + s.getSQLState() + "</h3>");
        }     
%>
Avatar billede arne_v Ekspert
02. maj 2007 - 16:51 #1
ResultSet er connectet d.v.s. at naar du kalde Connection close kan du ikke
bruge det.
Avatar billede arne_v Ekspert
02. maj 2007 - 16:52 #2
Du skal nok have en Dbp close som kalder conn.close.
Avatar billede mikmakmuk Nybegynder
02. maj 2007 - 19:07 #3
altså fjerme finally i select og lave en metode som lukker forbindelsen
Avatar billede mikmakmuk Nybegynder
02. maj 2007 - 19:19 #4
Det syntes ikke at virke

    public void close()
      {   
          try
          {
            conn.close();
              }
              catch (Exception e)
              {
            e.printStackTrace();
              }       
       
    }
Avatar billede mikmakmuk Nybegynder
02. maj 2007 - 19:20 #5
d.close();
Avatar billede arne_v Ekspert
02. maj 2007 - 19:35 #6
nogen fejl beskeder ?
Avatar billede mikmakmuk Nybegynder
02. maj 2007 - 19:42 #7
nullpointerexception
Avatar billede smirnoff Nybegynder
02. maj 2007 - 19:45 #8
lav lige "Connection conn = ds.getConnection();" om til "conn = ds.getConnection();" i din contructor... ellers er conn for resten af objektets levetid null.
Avatar billede arne_v Ekspert
02. maj 2007 - 19:46 #9
Connection conn = ds.getConnection();

skal vaere

conn = ds.getConnection();
Avatar billede mikmakmuk Nybegynder
02. maj 2007 - 19:49 #10
I er for seje
Avatar billede mikmakmuk Nybegynder
02. maj 2007 - 19:50 #11
lægger I nogle svar
Avatar billede smirnoff Nybegynder
02. maj 2007 - 19:54 #12
kom jo lige ind midt i det hele .. ellers ka vi dele ??
Avatar billede arne_v Ekspert
02. maj 2007 - 20:08 #13
svar
Avatar billede mikmakmuk Nybegynder
02. maj 2007 - 20:14 #14
er det okay hvis jeg deler pointene?
Avatar billede arne_v Ekspert
02. maj 2007 - 20:32 #15
selvf.
Avatar billede mikmakmuk Nybegynder
03. maj 2007 - 19:40 #16
Cool og 1000 tak for hjælpen
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Kurser inden for grundlæggende programmering

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester