Se connecter à une base de données SQL Server
bonjour,:D
J'ai un code qui ouvre la connexion à la base de donnée; Ce code est issue du code c++ qui marchait. Je vous donne le code et le message d'erreur.Le problème semble venir de la connectionString, je l'ai allégé pour garder les éléments obligatoire. Que faut il mettre pour se connecter?
Code:
1 2 3 4 5 6 7 8 9
|
try
{
Class.forName("com.microsoft.sqlserver.jdbc.SQLServerDriver" ).newInstance();
String connectionString ="Timeout=15;Type System Version=SQL Server 2014;database=COHERENCE;server=Xantia\\SQLEXPRESS";
connection = DriverManager.getConnection( connectionString);
stmt = connection.createStatement();
Data.m_bServerConnected = true;
} |
ce code provoque une exception qui est documenté à suivre:
Code:
1 2 3 4 5 6 7 8 9 10
|
java.sql.SQLException: No suitable driver found for Timeout=15;Type System Version=SQL Server 2014;database=COHERENCE;server=Xantia\SQLEXPRESS
at java.sql.DriverManager.getConnection(Unknown Source)
at java.sql.DriverManager.getConnection(Unknown Source)
at com.all4tec.matelo.linguistique.wizards.InterbaseManager.ConnectServer(InterbaseManager.java:29)
at com.all4tec.matelo.linguistique.wizards.InterbaseManager.ExecuteSelectRequest(InterbaseManager.java:56)
at com.all4tec.matelo.linguistique.wizards.MissionDatabaseManager.ReadWork(MissionDatabaseManager.java:74)
at com.all4tec.matelo.linguistique.wizards.LinguistiqueImportWizard.RecupereNomDesFichier(LinguistiqueImportWizard.java:60)
at com.all4tec.matelo.linguistique.wizards.LinguistiqueImportWizard$1.run(LinguistiqueImportWizard.java:86)
at org.eclipse.jface.operation.ModalContext$ModalContextThread.run(ModalContext.java:121) |
Celui qui m'amènera vers la solution sera :ccool:
le class.forName se passe bien
et donc les liens que vous m'avez indiqués ne sont pas applicables
ca semble moin mal marcher
bonjour:D
J'ai suivi vos conseils; Le résultat est que je sort toujours en erreur, mais à l'issue du time-out.
Je vous met le code en question:
Code:
1 2 3 4 5 6
|
//Class.forName("com.microsoft.sqlserver.jdbc.SQLServerDriver" ).newInstance();
String url = "jdbc:sqlserver://host:1433;";
String connectionString ="database = COHERENCE;server = xantia\\SQLEXPRESS";
connection = DriverManager.getConnection( url + connectionString);
stmt = connection.createStatement(); |
d'ailleurs le message d'erreur a changé:
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15
|
com.microsoft.sqlserver.jdbc.SQLServerException: Échec de la connexion TCP/IP à l'hôte xantia, port 1433. Erreur*: «*Connection refused: connect. Vérifiez les propriétés de connexion, assurez-vous qu'une instance de SQL Server est en cours d'exécution sur l'hôte et accepte les connexions TCP/IP au port, et vérifiez qu'aucun pare-feu ne bloque les connexions TCP au port.*».
at com.microsoft.sqlserver.jdbc.SQLServerException.makeFromDriverError(SQLServerException.java:171)
at com.microsoft.sqlserver.jdbc.SQLServerConnection.connectHelper(SQLServerConnection.java:1033)
at com.microsoft.sqlserver.jdbc.SQLServerConnection.login(SQLServerConnection.java:817)
at com.microsoft.sqlserver.jdbc.SQLServerConnection.connect(SQLServerConnection.java:700)
at com.microsoft.sqlserver.jdbc.SQLServerDriver.connect(SQLServerDriver.java:842)
at java.sql.DriverManager.getConnection(Unknown Source)
at java.sql.DriverManager.getConnection(Unknown Source)
at com.all4tec.matelo.linguistique.wizards.InterbaseManager.ConnectServer(InterbaseManager.java:31)
at com.all4tec.matelo.linguistique.wizards.InterbaseManager.ExecuteSelectRequest(InterbaseManager.java:58)
at com.all4tec.matelo.linguistique.wizards.MissionDatabaseManager.ReadWork(MissionDatabaseManager.java:74)
at com.all4tec.matelo.linguistique.wizards.LinguistiqueImportWizard.RecupereNomDesFichier(LinguistiqueImportWizard.java:60)
at com.all4tec.matelo.linguistique.wizards.LinguistiqueImportWizard$1.run(LinguistiqueImportWizard.java:86)
at org.eclipse.jface.operation.ModalContext$ModalContextThread.run(ModalContext.java:121) |
J'ai vérifié que le serveur était en cours d'exécution par deux processus d'abord il figure dans la liste des processus en cours, de plus il accepte la connexion de SSMS
Comment vérifier le port 1433
Je ne sait pas comment vérifier?
J'ai copié coller ton code
J'ai retiré les lignes que vous demandez
le code est comme suit
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13
|
Class.forName("com.microsoft.sqlserver.jdbc.SQLServerDriver" ).newInstance();
Properties props = new Properties();
props.setProperty("user","XANTIA\\JeanNoël");
//props.setProperty("Type System Version", "SQL Server 2014");
props.setProperty("autoReconnect", "true");
//props.setProperty("Timeout", "15");
props.setProperty("IntegratedSecurity", "true");
//props.setProperty("Pooling", "true");
//props.setProperty("Max Pool Size", "100");
//props.setProperty("MultipleActiveResultSets", "true");
String url = "jdbc:sqlserver://xantia\\SQLEXPRESS:1433;database=COHERENCE";
connection = DriverManager.getConnection( url, props); |
et le résultat est toujours le même:
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13
|
com.microsoft.sqlserver.jdbc.SQLServerException: Échec de la connexion TCP/IP à l'hôte xantia, port 1433. Erreur*: «*Connection refused: connect. Vérifiez les propriétés de connexion, assurez-vous qu'une instance de SQL Server est en cours d'exécution sur l'hôte et accepte les connexions TCP/IP au port, et vérifiez qu'aucun pare-feu ne bloque les connexions TCP au port.*».
at com.microsoft.sqlserver.jdbc.SQLServerException.makeFromDriverError(SQLServerException.java:171)
at com.microsoft.sqlserver.jdbc.SQLServerConnection.connectHelper(SQLServerConnection.java:1033)
at com.microsoft.sqlserver.jdbc.SQLServerConnection.login(SQLServerConnection.java:817)
at com.microsoft.sqlserver.jdbc.SQLServerConnection.connect(SQLServerConnection.java:700)
at com.microsoft.sqlserver.jdbc.SQLServerDriver.connect(SQLServerDriver.java:842)
at java.sql.DriverManager.getConnection(Unknown Source)
at java.sql.DriverManager.getConnection(Unknown Source)
at com.all4tec.matelo.linguistique.wizards.InterbaseManager.ConnectServer(InterbaseManager.java:40)
at com.all4tec.matelo.linguistique.wizards.MissionDatabaseManager.OpenDatabaseCoherence(MissionDatabaseManager.java:42)
at com.all4tec.matelo.linguistique.wizards.LinguistiqueImportWizard$1.run(LinguistiqueImportWizard.java:85)
at org.eclipse.jface.operation.ModalContext$ModalContextThread.run(ModalContext.java:121) |
et avec le code:
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13
|
Class.forName("com.microsoft.sqlserver.jdbc.SQLServerDriver" ).newInstance();
Properties props = new Properties();
props.setProperty("user","XANTIA\\JeanNoël");
//props.setProperty("Type System Version", "SQL Server 2014");
//props.setProperty("autoReconnect", "true");
//props.setProperty("Timeout", "15");
//props.setProperty("IntegratedSecurity", "true");
//props.setProperty("Pooling", "true");
//props.setProperty("Max Pool Size", "100");
//props.setProperty("MultipleActiveResultSets", "true");
String url = "jdbc:sqlserver://xantia:1433;instance=SQLEXPRESS;databaseName=COHERENCE;integratedSecurity=true";
connection = DriverManager.getConnection( url, props); |
J'ai le même résultat
J'ai un peu fait évoluer le message d'erreur
bonjour Je suis toujours dans une recherche de solution
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19
|
Class.forName("com.microsoft.sqlserver.jdbc.SQLServerDriver" ).newInstance();
//"Integrated Security=true;Pooling=true;Max Pool Size=100;Timeout=15;MultipleActiveResultSets=true;Type System Version=SQL Server 2014;database=COHERENCE;server=xantia\\SQLEXPRESS"
Properties props = new Properties();
//props.setProperty( "user","XANTIA\\JeanNoël");
//props.setProperty( "Type System Version", "SQL Server 2014");
//props.setProperty( "auto Reconnect", "true");
//props.setProperty( "Timeout", "15");
//props.setProperty( "instance", "Xantia\\SQLEXPRESS");
//props.setProperty( "Pooling", "true");
//props.setProperty( "Max Pool Size", "100");
//props.setProperty( "Multiple Active Result Sets", "true");
//props.setProperty( "database", "Coherence");
//props.setProperty( "integratedSecurity", "true");
// jdbc:sqlserver://xantia:1433;instance=SQLEXPRESS;databaseName=COHERENCE;integratedSecurity=true
String connect = "jdbc:sqlserver://localhost/Xantia:1433;integratedSecurity=true;";
connection = DriverManager.getConnection( connect, props);
stmt = connection.createStatement();
Data.m_bServerConnected = true; |
le code génere l'exception suivante:
Code:
1 2 3 4 5 6 7 8 9 10 11 12
| com.microsoft.sqlserver.jdbc.SQLServerException: Échec de la connexion TCP/IP à l'hôte localhost/Xantia, port 1433. Erreur*: «*null. Vérifiez les propriétés de connexion, assurez-vous qu'une instance de SQL Server est en cours d'exécution sur l'hôte et accepte les connexions TCP/IP au port, et vérifiez qu'aucun pare-feu ne bloque les connexions TCP au port.*».
at com.microsoft.sqlserver.jdbc.SQLServerException.makeFromDriverError(SQLServerException.java:171)
at com.microsoft.sqlserver.jdbc.SQLServerConnection.connectHelper(SQLServerConnection.java:1033)
at com.microsoft.sqlserver.jdbc.SQLServerConnection.login(SQLServerConnection.java:817)
at com.microsoft.sqlserver.jdbc.SQLServerConnection.connect(SQLServerConnection.java:700)
at com.microsoft.sqlserver.jdbc.SQLServerDriver.connect(SQLServerDriver.java:842)
at java.sql.DriverManager.getConnection(Unknown Source)
at java.sql.DriverManager.getConnection(Unknown Source)
at com.all4tec.matelo.linguistique.wizards.InterbaseManager.ConnectServer(InterbaseManager.java:44)
at com.all4tec.matelo.linguistique.wizards.MissionDatabaseManager.OpenDatabaseCoherence(MissionDatabaseManager.java:42)
at com.all4tec.matelo.linguistique.wizards.LinguistiqueImportWizard$1.run(LinguistiqueImportWizard.java:85)
at org.eclipse.jface.operation.ModalContext$ModalContextThread.run(ModalContext.java:121) |
la machine xantia est locale
j'ai noté comme un progrès le fait d'être passé d'un refus de connexion à une erreur nulle
Quant à la base de donné elle est contenu dans les propriétés
il faut utiliser l'un des logicile compris dans la distribution SQLEXPADV
et mettre dans les paramètres les droit pour TCPIP à enabled
TCP IP est autorisé sur ma machine
le code est comme suit:
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25
|
try
{
Class.forName("com.microsoft.sqlserver.jdbc.SQLServerDriver" ).newInstance();
//"Integrated Security=true;Pooling=true;Max Pool Size=100;Timeout=15;MultipleActiveResultSets=true;Type System Version=SQL Server 2014;database=COHERENCE;server=xantia\\SQLEXPRESS"
Properties props = new Properties();
props.setProperty( "TypeSystemVersion", "SQL Server 2014");
props.setProperty( "Pooling", "true");
props.setProperty( "MaxPoolSize", "100");
props.setProperty( "MultipleActiveResultSets", "true");
props.setProperty( "Timeout", "15");
props.setProperty( "instance","Xantia\\MSSQL$SQLEXPRESS");
props.setProperty( "user","XANTIA\\JeanNoël");
String connect = "jdbc:sqlserver://localhost:1433;database=Coherence;integratedSecurity=true";
//String connect = "jdbc:sqlserver://localhost:1433;database=Coherence;integratedSecurity=true;autoReconnect=true";
//DriverManager.PolicyTool.CreateStatment.setLog();
connection = DriverManager.getConnection( connect, props);
stmt = connection.createStatement();
Data.m_bServerConnected = true;
}
catch( Exception ex)
{
ex.printStackTrace();
Data.m_bServerConnected = false;
} |
et elle sort à la même message:
Code:
com.microsoft.sqlserver.jdbc.SQLServerException: Échec de la connexion TCP/IP à l'hôte localhost, port 1433. Erreur*: «*Connection refused: connect. Vérifiez les propriétés de connexion, assurez-vous qu'une instance de SQL Server est en cours d'exécution sur l'hôte et accepte les connexions TCP/IP au port, et vérifiez qu'aucun pare-feu ne bloque les connexions TCP au port.*».
je n'avais pas le bon driver
Le code que je met ci dessus marche
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32
|
try
{
// Chargement du pilote JDBC
Class.forName("sun.jdbc.odbc.JdbcOdbcDriver" ).newInstance();
//"Integrated Security=true;Pooling=true;Max Pool Size=100;Timeout=15;MultipleActiveResultSets=true;Type System Version=SQL Server 2014;database=COHERENCE;server=xantia\\SQLEXPRESS"
Properties props = new Properties();
props.setProperty( "Initial Catalog", "Northwind");
props.setProperty( "Auto Reconnect", "true");
props.setProperty( "AttachDbFilename", "C:\\Programmes\\Microsoft SQL Server\\MSSQL12.SQLEXPRESS\\MSSQL\\DATA\\Coherence.mdf");
props.setProperty( "Type System Version", "SQL Server 2014");
props.setProperty( "Pooling", "true");
props.setProperty( "MaxPoolSize", "100");
props.setProperty( "MultipleActiveResultSets", "true");
props.setProperty( "Timeout", "15");
props.setProperty( "Driver", "Microsoft SQL Server Express Edition (64-bit)");
props.setProperty( "Driver Version", "12.0.2000 RTM");
props.setProperty( "databaseName", "Coherence");
props.setProperty( "integratedSecurity", "true");
props.setProperty( "instance","Xantia\\SQLEXPRESS");
props.setProperty( "user","XANTIA\\JeanNoël");
// URL de connexion
String url = "jdbc:odbc:login_DSN";
connection = DriverManager.getConnection( url, props);
stmt = connection.createStatement();
Data.m_bServerConnected = true;
}
catch( Exception ex)
{
ex.printStackTrace();
Data.m_bServerConnected = false;
} |