【问题标题】:Error occurred while connecting with azure database using JDBC driver使用 JDBC 驱动程序连接 Azure 数据库时发生错误
【发布时间】:2016-07-07 15:15:16
【问题描述】:

连接 Azure 数据库时出错
2016 年 7 月 7 日晚上 8:42:32 com.microsoft.sqlserver.jdbc.TDSChannel enableSSL 信息:java.security 路径:C:\Program Files\Java\jdk1.8.0_60\jre\lib\security 安全提供商:[SUN 1.8 版、SunRsaSign 1.8 版、SunEC 1.8 版、SunJSSE 1.8 版、SunJCE 1.8 版、SunJGSS 1.8 版、SunSASL 1.8 版、XMLDSig 1.8 版、SunPCSC 1.8 版、SunMSCAPI 1.8 版] SSLContext 提供者信息:Sun JSSE 提供者(PKCS12、SunX509/PKIX 密钥/信任工厂、SSLv3/TLSv1/TLSv1.1/TLSv1.2) SSLContext 提供者服务: [SunJSSE: KeyFactory.RSA -> sun.security.rsa.RSAKeyFactory 别名:[1.2.840.113549.1.1,OID.1.2.840.113549.1.1] , SunJSSE: KeyPairGenerator.RSA -> sun.security.rsa.RSAKeyPairGenerator 别名:[1.2.840.113549.1.1,OID.1.2.840.113549.1.1] , SunJSSE: Signature.MD2withRSA -> sun.security.rsa.RSASignature$MD2withRSA 别名:[1.2.840.113549.1.1.2,OID.1.2.840.113549.1.1.2] , SunJSSE: Signature.MD5withRSA -> sun.security.rsa.RSASignature$MD5withRSA 别名:[1.2.840.113549.1.1.4,OID.1.2.840.113549.1.1.4] , SunJSSE: Signature.SHA1withRSA -> sun.security.rsa.RSASignature$SHA1withRSA 别名:[1.2.840.113549.1.1.5, OID.1.2.840.113549.1.1.5, 1.3.14.3.2.29, OID.1.3.14.3.2.29] , SunJSSE: Signature.MD5andSHA1withRSA -> sun.security.ssl.RSASignature , SunJSSE: KeyManagerFactory.SunX509 -> sun.security.ssl.KeyManagerFactoryImpl$SunX509 , SunJSSE: KeyManagerFactory.NewSunX509 -> sun.security.ssl.KeyManagerFactoryImpl$X509 别名:[PKIX] , SunJSSE: TrustManagerFactory.SunX509 -> sun.security.ssl.TrustManagerFactoryImpl$SimpleFactory , SunJSSE: TrustManagerFactory.PKIX -> sun.security.ssl.TrustManagerFactoryImpl$PKIXFactory 别名:[SunPKIX, X509, X.509] , SunJSSE: SSLContext.TLSv1 -> sun.security.ssl.SSLContextImpl$TLS10Context 别名:[SSLv3] , SunJSSE: SSLContext.TLSv1.1 -> sun.security.ssl.SSLContextImpl$TLS11Context , SunJSSE: SSLContext.TLSv1.2 -> sun.security.ssl.SSLContextImpl$TLS12Context , SunJSSE: SSLContext.TLS -> sun.security.ssl.SSLContextImpl$TLSContext 别名:[SSL] , SunJSSE: SSLContext.Default -> sun.security.ssl.SSLContextImpl$DefaultSSLContext , SunJSSE: KeyStore.PKCS12 -> sun.security.pkcs12.PKCS12KeyStore ] java.ext.dirs: C:\Program Files\Java\jdk1.8.0_60\jre\lib\ext;C:\WINDOWS\Sun\Java\lib\ext

使用的示例代码

package UtilityCreateSensorData;
// Use the JDBC driver  
import java.sql.*;  
import com.microsoft.sqlserver.jdbc.*;  

public class SQLDatabaseConnection {

     // Connect to your database.  
    // Replace server name, username, and password with your credentials  
    public  void InsertData(String Value1,String Value2,String Value3,int Value4) {  

        String connectionString ="jdbc:sqlserver://test.database.windows.net:1433;database=test;user=TestUsername;password=TestPassword";  


        // Declare the JDBC objects.  
        Connection connection = null; 
        Statement statement = null;   
        ResultSet resultSet = null;  
        PreparedStatement prepsInsertProduct = null; 


        try {  
            connection = DriverManager.getConnection(connectionString); 
            // Create and execute an INSERT SQL prepared statement.  
           String insertSql = "INSERT INTO [dbo].[tblAutomationTest] (DESC,MessageStart,MessageEnd,SenseCount) VALUES " + "(Value1, Value2, Value3, Value4);";  

           prepsInsertProduct = connection.prepareStatement(insertSql, Statement.RETURN_GENERATED_KEYS);  
           prepsInsertProduct.execute();  

            // Retrieve the generated key from the insert.  
            resultSet = prepsInsertProduct.getGeneratedKeys();  

            // Print the ID of the inserted row.  
            while (resultSet.next()) { System.out.println("Generated: " + resultSet.getString(1));  
            }  

        }  
        catch (Exception e) {  
            e.printStackTrace();  
        }  
        finally {  
            if (connection != null) try { connection.close(); } catch(Exception e) {}
         // Close the connections after the data has been handled.  
            if (prepsInsertProduct != null) try { prepsInsertProduct.close(); } catch(Exception e) {}  
            if (resultSet != null) try { resultSet.close(); } catch(Exception e) {}  
            if (statement != null) try { statement.close(); } catch(Exception e) {}  
        }  
        }

}  

【问题讨论】:

标签: java azure jdbc


【解决方案1】:

根据您的代码,问题是由 Azure SQL 数据库的连接字符串不正确引起的。

SQL Azure 连接字符串的正确格式如下。

jdbc:sqlserver://<hostname>.database.windows.net:1433;database=<database-name>;user=<username>@<hostname>;password={your_password_here};encrypt=true;hostNameInCertificate=*.database.windows.net;loginTimeout=30;

您可以在 Azure 旧门户上 DASHBOARD 选项卡右侧栏的链接 Show connection strings 中找到它,或者在 Azure 新门户上的显示数据库连接字符串链接中查看它。

可以参考我对SO线程How to connect to Azure SQL with JDBC的回答看图和代码,或者看官方文章https://azure.microsoft.com/en-us/documentation/articles/sql-database-develop-java-simple/

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2013-03-26
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-02-09
    • 2019-01-30
    • 2016-12-23
    相关资源
    最近更新 更多