Novo

Forum kao aplikacija na telefonu

Dodajte forum na početni ekran i koristite ga kao aplikaciju, sa menijem na dnu ekrana.

  • 22 odgovora
  • 6.858 pregleda

Najnovija ↓

Jdbc MySQL pomoc? 14.08.2012. u 19:20 · pre 173 meseca
izmenjeno 1 put, poslednji put Boyka 15.08.2012. u 10:03
  1. Boyka15.08.2012. u 10:03zapis iz teksta poruke
#1
Posle nesto vise od godinu dana C#.net-a presao sam na Javu, evo vec 2 meseca, skontao sam da je mnoogo stvari apsolutno isto ili slicno i da se mnoogo brzo uci drugi jezik, pa tako i JDBC, ono sto mi je malo cudno jeste uloga ovog jdbc driver-a, takodje sam primetio da je JDBC jednostavniji od ADO.net-a koji cini mi se ima mnogo vise ADO.net klasa...

Ono sto hocu je da mi neko ispise najjednostavniji primer ubacivanja podataka iz tekstfilda ili stringa u bazu...

Ja sam nesto ovako pokusao, ali mi izbacuje Exception sa porukom da je problem u jdbc driver-u?

Code:

public void actionPerformed(ActionEvent arg0) 
{
    Connection con = null;
    Statement st = null;
try {
           Class.forName("com.mysql.jdbc.Driver"); //ovo me malo buni i tu pokazuje gresku
    con = DriverManager.getConnection("jdbc:mysql://localhost/mojasema","root","123");
    st = con.createStatement(); 
           String sql = "insert into ljudi(Ime_Prezime,Maticni_Broj)values("+textField.getText()+","+textField_1.getText()+")";
    st.executeQuery(sql); 
    JOptionPane.showMessageDialog(null, "Uspesno ubaceno!");
    } catch (ClassNotFoundException e) {
    JOptionPane.showMessageDialog(null, e);
    } catch (SQLException e) {
    JOptionPane.showMessageDialog(null,e);
      }
}


Ja sam ovde u con stringu isao ovako

("ime server//naziv baze,user name, password")
Da nije mozda problem u portu, jer ja koristim port 3307, a ne default 3306... to sam u visual studiu uvek morao menjati..
Re: Jdbc MySQL pomoc? 14.08.2012. u 19:50 · pre 173 meseca #2
copy/paste celu Exception.
Re: Jdbc MySQL pomoc? 14.08.2012. u 22:10 · pre 173 meseca #3
Citat:
nemnesic:
copy/paste celu Exception.


? Zasto bih kopirao izuzetke?
Re: Jdbc MySQL pomoc? 14.08.2012. u 22:17 · pre 173 meseca #4
?...da bi znao koko da ti pomognem...jer kazes da ti " izbacuje Exception sa porukom da je problem u jdbc driver-u" a to moze da bude zbog 100 razloga
Re: Jdbc MySQL pomoc? 14.08.2012. u 22:41 · pre 173 meseca #5
Jedan bivši kolega kaže: stacktrace or it didn't happen :)
Sviđa mi se1
Re: Jdbc MySQL pomoc? 15.08.2012. u 08:28 · pre 173 meseca #6
Vjerovatno ti jar file sa mysql driver-om nije na classpath-u. Ali sve će ti biti jasno ako svoj kod zamjeniš ovim i pratiš console output.

Code:

public void actionPerformed(ActionEvent arg0) {
    Connection con = null;
    Statement st = null;
    try {
        Class.forName("com.mysql.jdbc.Driver"); //ovo me malo buni i tu pokazuje gresku
        con = DriverManager.getConnection("jdbc:mysql://localhost/mojasema","root","123");
        st = con.createStatement(); 
        String sql = "insert into ljudi(Ime_Prezime,Maticni_Broj)values("+textField.getText()+","+textField_1.getText()+")";
        st.executeQuery(sql); 
        JOptionPane.showMessageDialog(null, "Uspesno ubaceno!");
    } catch (Exception e) {
        e.printStackTrace();
        JOptionPane.showMessageDialog(null, e);
    }
}
Re: Jdbc MySQL pomoc? 15.08.2012. u 09:56 · pre 173 meseca #7
Console Exception:
Code:

           java.lang.ClassNotFoundException: com.mysql.jdbc.Driver
    at java.net.URLClassLoader$1.run(Unknown Source)
    at java.net.URLClassLoader$1.run(Unknown Source)
    at java.security.AccessController.doPrivileged(Native Method)
    at java.net.URLClassLoader.findClass(Unknown Source)
    at java.lang.ClassLoader.loadClass(Unknown Source)
    at sun.misc.Launcher$AppClassLoader.loadClass(Unknown Source)
    at java.lang.ClassLoader.loadClass(Unknown Source)
    at java.lang.Class.forName0(Native Method)
    at java.lang.Class.forName(Unknown Source)
    at JDBC_vezba$2.actionPerformed(JDBC_vezba.java:60)
    at javax.swing.AbstractButton.fireActionPerformed(Unknown Source)
    at javax.swing.AbstractButton$Handler.actionPerformed(Unknown Source)
    at javax.swing.DefaultButtonModel.fireActionPerformed(Unknown Source)
    at javax.swing.DefaultButtonModel.setPressed(Unknown Source)
    at javax.swing.plaf.basic.BasicButtonListener.mouseReleased(Unknown Source)
    at java.awt.Component.processMouseEvent(Unknown Source)
    at javax.swing.JComponent.processMouseEvent(Unknown Source)
    at java.awt.Component.processEvent(Unknown Source)
    at java.awt.Container.processEvent(Unknown Source)
    at java.awt.Component.dispatchEventImpl(Unknown Source)
    at java.awt.Container.dispatchEventImpl(Unknown Source)
    at java.awt.Component.dispatchEvent(Unknown Source)
    at java.awt.LightweightDispatcher.retargetMouseEvent(Unknown Source)
    at java.awt.LightweightDispatcher.processMouseEvent(Unknown Source)
    at java.awt.LightweightDispatcher.dispatchEvent(Unknown Source)
    at java.awt.Container.dispatchEventImpl(Unknown Source)
    at java.awt.Window.dispatchEventImpl(Unknown Source)
    at java.awt.Component.dispatchEvent(Unknown Source)
    at java.awt.EventQueue.dispatchEventImpl(Unknown Source)
    at java.awt.EventQueue.access$000(Unknown Source)
    at java.awt.EventQueue$3.run(Unknown Source)
    at java.awt.EventQueue$3.run(Unknown Source)
    at java.security.AccessController.doPrivileged(Native Method)
    at java.security.ProtectionDomain$1.doIntersectionPrivilege(Unknown Source)
    at java.security.ProtectionDomain$1.doIntersectionPrivilege(Unknown Source)
    at java.awt.EventQueue$4.run(Unknown Source)
    at java.awt.EventQueue$4.run(Unknown Source)
    at java.security.AccessController.doPrivileged(Native Method)
    at java.security.ProtectionDomain$1.doIntersectionPrivilege(Unknown Source)
    at java.awt.EventQueue.dispatchEvent(Unknown Source)
    at java.awt.EventDispatchThread.pumpOneEventForFilters(Unknown Source)
    at java.awt.EventDispatchThread.pumpEventsForFilter(Unknown Source)
    at java.awt.EventDispatchThread.pumpEventsForHierarchy(Unknown Source)
    at java.awt.EventDispatchThread.pumpEvents(Unknown Source)
    at java.awt.EventDispatchThread.pumpEvents(Unknown Source)
    at java.awt.EventDispatchThread.run(Unknown Source)


Koliko vidim putanja do baze nije ispravna
Re: Jdbc MySQL pomoc? 15.08.2012. u 11:50 · pre 173 meseca #8
Kao sto ti je neko vec rekao, fali ti MySQL driver (jar) ili nije na classpath-u. Moras da ga skines odnekud i stavis na classpath, tj. objasnis gde se nalazi.

Ova linija u stack trace-u (exception) ti to kaze:
Citat:
java.lang.ClassNotFoundException: com.mysql.jdbc.Drive
Potpis
"The most likely way for the world to be destroyed, most experts agree, is by
accident. That's where we come in; we're computer professionals. We cause
accidents." - Nathaniel Borenstein
Re: Jdbc MySQL pomoc? 15.08.2012. u 13:24 · pre 173 meseca #9
Citat:
Dragan:
Kao sto ti je neko vec rekao, fali ti MySQL driver (jar) ili nije na classpath-u. Moras da ga skines odnekud i stavis na classpath, tj. objasnis gde se nalazi.

Ova linija u stack trace-u (exception) ti to kaze:
Citat:
java.lang.ClassNotFoundException: com.mysql.jdbc.Drive


Aaa konektor mi teba jel? Ovo > http://dev.mysql.com/downloads/connector/j/

trebao mi je i za c#, sad cu da probam...
Re: Jdbc MySQL pomoc? 16.08.2012. u 10:24 · pre 172 meseca #10

Pored nedostata drajvera moraces da obratis kako ubacujes stvari u bazu. Da razliujes tipove podataka.
npr ako su ti Ime_Prezime i Maticni_Broj verdnosti stringa moraces da string vrednsoti stavis izmedju ' '
"insert into ljudi(Ime_Prezime,Maticni_Broj)values("+ "'"+ textField.getText()+"'"+","+"'"+textField_1.getText()+"'"+")";

drugi je meni laksi da koristis PreparedStatement, eno ti neki primer

public boolean addResultMetrics(Connection conn, String recordId, String metricsId, String schemeId, String classId, Integer year, Double count, Double fraction) {
try {
PreparedStatement stmt = conn
.prepareStatement("insert into MARC21RECORD_METRICS (RECORDID, CFMETRICSID, CFCLASSSCHEMEID, CFCLASSID, CFYEAR, CFCOUNT, CFFRACTION) values (?, ?, ?, ?, ?, ?, ?)");
stmt.setString(1, recordId);
stmt.setString(2, metricsId);
stmt.setString(3, schemeId);
stmt.setString(4, classId);
stmt.setInt(5, year);
stmt.setDouble(6, count);
if(fraction != null)
stmt.setDouble(7, fraction);
else
stmt.setNull(7, Types.DOUBLE);


stmt.executeUpdate();
stmt.close();

return true;
} catch (SQLException e) {
log.fatal(e);
log.fatal("Cannot add resultMetrics: " + recordId + " and " + metricsId);
}
return false;
}
Re: Jdbc MySQL pomoc? 16.08.2012. u 11:46 · pre 172 meseca #11
Provalio sam za taj PreparedStatement radi veoma slično kao u C#-u com.Parameters.AddWithValue("ime kolone",odakle ubacuje, textbox);
Re: Jdbc MySQL pomoc? 16.08.2012. u 12:31 · pre 172 meseca #12
Inače, ovo:

Code:
String sql = "insert into ljudi(Ime_Prezime,Maticni_Broj)values("+textField.getText()+","+textField_1.getText()+")";


nemoj nikad ni slučajno da radiš. Ni kod inserta, ni kod selecta, nikad.

Nego ako koristiš JDBC onda preparedstatemet + postavljanje parametara.
Re: Jdbc MySQL pomoc? 16.08.2012. u 14:39 · pre 172 meseca #13
Citat:
dule_ns:
Inače, ovo:

Code:
String sql = "insert into ljudi(Ime_Prezime,Maticni_Broj)values("+textField.getText()+","+textField_1.getText()+")";


nemoj nikad ni slučajno da radiš. Ni kod inserta, ni kod selecta, nikad.

Nego ako koristiš JDBC onda preparedstatemet + postavljanje parametara.


Sve je to lepo, samo kazi coveku zasto nikada. Elem u pitanju je mogucnost da neko naprvi SQL inject napad, znaci onaj textField.getText() vrati string tipa
Code:
"); drop table ljudi ; --"


A moze da bude bilo kakvo vrsljanje po bazi.

Druga stvar na koju bi ti skrenuo paznju jeste da ta vrsljanja sa bazom ne radis u event handleru zato sto to blokira GUI, ako se desi situacija tipa conection time out cela aplikacija se zamrzla kompletno. Za takve stvari uzmi pogledaj SwingWorker.
Re: Jdbc MySQL pomoc? 16.08.2012. u 15:46 · pre 172 meseca #14
@ByteCode

Naravno, u pravu si.

Ima tu još oko "zatvaranja" resursa (tu recimo primer od @kljunovi ne valja, trebalo bi u finally bloku da zatvara preparedstatement) ali mi je ovo palo u oči a prilično je opasno.

U svakom slučaju slažem se da je poželjno i obrazložiti.
Re: Jdbc MySQL pomoc? 21.08.2012. u 12:48 · pre 172 meseca #15
Brate jesi li se uspio konektovati?

Meni kad upisem

"java MySQLDemo"

izbaci ovu gresku:

Exception in thread "main" java.lang.ClassNotFoundException: com.mysql.jdbc.Driver


A kad pokusam

"java -classpath *.jar MySQLDemo"

kaze

Error: Could not find or load main class MySQLDemo


Ne kontam kako sad odjednom ne nalazi ovu glavnu klasu?
Pretpostavljam da je problem u putanjama, ali ne znam ni sta da "guglam" , a kamoli kako da popravim ovo.
Re: Jdbc MySQL pomoc? 21.08.2012. u 13:35 · pre 172 meseca #16
Probaj ovako:

Code:

java -classpath .;mysql-connector-TACAN-NAZIV-ARHIVE.jar;AKO-IMAS-JOS-ARHIVA.jar MySQLDemo
Sviđa mi se1
Re: Jdbc MySQL pomoc? 21.08.2012. u 18:50 · pre 172 meseca #17
Probao sam sad ovo:

Code:
java -classpath .;mysql-connector-java-5.1.21-bin.jar MySQLDemo


I izbaci mi ono usage pa upustva za upotrebu java komande.

Re: Jdbc MySQL pomoc? 21.08.2012. u 19:00 · pre 172 meseca #18
moras da ubacis punu putanju do "mysql-connector-java-5.1.21-bin.ja"
i stavi to izmedju ""

Code:
java -classpath .;"path/to/jar/mysql-connector-java-5.1.21-bin.jar" MySQLDemo




Citat:
vatri:
Probao sam sad ovo:

Code:
java -classpath .;mysql-connector-java-5.1.21-bin.jar MySQLDemo


I izbaci mi ono usage pa upustva za upotrebu java komande.


Re: Jdbc MySQL pomoc? 21.08.2012. u 19:13 · pre 172 meseca #19
Probao ovo:

Code:
java -classpath .;"/home/boris/Desktop/Java/MySQLDemo/mysql-connector-java-5.1.21-bin.jar" MySQLDemo



i ista stvar - izbaci ono usage.
Re: Jdbc MySQL pomoc? 22.08.2012. u 00:03 · pre 172 meseca
izmenjeno 1 put, poslednji put vatri 22.08.2012. u 00:30
  1. vatri22.08.2012. u 00:30zapis iz teksta poruke
#20
Evo konacno nadjoh rjesenje - samo treba znati kako i sta "guglati":

http://stackoverflow.com/quest...0/importing-external-jar-files

Znaci ja sam kompajlirao program bez ukljucivanja jdbc jar fajla u putanju.

@bantu: umjesto toga sto si ti stavljao (u parametru -cp) ";" treba staviti ":" na Linux sistemu.


Code:

javac -cp .:/home/boris/Desktop/Java/MySQLDemo/mysql-connector-java-5.1.21-bin.jar MySQLDemo.java 

java -cp .:/home/boris/Desktop/Java/MySQLDemo/mysql-connector-java-5.1.21-bin.jar MySQLDemo
Odgovori
Prijavite se da biste odgovorili u ovoj temi.PrijavaRegistracija

Premeštanje teme