połączenie z bazą danych

0

Witam, podczas próby połączenia z bazą danych wyskakuje mi taki błąd:

 
java.lang.ClassNotFoundException: com.sybase.jdbc3.jdbc.SybDataSource
        at java.net.URLClassLoader$1.run(URLClassLoader.java:202)
        at java.security.AccessController.doPrivileged(Native Method)
        at java.net.URLClassLoader.findClass(URLClassLoader.java:190)
        at java.lang.ClassLoader.loadClass(ClassLoader.java:307)
        at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:301)
        at java.lang.ClassLoader.loadClass(ClassLoader.java:248)
        at java.lang.Class.forName0(Native Method)
        at java.lang.Class.forName(Class.java:169)
        at PolaczenieBazy.openDatabase(PolaczenieBazy.java:19)
        at FrameDziennik.ZalogujActionPerformed(FrameDziennik.java:145)
        at FrameDziennik.access$000(FrameDziennik.java:25)
        at FrameDziennik$1.actionPerformed(FrameDziennik.java:61)
        at javax.swing.AbstractButton.fireActionPerformed(AbstractButton.java:1995)
        at javax.swing.AbstractButton$Handler.actionPerformed(AbstractButton.java:2318)
        at javax.swing.DefaultButtonModel.fireActionPerformed(DefaultButtonModel.java:387)
        at javax.swing.DefaultButtonModel.setPressed(DefaultButtonModel.java:242)
        at javax.swing.plaf.basic.BasicButtonListener.mouseReleased(BasicButtonListener.java:236)
        at java.awt.Component.processMouseEvent(Component.java:6267)
        at javax.swing.JComponent.processMouseEvent(JComponent.java:3267)
        at java.awt.Component.processEvent(Component.java:6032)
        at java.awt.Container.processEvent(Container.java:2041)
        at java.awt.Component.dispatchEventImpl(Component.java:4630)
        at java.awt.Container.dispatchEventImpl(Container.java:2099)
        at java.awt.Component.dispatchEvent(Component.java:4460)
        at java.awt.LightweightDispatcher.retargetMouseEvent(Container.java:4577)
        at java.awt.LightweightDispatcher.processMouseEvent(Container.java:4238)
        at java.awt.LightweightDispatcher.dispatchEvent(Container.java:4168)
        at java.awt.Container.dispatchEventImpl(Container.java:2085)
        at java.awt.Window.dispatchEventImpl(Window.java:2478)
        at java.awt.Component.dispatchEvent(Component.java:4460)
        at java.awt.EventQueue.dispatchEvent(EventQueue.java:599)
        at java.awt.EventDispatchThread.pumpOneEventForFilters(EventDispatchThread.java:269)
        at java.awt.EventDispatchThread.pumpEventsForFilter(EventDispatchThread.java:184)
        at java.awt.EventDispatchThread.pumpEventsForHierarchy(EventDispatchThread.java:174)
        at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:169)
        at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:161)
        at java.awt.EventDispatchThread.run(EventDispatchThread.java:122)
Exception in thread "AWT-EventQueue-0" java.lang.NullPointerException
        at PolaczenieBazy.access(PolaczenieBazy.java:68)
        at FrameDziennik.ZalogujActionPerformed(FrameDziennik.java:149)
        at FrameDziennik.access$000(FrameDziennik.java:25)
        at FrameDziennik$1.actionPerformed(FrameDziennik.java:61)
        at javax.swing.AbstractButton.fireActionPerformed(AbstractButton.java:1995)
        at javax.swing.AbstractButton$Handler.actionPerformed(AbstractButton.java:2318)
        at javax.swing.DefaultButtonModel.fireActionPerformed(DefaultButtonModel.java:387)
        at javax.swing.DefaultButtonModel.setPressed(DefaultButtonModel.java:242)
        at javax.swing.plaf.basic.BasicButtonListener.mouseReleased(BasicButtonListener.java:236)
        at java.awt.Component.processMouseEvent(Component.java:6267)
        at javax.swing.JComponent.processMouseEvent(JComponent.java:3267)
        at java.awt.Component.processEvent(Component.java:6032)
        at java.awt.Container.processEvent(Container.java:2041)
        at java.awt.Component.dispatchEventImpl(Component.java:4630)
        at java.awt.Container.dispatchEventImpl(Container.java:2099)
        at java.awt.Component.dispatchEvent(Component.java:4460)
        at java.awt.LightweightDispatcher.retargetMouseEvent(Container.java:4577)
        at java.awt.LightweightDispatcher.processMouseEvent(Container.java:4238)
        at java.awt.LightweightDispatcher.dispatchEvent(Container.java:4168)
        at java.awt.Container.dispatchEventImpl(Container.java:2085)
        at java.awt.Window.dispatchEventImpl(Window.java:2478)
        at java.awt.Component.dispatchEvent(Component.java:4460)
        at java.awt.EventQueue.dispatchEvent(EventQueue.java:599)
        at java.awt.EventDispatchThread.pumpOneEventForFilters(EventDispatchThread.java:269)
        at java.awt.EventDispatchThread.pumpEventsForFilter(EventDispatchThread.java:184)
        at java.awt.EventDispatchThread.pumpEventsForHierarchy(EventDispatchThread.java:174)
        at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:169)
        at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:161)
        at java.awt.EventDispatchThread.run(EventDispatchThread.java:122)

W czym tkwi problem?

0

Nie załadował Ci klasy:
java.lang.ClassNotFoundException: com.sybase.jdbc3.jdbc.SybDataSource

na razie tyle, bo dawno w javie nie pisałem ;]

0

teraz mam taki problem:

 Exception in thread "AWT-EventQueue-0" java.lang.NullPointerException
        at PolaczenieBazy.access(PolaczenieBazy.java:63)
        at FrameDziennik.ZalogujActionPerformed(FrameDziennik.java:149)
        at FrameDziennik.access$000(FrameDziennik.java:25)
        at FrameDziennik$1.actionPerformed(FrameDziennik.java:61)
        at javax.swing.AbstractButton.fireActionPerformed(AbstractButton.java:1995)
        at javax.swing.AbstractButton$Handler.actionPerformed(AbstractButton.java:2318)
        at javax.swing.DefaultButtonModel.fireActionPerformed(DefaultButtonModel.java:387)
        at javax.swing.DefaultButtonModel.setPressed(DefaultButtonModel.java:242)
        at javax.swing.plaf.basic.BasicButtonListener.mouseReleased(BasicButtonListener.java:236)
        at java.awt.Component.processMouseEvent(Component.java:6267)
        at javax.swing.JComponent.processMouseEvent(JComponent.java:3267)
        at java.awt.Component.processEvent(Component.java:6032)
        at java.awt.Container.processEvent(Container.java:2041)
        at java.awt.Component.dispatchEventImpl(Component.java:4630)
        at java.awt.Container.dispatchEventImpl(Container.java:2099)
        at java.awt.Component.dispatchEvent(Component.java:4460)
        at java.awt.LightweightDispatcher.retargetMouseEvent(Container.java:4577)
        at java.awt.LightweightDispatcher.processMouseEvent(Container.java:4238)
        at java.awt.LightweightDispatcher.dispatchEvent(Container.java:4168)
        at java.awt.Container.dispatchEventImpl(Container.java:2085)
        at java.awt.Window.dispatchEventImpl(Window.java:2478)
        at java.awt.Component.dispatchEvent(Component.java:4460)
        at java.awt.EventQueue.dispatchEvent(EventQueue.java:599)
        at java.awt.EventDispatchThread.pumpOneEventForFilters(EventDispatchThread.java:269)
        at java.awt.EventDispatchThread.pumpEventsForFilter(EventDispatchThread.java:184)
        at java.awt.EventDispatchThread.pumpEventsForHierarchy(EventDispatchThread.java:174)
        at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:169)
        at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:161)
        at java.awt.EventDispatchThread.run(EventDispatchThread.java:122)
BUILD SUCCESSFUL (total time: 10 seconds)

Chciałbym połączyć się z moją bazą stworzona na serwerze Microsoft Sql Serwer, używam takiego kodu:

Connection connection = null;
try
{
// the sql server driver string
Class.forName("com.microsoft.jdbc.sqlserver.SQLServerDriver");

  // the sql server url
  String url = "jdbc:microsoft:sqlserver:*localhost:1433;DatabaseName=asd"; * tutaj wszystko ok?

  // get the sql server database connection
  connection = DriverManager.getConnection(url,"dba", "sql");

  // now do whatever you want to do with the connection
  // ...

}
catch (ClassNotFoundException e)
{
  e.printStackTrace();
  System.exit(1);
}
catch (SQLException e)
{
  e.printStackTrace();
  System.exit(2);
}

Robię to po raz pierwszy więc proszę o pomoc. Ściągnąłem sterownik jdbc, wystarczy go zainstalować czy też trzeba jakies referencje dodawać w javie?

0

wystarczy go wgrać do odpowiedniego katalogu do którego jest ustawiona odpowiednio ścieżka dostępu.
Oczywiście w MSSQL musisz mieć założoną bazę i użytkownika ze stosownymi uprawnieniami. Z kodu który podałeś wynika ze Twoja baza nazywa się asd a użytkownik to dba hasło to sql.

0

Wyświetla mi teraz taki błąd:

user image
Proszę o radę co z tym zrobić.

0

już naprawione, przepraszam za offtopic.

0

Oto mój kod:

import java.sql.*;
import com.microsoft.jdbc.sqlserver.*;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.SQLException;

/**
  * Microsoft SQL Server JDBC test program
  */
public class Test {
  public Test() throws Exception {
    // Get connection
    DriverManager.registerDriver(new
    com.microsoft.jdbc.sqlserver.SQLServerDriver());
    Connection connection = DriverManager.getConnection(
    "jdbc:microsoft:sqlserver://localhost:1433","dba","sql");
    if (connection != null) {
     System.out.println();
      System.out.println("Successfully connected");
      System.out.println();
      // Meta data
      DatabaseMetaData meta = connection.getMetaData();
      System.out.println("\nDriver Information");
      System.out.println("Driver Name: "
       + meta.getDriverName());
      System.out.println("Driver Version: "
       + meta.getDriverVersion());
      System.out.println("\nDatabase Information ");
      System.out.println("Database Name: "
       + meta.getDatabaseProductName());
      System.out.println("Database Version: "+
      meta.getDatabaseProductVersion());
    }
 } // Test
 public static void main (String args[]) throws Exception {
  Test test = new Test();
 }
}

 

wyswietla mi taki błąd:

 
run:
Exception in thread "main" java.sql.SQLException: [Microsoft][SQLServer 2000 Driver for JDBC]Error establishing socket.
        at com.microsoft.jdbc.base.BaseExceptions.createException(Unknown Source)
        at com.microsoft.jdbc.base.BaseExceptions.getException(Unknown Source)
        at com.microsoft.jdbc.base.BaseExceptions.getException(Unknown Source)
        at com.microsoft.jdbc.sqlserver.tds.TDSConnection.<init>(Unknown Source)
        at com.microsoft.jdbc.sqlserver.SQLServerImplConnection.open(Unknown Source)
        at com.microsoft.jdbc.base.BaseConnection.getNewImplConnection(Unknown Source)
        at com.microsoft.jdbc.base.BaseConnection.open(Unknown Source)
        at com.microsoft.jdbc.base.BaseDriver.connect(Unknown Source)
        at java.sql.DriverManager.getConnection(DriverManager.java:582)
        at java.sql.DriverManager.getConnection(DriverManager.java:185)
        at Test.<init>(Test.java:15)
        at Test.main(Test.java:36)
Java Result: 1

Co z tym fantem zrobić?

0

Rozumiem ze przerasta cię wpisanie błędu w google? o_O
http://support.microsoft.com/kb/313178
Na moje oko to nie postawiałeś MSSQL odpowiednio (tak, trzeba pewne opcje ustawić...) albo podałeś złe dane podczas łaczenia się z przez JDBC.
Spróbuj tak: (jeśli user i pass są poprawne i w ustawieniach MSSQL umożliwiłeś łączenie się z tym użytkownikiem!)

Connection connection = DriverManager.getConnection("jdbc:sqlserver://localhost","dba","sql");

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