[ Neznalica_sa_ugla @ 16.05.2011. 00:44 ] @
Trebam prepraviti neku tudji servlet koji je radjen u eclipsu , java i pokrece se sa tomcat , i trebam se conektirati na server sql 2005 na web-u
Sve što sam pokušao ili kopirao s interneta ne pali . Bio bi zahvalan , ako bi mi netko pomogao . trebam se konektirati i iz tablice izčitati podatke , sql nije problem , nego konekcija HVALA
[ dejanet @ 16.05.2011. 15:36 ] @
Da li znas, da li imas konekciju sa integrated security ili obicnu sa user/pass ?
[ Neznalica_sa_ugla @ 17.05.2011. 16:10 ] @
User , pass
[ dejanet @ 17.05.2011. 16:39 ] @
Ako nemas treba da skines i ukljucis jdbc biblioteku (sqljdbc) za rad sa sql serverom(moze i neka starija jer se kacis na sql server 2005).
(nove verzije se mogu skinuti sa http://msdn.microsoft.com/en-us/sqlserver/aa937724 )

Treba da vidis da li treba da kreiras konekciju preko JNDI-ija ili ces sam praviti konekciju..

Ako sam pravis konekciju ukljuci jdbc biblioteku u tvoj projekat i vidi neki primer na netu..

Ako ides preko jndi-a(sto je standard za web aplikacije) treba da proveris u web.xml-u <resource-ref> da li imas npr. jdbc/TVOJABAZA ako nemas treba da dodas.

Zatim prebaci jdbc jar biblioteku koji si skinuo u C:\Program Files\Apache Software Foundation\Tomcat x.y\common\lib

Zatim u C:\Program Files\Apache Software Foundation\Tomcat x.y\conf nadji context.xml i tamo bi trebalo da imas:


Code:
<Resource
      name="jdbc/TVOJABAZA"
      type="javax.sql.DataSource"
      driverClassName="driverClassName="com.microsoft.sqlserver.jdbc.SQLServerDriver"
      password="tvoja sifra"
      maxIdle="30"
      maxWait="5000"
      validationQuery="select 1"
      username="tvoj username"
      url="jdbc:sqlserver://tvojserver:1434;DatabaseName=TVOJABAZA"
      maxActive="100"/>


U samom servletu mozes da kreiras sledeci metod:

Code:
private Connection getConnection() { 
Connection connection = null; 
try { 
InitialContext context = new InitialContext(); 
DataSource dataSource = (DataSource) context.lookup("jdbc/TVOJABAZA"); 
connection = dataSource.getConnection(); 
} catch (NamingException e) { 
e.printStackTrace(); 
} catch (SQLException e) { 
e.printStackTrace(); 

return connection; 
}


Parametri mogu da budu malo drugaciji u tvom slucaju, ali je ovo postupak..
[ Neznalica_sa_ugla @ 17.05.2011. 23:25 ] @
ok, Hvala , konektirao sam se , sada bi mi trebalo nešto što je najsličnije DataReader -u u c# kada pročitam podatke iz tablice da mogu čitati jedan po jedan zapis , kroz petlju .
[ dejanet @ 18.05.2011. 08:35 ] @
To je laksi deo:
Code:
    public void procitaj_tabelu(){
        int polje1=0;
        string polje2="";
        Connection conn =null;
        Statement stmt = null;
        try {
            
            //Class.forName(DRIVER);
            //conn = DriverManager.getConnection(URL);
            conn=getConnection();//iz metoda
            stmt = conn.createStatement();
            ResultSet rs;
            rs = stmt.executeQuery("select polje1,polje2 from tvoja_tabela");
            while (rs.next()){
                polje1=rs.getInt("polje1");
                polje2=rs.getString("polje2");
            }
            rs.close();
            stmt.close();
            conn.close();
        } catch (Exception e) {
             System.out.println("Exception:"+e.getMessage());
        } finally {
            if (stmt != null) {
                try { stmt.close(); } catch (SQLException e) { ; }
                stmt = null;
            }
            if (conn != null) {
                try { conn.close(); } catch (SQLException e) { ; }
                conn = null;
            }
        }
    }
[ Neznalica_sa_ugla @ 19.05.2011. 10:19 ] @
Ok , puno hvala , .Čitam i upisujem u bazu .
Još pogledaj ovo molim te::
URL link = new URL(url);
BufferedReader in = new BufferedReader(
new InputStreamReader(
link.openStream()));

Kako da nateram ovo čudo da čita utf-8 , jer mimam smeća koje mi vrati...
[ dejanet @ 19.05.2011. 10:39 ] @
Probaj:

Code:
URL link = new URL(url);
BufferedReader in = new BufferedReader(new InputStreamReader(link.openStream()),"UTF-8");


ili isto

Code:
URL link = new URL(url);
BufferedReader in = new BufferedReader(new InputStreamReader(link.openStream()));
while( (s = in.readLine()) != null) {
     String UTF8Str = new String(s.getBytes(),"UTF-8");
}


Isprobaj "UTF8" ili druge kodne strane u zavisnosti izvora..
[ Neznalica_sa_ugla @ 19.05.2011. 23:43 ] @
Smori ovo mene , ja tebe , al ne ide ::
Kada printam isti string sa :
System.out.println(ProcitaniString); lepo piše sva naša slova na Consol , ali
response.getWriter().print(ProcitaniString); jer to mi treba za prikazati u html , onda izbacuje ,smeće :
proba sa
Code:
 request.setCharacterEncoding("UTF-8"); 
al ne ide ,
[ biske86 @ 20.05.2011. 00:21 ] @
Kolega sa MySQL podforuma Bogdan Kecman je na svom blogu napisao odličan tekst vezan za smeće u bazi ( http://www.mysql.rs/2010/07/smece-u-bazi-po-ko-zna-koji-put/ ). Tekst nije vezan za Java/MSSQL već za PHP/MySQL ali mislim da je odlično objašnjeno zbog čega i da li imamo smeće u bazi.
Znači prvo proveriš da li u samoj bazi imaš smeće. Ako ne onda proveravaš enkoding da li si setovao prilikom kačenja na bazu. Ne znam tačno možda da naglasiš utf8 enkoding u ovoj liniji:
Code:
url="jdbc:sqlserver://tvojserver:1434;DatabaseName=TVOJABAZA"


Ako je i to postavljeno na ispravan način ostaje još samo enkoding same html stranice tj. response objekta. Npr:
Code:

response.setHeader("Content-Type", "text/xml; charset=UTF-8");



Ne znam tačno šta je od ove 3 stvari kod tebe u pitanju ali probaj, pa metodom eliminacije dođi do rešenja



Savet: Kad posavljaš pitanja uvek daj što više informacija. Na primer ovde bi mogao da postaviš kod klase preko koje se kačiš na bazu tako da bi smo lakše došli do rešenja. Olakšaj nam malo Ovo su elementarne stvari, ne boj se da će neko da ti ukrade kod pošto ovakvih stvari ima na internetu na svakom drugom tutorijalu.
[ Neznalica_sa_ugla @ 20.05.2011. 08:44 ] @
Da upravu si da uvek treba dati ljudima više inforacija. Za sve ti hvala . Vidim da se nismo razumeli , naime čitam url ( internet stranicu ) kodom
Code:
 
    request.setCharacterEncoding("UTF-8");
        
        String url = request.getParameter("url");
        String st = "";
    
        try {
            URL link = new URL(url);
            BufferedReader in = new BufferedReader(
                                    new InputStreamReader(
                                    link.openStream()));
            String inputLine;
            while ((inputLine = in.readLine()) != null){
             
                st=st+inputLine;
            }
            in.close();
           
        }
        catch (MalformedURLException e) {
            st="Greska";";
        }
        catch (IOException e) {
            st="Greska u izlazu ";
        }
        response.setCharacterEncoding("UTF-8");
        
        response.getWriter().print(st);            // NA  html  DOKUMENTUI   IMA  SMEĆA  
        System.out.println(st);                     //VIDI ISPRAVNO  ZNAKOVE  NEMA  SMEĆA
         

A bazu ću tek da proverim .
[ dejanet @ 20.05.2011. 09:01 ] @
Da li si probao:

response.setContentType ("text/html;charset=utf-8");
[ Neznalica_sa_ugla @ 21.05.2011. 23:22 ] @
Da i to radi dosta ok, Ali pojavljuje se jedan problem :
u <input type="text" name="podatak" > i kada to submitijem na drugu file
i procitam sa

request.getParameter("podatak");
umjesto slova ČĆć.. vidi svasta ,Još kada bi ovo sredili to bi bilo to
[ dejanet @ 24.05.2011. 06:18 ] @
Tu bi mozda doslo:
request.setCharacterEncoding("UTF-8");

ali postavi pre prvog requesta..