[ Dejan tf @ 23.03.2015. 21:02 ] @
Radim sa firebird bazom, preko drivera pristupam bazi :
izlistao sam podatke iz baze sada zelim da odradim logovanje, moj deo koda je:

Code:

public class Logovanje extends Activity  {
String username,password;
    
    EditText edtKorisnicko,edtPassword,edtText,edtText1;
    Button btn_login;
    Connection konekcija;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        // TODO Auto-generated method stub
        super.onCreate(savedInstanceState);
        setContentView(R.layout.main);
        edtKorisnicko=(EditText)findViewById(R.id.et_un);
        edtPassword=(EditText)findViewById(R.id.et_pw);
        btn_login=(Button)findViewById(R.id.btn_login);
        edtText=(EditText)findViewById(R.id.edtText);
        edtText1=(EditText)findViewById(R.id.edtText1);
        konekcija=konekcija();
        
        
        btn_login.setOnClickListener(new OnClickListener() {
            
            
            @Override
            public void onClick(View v)  {
                // TODO Auto-generated method stub
                
                try
                {
                    if(v.getId() == R.id.btn_login){
                        logovanje(username,password);
                        
                Log.e("IZVRSEN UPIT","DA");
                    }else
                    {
                        
                        Log.e("DUGME","PROBLEM");
                    }
                
                }
                catch(Exception e)
                {
                    
                Log.e( "Sta je problem :",e.getMessage());
                }
                
                } 
            });
        
    }
@SuppressLint("NewApi")
@SuppressWarnings("unused")
protected  Connection konekcija() {
        
        // TODO Auto-generated method stub
         StrictMode.ThreadPolicy policy = new StrictMode.ThreadPolicy.Builder().permitAll().build();
         StrictMode.setThreadPolicy(policy);
         Connection konekcija=null;
         String URL=null;
        
        
        try
        {
            
            
            
            Class.forName("org.firebirdsql.jdbc.FBDriver");
            Properties props = new Properties();
            props.setProperty("user", "xxxx"); 
            props.setProperty("password", "xxxx"); 
            props.setProperty("encoding", "UTF8");
            konekcija = DriverManager.getConnection("jdbc:firebirdsql://xxx.xx.xx.xxx:3050/xxx/cccc.FDB", props);
            
            Log.e("Firebird", "Konekcija");
            
            
        }catch(SQLException se)
        {
            
            Log.e("Problem u bazi",se.getMessage());
            
        }    
        catch(ClassNotFoundException cnfe)
        {
            
            Log.e("Ne postoji klasa", cnfe.getMessage());
        }
            
        
        catch(Exception e)
        {
            
        Log.e("Greska",e.getMessage());
            
        }
        
        return konekcija;
        
    }

public boolean logovanje(String username, String password)  {
        // TODO Auto-generated method stub
        String username1="";
        String password1="";
        
        password=username;
        ResultSet reset;
        
        String upit="select * from RM_KALKULACIJE WHERE SIFKOM='"+usename"'  and SIFKOM='"+password+"' ";//u bazi imam samo jedno polje za sifru komercijaliste, zelim d poistovetim da mi i sifra bude ista kao i passowrd
          
        try{
            
            Statement pstmt =konekcija.createStatement();
            
            
            
        reset = pstmt.executeQuery(upit);
        
        //edtKorisnicko.setText("Ulogoavo sam se");
        //int count=0;
        while(reset.next())
       {
            username1=reset.getString("SIFKOM").toString();
            password1=reset.getString("SIFKOM").toString();
            
        if(username1.equals(username)&&password1.equals(password)){
            edtText.setText("Korektno");
            
           }
            
           else{
               edtText1.setText("Nije dobra sifra ili pasword ");
           }
            
        Log.e("Dobro","Super");
    }catch(SQLException se){Log.e("Baza",se.getMessage());}
        catch(Exception e)
        {
        Log.e("Nije dobro",e.getMessage());
        }
        //return false;
        return false;
        
        }


Ovo ne funkcionise molim za pomoc. Znaci kada na formu unesem podatke da ispitujem da li je podatak koji je unet na formu isti kao u bazi da predjem u novu formu, ako ne da javi gresku.
[ nekicneko99 @ 27.03.2015. 21:14 ] @
Nisam nikad radio sa firebird bazom, ali koliko mi se cini problemi su sledeci:

Code:

password = username;

Ne znam sta radi ova linija, ti u String password ubavis String username.

Ako vec filtriras bazu preko query-ja, onda ne moras kada isfiltriras rezultat porediti sa username-om i password-om, ako si ih vec tako filtrirao, vec samo kiliko rezultata ima.
Ja bih to ovako uradio (otprilike)
Code:

String upit="select * from RM_KALKULACIJE WHERE SIFKOM='"+usename"';\
reset = pstmt.executeQuery(upit);
if(rest.lenght > 0) // ne znam da li ovako ide, nisam radio java sa bazom, nije mi trebalo (proveris koliko redova ima)
{
    if(password.equals(reset.getString("SIFKOM").toString()))
    {
        // Ulogovan
    } else
    {
        // Nije ulogovan (pokresan password)
    }
} else
{
     // Nije ulogovan (pogresan username)
}


Mislim da je greska ovde:
Code:

password = username;

probaj to da zakomentarises.

Filtriras dva puta po sifri:
SIFKOM = username and SIFKOM = pasword, ako si zato stavio username = pasword, probaj da obrises to. I ovaj kometrar kod upita bas ne razumem.

Sta ispise kao rezultat?
[ iglig @ 02.04.2015. 18:05 ] @
Naziv ResultSet promenljive "reset" nije najsrećniji, promeni u "reSet", "rsltst" ili nešto drugo što neće imati dvojako značenje.
Obrati pažnju da je ovaj kod potencijalno ranljiv kada je u piftanju SQL injection, promenljivu si nazvao pstmt a koristiš običnu Statement klasu. Bez salt-a i uz alat poput WireShark-a potpuno je trivijalno dobiti celu tabelu.
Kad proradi upit prouči PreparedStatement klasu, iz baze traži samo neophodne kolone (sigurnost i brže izvršavanje) i načine na koje ćes očistiti korisnički unos od potencijalno zlonamernog koda.
[ Dejan tf @ 06.04.2015. 08:33 ] @
Kod koji funkcionise, meni je u bazi SIFRA_RUCNI_TERMINAL jedno polje to je jedna vrednost, npr.850, ja sam postavio po zahtevu korisnika da mi ta vrednost bude i username i password..Izvinite sto ranije nisam odgovorio.

Code:

public boolean logovanje() {
        // TODO Auto-generated method stub
        
        
        ResultSet reSet;

        String upit = "select SIFRA_RUCNI_TERMINAL  from GL_KOMERCIJALISTI where SIFRA_RUCNI_TERMINAL = ? and SIFRA_RUCNI_TERMINAL ? ";

        try {

            PreparedStatement pstmt = konekcija.prepareStatement(upit);
            pstmt.setString(1, edtKorisnicko.getText().toString());
            pstmt.setString(2, edtPassword.getText().toString());

            reSet = pstmt.executeQuery();
            
             

            int count = 0;

            while (reSet.next()) {

                count = count + 1;
            }

            if (count == 1) {
                Intent nasIntent = new Intent(Logovanje.this,
                        MainActivity.class);
                startActivity(nasIntent);
                edtText.setText("Korektno");

            } else if (count > 1) {
            
                edtKorisnicko.setText("Postoji isto korisnicko ime ili password.");


            } else {
                
                edtKorisnicko.setText("Nisu ispravni sifra ili password!!");

            }

            Log.e("Dobro", "dobro je");
        } catch (SQLException se) {
            Log.e("Baza", se.getMessage());
        }

        catch (Exception e) {
            Log.e("Nije dobro", e.getMessage());
        }
        return false;
    

    }
    
[ Dejan tf @ 06.04.2015. 09:13 ] @
Deo koji sledeci radim je korisnik na pocetku kada instalira aplikaciju samo na pocetku treba da upise neku vrednost koja je unapred definisana (npr. dplca) za

sve korisnike, za username i password, pri svakom narednom logovanju svako ce koristiti svoj username i password. Ja pokusavam sada da definisem

u jednom txt file da upisem vrednost 0, kada korinik upise na pocetku dplca, u txt file ce se upisati 1 i nikada vise nece biti potrebno da korisnik upisuje tu

probnu sifru za username i pass ( dplca ) .

Deo koda:

Code:

    btn_login.setOnClickListener(new OnClickListener() {

            @Override
            public void onClick(View v) {
                // TODO Auto-generated method stub

                try {

                    if (v.getId() == R.id.btn_login) {
                        provera();
                        edtKorisnicko.setText("");
                        edtPassword.setText("");
                        logovanje();

                        Log.e("IZVRSEN UPIT", "DA");
                    }

                    else {

                        Log.e("DUGME", "PROBLEM");
                    }

                } catch (Exception e) {

                    Log.e("Sta je problem :", e.getMessage());
                }

            }

            private void provera() {
                // TODO Auto-generated method stub
                Scanner scan = null;
                try {
                    scan = new Scanner(new File("provera.txt"));
                    
                } catch (FileNotFoundException e) {
                    // TODO Auto-generated catch block
                    e.printStackTrace();
                }
                int x = 0;
            while(scan.hasNextInt()){
                 x = scan.nextInt();
                
                
            }
            if(x==0){
                
                
                try {
                    
                    if(edtKorisnicko.getText().equals("dplca") && edtPassword.getText().equals("dplca")){
                    PrintWriter out = new PrintWriter(new BufferedWriter(new FileWriter("provera.txt",true)));
                    out.append("\n");
                    out.append("1");
                
                    out.close();
                    
                    }
                } catch (IOException e) {
                    // TODO Auto-generated catch block
                    e.printStackTrace();
                }        
            }
                
                
                
            }
        });

    }



Na pocetku je pozvana metoda logovanje(), kod te metoda je u prethodnoj poruci koju sam postavio. Kada na pocetku upisem dplca, idem na

login ako su upisana vrednost dobra (dplca), postaviti edit polja za username i password da budu prazna polja gde cu moci da upisime moj username i

password za svakog korinika ponaosob.

Znaci ako u txt file ne postoji vrednost 1 korisnik prvo mora upisati probnu sifru, ako postoji moze da se loguje sa svojom sifrom i password, ako moze

ovde mala pomoc.




[ Dejan tf @ 06.04.2015. 12:41 ] @
Dobijam sledecu poruku o gresci :

04-06 11:22:44.919: E/Sta je problem :(1901): Attempt to invoke virtual method 'boolean java.util.Scanner.hasNext()' on a null object reference.