[ Jovana_87_Bg @ 08.12.2012. 23:52 ] @
Imam problem koji nisam uspela da resim.
Napravila sam access bazu sa jednom tabelom koja ima samo dve kolone (datum, prihodi), samo vezbam pa je zbog toga tabela mala.

Tabela izgleda ovako:

datum | prihodi |
-----------------------------------
type -- type
date/time -- text
yyyy/mm/dd

E sad ono sto ja pokusavam da uradim jeste da pretrazim tabelu i da mi se prokazu svi prhodi izmedju dva datuma. MEdjutim nikako da uspem, dok nisam dala uslov za datum rezultati su se prikazivali, ali cim sam uvela uslov ne izlazi rezultat pretrage.

Evo koda:
Code:

public void pregled(JTable t,JTextField t1,JTextField t2) {
Connection conn=null;
String datumOD=t1.getText(); // JTextField u koji upisujem prvi datum
String datumDO=t2.getText(); // JTextField u koji upisujem drugi datum
Format formatterr = new SimpleDateFormat("yyyy/MM/dd");
DateFormat formatter ; 
Date date ; 
formatter = new SimpleDateFormat("yyyy/MM/dd"); // pretvaranje stringova (datumOD,datumDO) u Date, zbog toga sto mi je u Accessu kolona datum - type Date.
conn = connect.ConnectDB(); // konektovanje na bazu
try{
    
date = (Date)formatter.parse(datumOD);  // String to Date
date = (Date)formatter.parse(datumDO);  // String to Date

Statement st=conn.createStatement();
ResultSet rs=st.executeQuery("select * from PRIHODI WHERE DATUM BETWEEN "+datumOD+" and "+datumDO+""); // prikazi sve prihode od Daruma 1 do Datuma 2

while(rs.next())
{
      Date da=rs.getDate("datum");
      String d1=rs.getString("prihodi");
      String d=formatterr.format(da); // Pretvaranje iz DATE u String zbog prikazivanja u tabeli
      model.addRow(new Object[]{d,d1});}
}

}
catch(Exception e)
{
     e.printStackTrace();
}
}


U cemu moze da bude problem?
[ nemnesic @ 09.12.2012. 00:05 ] @
MIslim da treba da koristis prepared statements jer su lakse za ucenje i sigurnije jer te stite od sql injection itd...

znaci mozes nesto ovako...(napomena: ovo nisam testirao tako mozda ima neka greska...)

Javi ako je proradilo ili nije. :)

Code:

    //mislim da daturm treba da bude yyyy-mm-dd format
    Date fromDate = java.sql.Date.valueOf ("2012-12-01");
    Date toDate = java.sql.Date.valueOf ("2012-12-10");
    try{
        Connection conn=null;
        Connection conn = connect.ConnectDB();
        PreparedStatement p = conn.prepareStatement("select * from prihodi where datum between ? and ?");
        p.setDate(1, fromDate);
        p.setDate(2, toDate);
        ResultSet rs = p.executeQuery();
        
    }catch(Exception e){ //ovo je samo radi primera ali nikada nemoj da hvatas general Exception. Uvek hvataj odredjene greske.
        e.printStackTrace();   
    }
 
[ Jovana_87_Bg @ 09.12.2012. 01:11 ] @
Nisam te bas razumela, jel mislis da probam samo sa tvojim kodom ili je on dodatni deo koda koji sam ostavila...
Iskreno, tek sam na pocetku sa Javom pa se bas najbolje i ne snalazim.
Probala sam samo sa p.setDate(1, fromDate); p.setDate(2, toDate); ali javlja gresku: "no suitable method found for setDate"...

Isrkreno ne znam bas kako da ukombinujem tvoj kod sa kodom koji sam ostavila...
[ nemnesic @ 09.12.2012. 22:30 ] @
setDate je methoda PreparedStatement klase: http://docs.oracle.com/javase/...ava/sql/PreparedStatement.html

A moj kod mozda ne radi jer nisam probao. Samo sam ti ovo napisao kao ideju kako da iskoristis prepared statement a ne Statement
Evo objasnjenja i tutoriala za PreparedStatement: http://docs.oracle.com/javase/tutorial/jdbc/basics/prepared.html

a evo i primera koji radi za mysql. access nemam da bi probao. samo znaci zameni url , user, i password

Code:



package com.nemnesic;

import java.sql.Connection;
import java.sql.Date;
import java.sql.DriverManager;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.util.logging.Level;
import java.util.logging.Logger;

public class EliteSecurity {

    /**
     * @param args
     */
    public static void main(String[] args) {
        String url = "jdbc:mysql://localhost:3306/test1";
        String user = "ss";
        String password = "ssus3r";
        ResultSet rs = null;
        PreparedStatement p = null;
        Connection conn = null;
        Date fromDate = java.sql.Date.valueOf("2012-12-01");
        Date toDate = java.sql.Date.valueOf("2012-12-19");
        try {
            conn = DriverManager.getConnection(url, user, password);
            p = conn.prepareStatement("select * from prihodi where datum between ? and ?");
            p.setDate(1, fromDate);
            p.setDate(2, toDate);
            rs = p.executeQuery();
            while (rs.next()) {
                System.out.print(rs.getInt(1));
                System.out.print(": ");
                System.out.println(rs.getString(3));
            }

        } catch (SQLException ex) {
            Logger lgr = Logger.getLogger(EliteSecurity.class.getName());
            lgr.log(Level.SEVERE, ex.getMessage(), ex);

        } finally {

            try {
                if (rs != null) {
                    rs.close();
                }
                if (p != null) {
                    p.close();
                }
                if (conn != null) {
                    conn.close();
                }

            } catch (SQLException ex) {
                Logger lgr = Logger.getLogger(EliteSecurity.class.getName());
                lgr.log(Level.WARNING, ex.getMessage(), ex);
            }

        }
    }

}

[ Jovana_87_Bg @ 16.12.2012. 16:56 ] @
Hvala na odgovoru. Resila sam problem! :)