[Java] Connessione Diretta al database

Linguaggi di programmazione: php, perl, python, C, bash e tutti gli altri.
Avatar utente
Saruman
Entusiasta Emergente
Entusiasta Emergente
Messaggi: 2378
Iscrizione: venerdì 16 marzo 2007, 22:29

[Java] Connessione Diretta al database

Messaggio da Saruman »

Ciao ragazzi!

ho questa classe!

Codice: Seleziona tutto

package it.coopitalia.vivido.coopstream.utils;

import java.awt.print.PageFormat;
import java.awt.print.PrinterJob;
import java.io.InputStream;
import java.sql.Blob;
import java.sql.Connection;
import java.sql.PreparedStatement;
import java.util.StringTokenizer;

import javax.naming.Context;
import javax.naming.InitialContext; 
import javax.sql.DataSource;

import oracle.jdbc.OracleConnection;
import oracle.jdbc.OracleResultSet;

import com.ibm.ws.rsadapter.jdbc.WSJdbcConnection;
import com.ibm.ws.rsadapter.jdbc.WSJdbcUtil;

import it.coopitalia.vivido.coopstream.search.CSObject;

import org.apache.log4j.Logger;
import org.faceless.pdf2.*;
import java.awt.print.*;
import javax.print.attribute.*;
import javax.print.attribute.standard.PageRanges;
import javax.print.*;

public class CSPrint {

	private CSObject obj;
	Logger logger = Logger.getLogger(CSPrint.class.getName());
	private Connection conn = null;
	private PreparedStatement stmt = null;
	private OracleResultSet rs = null;
	private OracleConnection oracleConnection = null;
	private Context initCtx;
	private DataSource ds = null;

	public CSPrint(CSObject obj)
	{
		this.obj = obj;
	}

	public boolean print()
	{
		int iProgId = obj.getIProgressivo();

		try{

			initCtx = new InitialContext();
			ds = (DataSource)initCtx.lookup("java:comp/env/dsJNDI");
			conn = ds.getConnection();

			oracleConnection = (OracleConnection)WSJdbcUtil.getNativeConnection((WSJdbcConnection) conn);
			oracleConnection.setAutoCommit(true);
			
			String sSql = "SELECT Fle_Doc_Orgn, Nom_Doc_Orgn"+
			" FROM coopstr.tstr_doc "+
			"WHERE num_prg_doc = ?";

			stmt = oracleConnection.prepareStatement(sSql);
			stmt.setInt(1, iProgId);

			rs = (OracleResultSet)stmt.executeQuery();

			String file_name = null;
			String file_ext = null;
			if (rs.next())
			{
				file_name = rs.getString("Nom_Doc_Orgn");
				file_ext = file_name.substring(file_name.lastIndexOf(".")+1,file_name.length());

				if (file_ext.compareToIgnoreCase("pdf")==0)
				{
					Blob bBlob = rs.getBlob("Fle_Doc_Orgn");
					InputStream is = bBlob.getBinaryStream();

					PDF pdf = new PDF(new PDFReader(is));
					PrintRequestAttributeSet atts = new HashPrintRequestAttributeSet();
					PDFParser parser = new PDFParser(pdf);
					printToDefaultPrinter(parser,atts);
					is.close();
					return true;

				}   
				else 
					return false;
			}
		}
		catch(Exception e)
		{
			e.printStackTrace();
		}

		finally
		{
			try {
				if (stmt !=null)
				{
					stmt.close();
					stmt = null;
				}
				if (rs!=null)
				{
					rs.close();
					rs = null;
				}
				if (conn !=null)
				{
					conn.close();
					conn=null;
				}
			}
			catch(Exception e)
			{
				e.printStackTrace();
			}

		}
		return false;
	}

che mi sta creando dei problemi, mi hanno consigliato di effettuare una connessione diretta al DB ma non ho capito esattamente cosa volessero dire...
Mi date una mano?
Avatar utente
dekster
Prode Principiante
Messaggi: 50
Iscrizione: mercoledì 26 settembre 2007, 22:41

Re: [Java] Connessione Diretta al database

Messaggio da dekster »

Sembra che usi una connessione JNDI per accedere al database.
Probabilmente ti consigliavano di accedere al database con connessione JDBC.
Avatar utente
Saruman
Entusiasta Emergente
Entusiasta Emergente
Messaggi: 2378
Iscrizione: venerdì 16 marzo 2007, 22:29

Re: [Java] Connessione Diretta al database

Messaggio da Saruman »

Ok, ho un po di difficoltà a configurare tutto, Ad esempio come faccio a caricare il dirver per un db Oracle?
Avatar utente
dekster
Prode Principiante
Messaggi: 50
Iscrizione: mercoledì 26 settembre 2007, 22:41

Re: [Java] Connessione Diretta al database

Messaggio da dekster »

Per usarlo devi mettere il file jar del driver tra le librerie della tua applicazione (il driver ti viene fornito da oracle stessa), in modo che il class loader possa caricarlo in memoria.
Poi, per creare la connessione ci sono tanti esempi nel web, per esempio:
http://www.rgagnon.com/javadetails/java-0112.html
http://www.orafaq.com/wiki/JDBC
http://www.exampledepot.com/egs/java.sq ... racle.html
giozh
Scoppiettante Seguace
Scoppiettante Seguace
Messaggi: 282
Iscrizione: mercoledì 6 agosto 2008, 12:35
Desktop: KDE
Località: Roma

Re: [Java] Connessione Diretta al database

Messaggio da giozh »

Come ti è stato detto, devi cercare in rete il driver jar JNDI o JDBC relativo al database a cui ti vuoi connettere ed importarlo nel tuo progetto.
Avatar utente
Saruman
Entusiasta Emergente
Entusiasta Emergente
Messaggi: 2378
Iscrizione: venerdì 16 marzo 2007, 22:29

Re: [Java] Connessione Diretta al database

Messaggio da Saruman »

ok grazie ! Ho quasi risolto, naturalmente come avrò condivido e metto risolto
Scrivi risposta

Ritorna a “Programmazione”

Chi c’è in linea

Visualizzano questa sezione: Bing [Bot] e 12 ospiti