Avatar
Milan Gallas
Redaktor
Avatar
Milan Gallas:

ahoj mám následující metodu:

public int count(String table) throws SQLException{
        PreparedStatement ps =
                connection.prepareStatement("SELECT COUNT(*) FROM ?");
        ps.setString(1, table);
       ResultSet result = ps.executeQuery();
         result.next();
        return result.getInt(1);
    }

Je to metoda tridy database.

ale když jí zavolám tak to vyhodí chybu a nazev tabulky nedosadi.

        try {
            Database database = new Database("osoby", "root", "");
System.out.println(database.count("programatori"));
  } catch (SQLException ex) {
            System.out.println("error - "+ex.getMessage());
        }

Ale když tam ten název tabulky dosadím natvrdo tak to jde:

public int count(String table) throws SQLException{
       PreparedStatement ps =
               connection.prepareStatement("SELECT COUNT(*) FROM programatori");
      ResultSet result = ps.executeQuery();
        result.next();
       return result.getInt(1);

Nevíte někdo čím to může být?

Editováno 27.4.2014 21:49
 
Odpovědět 27.4.2014 21:47
Avatar
MrPabloz
Člen
Avatar
Odpovídá na Milan Gallas
MrPabloz:

Já myslím že problem spíš bude v tom, že to budeš muset udělat jako string, a pak teprv vykonat, prepared statement totiž první tabulku předpřipraví, ale když nezná jméno, tak nemá co předpřipravit = preared statement nefunguje :)

Nahoru Odpovědět 27.4.2014 21:49
Harmonie těla a duše, to je to, oč se snažím! :)
Avatar
Milan Gallas
Redaktor
Avatar
Odpovídá na MrPabloz
Milan Gallas:

Myslíš takhle?

public int count(String table) throws SQLException{
        PreparedStatement ps =
                connection.prepareStatement("SELECT COUNT(*) FROM "+table);
       ResultSet result = ps.executeQuery();
         result.next();
        return result.getInt(1);
}

Ale takhle bych to udělat nemohl. Byla by to bezpečnostní díra.

 
Nahoru Odpovědět 27.4.2014 22:29
Avatar
Milan Gallas
Redaktor
Avatar
Odpovídá na MrPabloz
Milan Gallas:

Né vlastně to je blbost. Uživatel nebude komunikovat přímo s Wrapperem a programátor si to při tvorbě uhlídá, takže by v tom neměl být problém. Toto vlákno můžete uzavřít :D

 
Nahoru Odpovědět 27.4.2014 22:33
Děláme co je v našich silách, aby byly zdejší diskuze co nejkvalitnější. Proto do nich také mohou přispívat pouze registrovaní členové. Pro zapojení do diskuze se přihlas. Pokud ještě nemáš účet, zaregistruj se, je to zdarma.

Zobrazeno 4 zpráv z 4.