Prosíme přihlašte se nebo zaregistrujte.

Přihlašte se svým uživatelským jménem a heslem.
Vaše pomoc je stále potřeba!

Autor Téma: JAVA + SQL  (Přečteno 2249 krát)

existpierre

  • Host
JAVA + SQL
« kdy: 03 Května 2009, 18:56:26 »
zdravim,

Hladal som na nete ako kon, ale uz si fakt neviem rady, napadlo ma, ze tu by mi niekto vedel pomoct. Jedna sa o mysql a javu. Zatial v SQL ovladam len executeQuery, vdaka tomu nacitavam data do objektov ako JCombobox etc. .. ale potreboval by som zavolat proceduru

Kód: [Vybrat]
CALL POHYB_N('PR', 'evach', @CISLO
uz som skusal vselico mozne, no stale mi to nejde, vypada to u mna takto:

Kód: [Vybrat]
    // <editor-fold defaultstate="collapsed" desc=" Generated Code ">//GEN-BEGIN:setNewItem
    public static void setNewItem() {
        try {
            Class.forName("org.gjt.mm.mysql.Driver").newInstance();
        } catch (Exception ex) {
            DialogErr("Chyba pri načítaní driveru", "getSkladItemSize(...)", ex);
        }

        Connection MySQLConnection = null;
        try {

            MySQLConnection =
                    DriverManager.getConnection(
                    "jdbc:mysql://localhost/sklad_dataDEV" +
                    "?user=root&password=wwwwww");
        } catch (Exception ex) {
            DialogErr("Nedá sa pripojiť do databázy", "getSkladItemSize(...)", ex);
        }

        try {
            Statement SQLStatement = MySQLConnection.createStatement();
            SQLStatement = MySQLConnection.createStatement();
            SQLStatement.executeUpdate("CALL POHYB_N('PR', 'evach', @CISLO )");

            ResultSet SQLResultSet = SQLStatement.getResultSet();

            SQLResultSet.close();
            SQLStatement.close();

            MySQLConnection.close();
        } catch (Exception ex) {
            DialogErr("Chyba v spracovaní", "getSkladItemSize(...)", ex);
        }
       
    }
    // </editor-fold>//GEN-END:setNewItem

skusal som namiesto Statement aj CallableStatement, ale vysledok ten isty. Stale mi ako Exception vypise "null"

« Poslední změna: 03 Května 2009, 19:00:01 od eXistPierre »

petergula

  • Stálý člen
  • **
  • Příspěvků: 1016
Re: JAVA + SQL
« Odpověď #1 kdy: 03 Května 2009, 19:08:57 »
Raz som uz na jeden Tvoj dotaz ohladom Javy odpovedal a vtedy som Ti odporucil skusit citat aj o konvencii pisania kodu v Jave, podla mna ten Tvoj kod odpudi 75% ludi, co by Ti chceli poradit, vies ako strasne sa to cita? Tebe to teraz pride citatelne, ale vsetci ludia co nieco v Jave naprogramovali pri pozreti na tie zdrojaky su uplne mimo. Musim sa priznat, ze doteraz som si nemyslel ako ma len pomenenie pismenok velke male vie vyviest z rovnovahy.

a k volaniu procedur, skus napr precitat toto:
http://www.exampledepot.com/egs/java.sql/CallProcedure.html
(tento zdroj som Ti aj vtedy prilinkoval ako zdroj naucnych prikladov)
popripade
http://www.java2s.com/Code/Java/Database-SQL-JDBC/CallStoredProcedureInMySql.htm
...

google toho vyhodil strasne vela
ntbk Dell 6420 (Amd Ati, Intel i7, 4GB RAM, 256GB SSD ...)
secondary/u svokrovcov:
Xubuntu (64bit) ntbk Asus A6Je (Ati X1450, Intel Core2Duo T5500, 2.5GB RAM ...)

existpierre

  • Host
Re: JAVA + SQL
« Odpověď #2 kdy: 03 Května 2009, 19:41:55 »
Za ten bordel sa ospravedlnujem, ked sa k tym konvenciam dostanem, uz to bude lepsie :)

tieto navody som nasiel aj ja.. len som to robil podla ineho, takze som to premenil tak ako je to v tom druhom linku.  Len mi to vracia Exception 1 a vobec neviem preco..

    public static void setNewItem() throws Exception{
        Connection conn = getMySqlConnection();
        String simpleProc = "{ call POHYB_N('PR', 'evach', ?) }";
        CallableStatement cs = conn.prepareCall(simpleProc);
        cs.registerOutParameter(1, java.sql.Types.INTEGER);
        cs.execute();
        int param1 = cs.getInt(1);
        System.out.println("param1=" + param1);
        conn.close();
    }

petergula

  • Stálý člen
  • **
  • Příspěvků: 1016
Re: JAVA + SQL
« Odpověď #3 kdy: 03 Května 2009, 20:28:29 »
Stale neviem, ci toto je spravne forum re riesenie java problemov(s ubuntu to ma asi pramalo spolocne).

Hod sem aku exception a na ktorom riadku Ti to hodilo. Java exception su dobre, ze vacsinou Ti povedia co je zle a na ktorom riadku.
ntbk Dell 6420 (Amd Ati, Intel i7, 4GB RAM, 256GB SSD ...)
secondary/u svokrovcov:
Xubuntu (64bit) ntbk Asus A6Je (Ati X1450, Intel Core2Duo T5500, 2.5GB RAM ...)

existpierre

  • Host
Re: JAVA + SQL
« Odpověď #4 kdy: 03 Května 2009, 20:32:09 »
ja viem ze to sem nepatri, ale toto je jedine forum, kde viem ze mi niekto odpovie hned, preto som to dal aj do obecnej diskusie, kde je takych vela.

ved som napisal ze exception mi vypisalo len "1" a program sa ukoncil
Kód: [Vybrat]
run:
1
Java Result: 1
BUILD SUCCESSFUL (total time: 1 second)
« Poslední změna: 03 Května 2009, 20:34:56 od eXistPierre »

petergula

  • Stálý člen
  • **
  • Příspěvků: 1016
Re: JAVA + SQL
« Odpověď #5 kdy: 03 Května 2009, 20:48:36 »
Pisal si
Citace
Len mi to vracia Exception 1 a vobec neviem preco..

ale podla Tvojho vypisu:
Citace
run:
1
Java Result: 1
BUILD SUCCESSFUL (total time: 1 second)

Ti to normalne zbehne (ziadna exception nebola vyvolana) a vrati Ti to nejaku hodnotu 1, asi tipujem vysledok Tvojej procedury, ktoru volas.
ntbk Dell 6420 (Amd Ati, Intel i7, 4GB RAM, 256GB SSD ...)
secondary/u svokrovcov:
Xubuntu (64bit) ntbk Asus A6Je (Ati X1450, Intel Core2Duo T5500, 2.5GB RAM ...)

existpierre

  • Host
Re: JAVA + SQL
« Odpověď #6 kdy: 03 Května 2009, 20:59:07 »
keby mi to normalne zbehlo, tak sa mi spusti aplikacia. ked zakomentujem tu funkciu v inej triede, tak to ide normalne. Ked je tam, tak sa to ukonci a vypise jedna. ked vytvorim connection a nasledne ho zatvorim, tak to ide.. ale ked tam vlozim preparecall() a execute(), tak to uz nejde

existpierre

  • Host
Re: JAVA + SQL
« Odpověď #7 kdy: 03 Května 2009, 21:02:29 »
upravil som to tak, aby bolo vidno ze je to exception prave ztadial:

Kód: [Vybrat]
    public static void setNewItem() throws Exception{
        try{
        Connection conn = getMySqlConnection();
        String simpleProc = "{ CALL POHYB_N('PR', 'pch', ?) }";
        CallableStatement cs = conn.prepareCall(simpleProc);
        cs.registerOutParameter(1, java.sql.Types.INTEGER);
        cs.execute();
        int param1 = cs.getInt(1);
        System.out.println("param1=" + param1);
        conn.close();
        }catch (Exception ex) {
            DialogErr("Zachytena chyba: Exception dava", "setNewItem()", ex);
        }
    }


VYSTUP:

existpierre

  • Host
Re: JAVA + SQL
« Odpověď #8 kdy: 03 Května 2009, 21:18:54 »
Uz to funguje !!!

Kód: [Vybrat]
    public static void setNewItem() throws Exception{
        try{
        Connection conn = getMySqlConnection();
        String simpleProc = "{ CALL POHYB_N('PR', 'pch', @CISLO) }";
        Statement cs = conn.prepareCall(simpleProc);
        cs.execute(simpleProc);
        conn.close();
        }catch (Exception ex) {
            DialogErr("Zachytena chyba: Exception dava", "setNewItem()", ex);
        }
    }

CallableStatement som zmenil na Statement a dal som to do procedury execute

 

Provoz zaštiťuje spolek OpenAlt.