Java+MySQL-jar nie działa

0

Witam,
mam taki krótki skrypt, który łączy sią z bazą MySQl i dodaje do tabeli nowy rekord:

 
import java.sql.*;

class Wybor
{ 
  public static void main(String[] args) 
  { 
    DB db = new DB();
    Connection conn=db.dbConnect("jdbc:mysql://10.243.7.96:3306/baza", "root", ""); 
  } 
} 
class DB
{
   public Connection dbConnect(String db_connect_string,String db_userid, String db_password)
   {
     try
     {
       Class.forName("com.mysql.jdbc.Driver").newInstance();
       Connection conn = DriverManager.getConnection(db_connect_string, db_userid, db_password);
      
       String query = " insert into szczegoly (x, y, z)" + " values (?, ?, ?)";
                        
        PreparedStatement preparedStmt = conn.prepareStatement(query);
        preparedStmt.setDouble (1, 1000);
        preparedStmt.setString (2, "b");
        preparedStmt.setString (3, "c");

        preparedStmt.execute();
        conn.close();

        return conn;      
      }
      catch (Exception e)
      {
        e.printStackTrace();
        return null;
      }
   }
}

Działa ok, ale po utworzeniu Jara już nie - program się uruchamia, ale nie dodaje rekordów. Ma ktoś jakiś pomysł co może być nie tak? Wcześniej skopiowałem do katalogu z javą wymaganego mysql-connector-java oraz edytowałem classpath. Pracuję na BlueJ.

Z javą mam do czynienia zaledwie od 2 tygodni, więc proszę o wyrozumiałość.

0

Nie dodaje czy też sypie błędami.

0

Nie sypie żadnymi błędami. Jeśli w BlueJ wywołam metodę main klasy Wybor to działa ok, po utworzeniu jara (Main class: Wybor) już nie.

0

Problem rozwiązany. Poprzednio skopiowałem mysql-connector-java tylko do katalogu "jdk....\lib\ext", przed chwilą zrobiłem to samo dla "jre....\lib\ext" i teraz po utworzeniu jara wszystko jest ok. I w tym momencie nasuwa mi się takie pytanie. Skąd użytkownik ma wiedzieć, że musi sobie coś doinstalować do JRE (jakaś inforamcja, automatyczne pobieranie - jak sobie z tym poradzić)?

0

Nie wiem dlaczego wszyscy(przynajmniej Ci, których widziałem tu na forum) łączą się z bazą danych przez DriverManager'a, a nie jak zaleca tutorial javy przez DataSource? Może setry do mysql'a nie mają tego zaimplementowanego?

Możliwe, że nie pakuje Ci do jar'a sterowników do bazy, bo nigdzie ich nie importujesz, a nie wiem czy kompilator, a raczej linker się zorientuje, że jeszcze paczka ze sterownikami jest potrzebna tylko po tym: Class.forName("com.mysql.jdbc.Driver").newInstance();

1 użytkowników online, w tym zalogowanych: 0, gości: 1