Badam to przez około 3 godziny dzisiaj i czuję, że jestem blisko, ale mam kilka pytań. Najlepsze źródło informacji, które znalazłem do tej pory, znajduje się tutaj: https://stackoverflow.com/a/2840358, ale nie odpowiada na wszystkie moje pytania.Jak wygenerować adres URL bazy danych JDBC?
Nieco tła: używam Microsoft SQL Server 2014 i sprawdziłem, czy adres IP 127.0.0.1 jest aktywny i włączony z portem 1433. Nie mam problemów z łączeniem się z bazą danych za pomocą programu SQL Server na tym samym komputerze, ale próbuję połączyć się za pomocą napisanego przeze mnie programu Java, który obecnie podaje ten błąd: com.microsoft.sqlserver.jdbc.SQLServerException: Numer portu 1433/R2M_Database jest niepoprawny. Jestem tym zdezorientowany, ponieważ wiem, że port 1433 jest poprawny i wiem, że baza danych, z którą chcę się połączyć, nazywa się R2M_Database. Oto moje pytania wraz z moim kodem źródłowym.
1.) Jaka jest różnica między podkategoriami "mysql" i "sqlserver" i skąd mam wiedzieć, które z nich należy zastosować? (Jestem prawie pewien, że mam używać sqlserver, ale na wszelki wypadek)
2.) Jak mogę zapewnić, że używam właściwej nazwy hosta? (Jestem prawie pewien, że 127.0.0.1/localhost jest tym, którego mam używać, ale jak będę mógł uruchomić ten program z innych maszyn, aby uzyskać dostęp do bazy danych?)
3.) Czy są jakieś zewnętrzne problemy, które mogą powodować takie problemy, jak zapory ogniowe lub hasła? (Jestem prawie pewna, że nazwa użytkownika i hasło są poprawne, jak to oni używam z powodzeniem uzyskać połączenie w Microsoft SQL Server 2014)
EDIT:
import java.sql.DriverManager;
import java.io.BufferedReader;
import java.io.FileReader;
import org.apache.ibatis.jdbc.ScriptRunner;
public class SQLTest {
public static void main(String[] args){
String script = "CreatePersons.sql";
try {
Class.forName("com.microsoft.sqlserver.jdbc.SQLServerDriver");
new ScriptRunner(DriverManager.getConnection("jdbc:sqlserver://127.0.0.1:1433;databaseName=R2M_Database", userName, password))
.runScript(new BufferedReader(new FileReader(script)));
} catch (Exception e) {
System.err.println(e);
}
}
}
Zrobiłem małą zmianę składni (; databaseName = zamiast /), a teraz otrzymuję ten błąd:
com.microsoft.sqlserver.jdbc.SQLServerException: Logowanie nie powiodło się dla użytkownika "RSquaredMacro". ClientConnectionId: 35281a40-0f87-42e4-bc46-b9a81a371529
Jeśli występują problemy z połączeniem, najprawdopodobniej problemem jest to, że nie zostały jeszcze włączone TCP/IP listener na porcie 1433. Szybkie polecenie "netstat -an" powie Ci, czy go słuchasz. Sprawdź i skomentuj, co dostałeś ??? –
To jest to, co otrzymałem, gdy zrobiłem "netstat -an": [Obraz logu] (http://i.imgur.com/vjh2LZO) – user1654889
Jak na rysunku, nr portu. 1433 nasłuchuje.Tak, to wcale nie jest problem! –