Connect Azure SQL Database in Linux Android Studio

vasim 1 Reputation point
2021-01-27T07:17:42.127+00:00

I want to develop Android Application which would connect to Microsoft Azure SQL Database in Linux (Version 14.04) Android Studio. Iam using latest version of Android Studio 4.1.2. I tried some java code for Database connection. But I am not able to connect Azure SQL Database.

My problem is How To connect to Azure SQL Database?? and How to fetch data from SQL databse to my Android Application. My data is stored in Azure SQL Database -> Stream Analytics (preview).

Java code :

 String Connect_String = "jdbc:jtds:sqlserver://sqlserver.database.windows.net:1433;databaseName=iwave_db_1;user=username@sqlserver;password=*******;" +
                    "encrypt=true;trustServerCertificate=false;hostNameInCertificate=*.database.windows.net;loginTimeout=30;";

 String Username = "username@sqlserver";
 String Password = "*******";
    try {
        System.out.println("Connecting to the Database");
        Class.forName("net.sourceforge.jtds.jdbc.Driver").newInstance();

        Connection connection = DriverManager.getConnection(Connect_String, Username, Password);  //Showing Error in this line
        if (connection != null) {
            System.out.println("Done ........");
            System.out.println("Database connection success");
        }

Getting error in Connection connection = DriverManager.getConnection(Connect_String, Username, Password);this line. Application is crashing, and i not able to connect to SQL database.

Error Message :

E/AndroidRuntime: FATAL EXCEPTION: main
    Process: com.iwavesys.cloudazure, PID: 6864
    android.os.NetworkOnMainThreadException
        at android.os.StrictMode$AndroidBlockGuardPolicy.onNetwork(StrictMode.java:1450)
        at java.net.Inet6AddressImpl.lookupHostByName(Inet6AddressImpl.java:102)
        at java.net.Inet6AddressImpl.lookupAllHostAddr(Inet6AddressImpl.java:90)
        at java.net.InetAddress.getLocalHost(InetAddress.java:851)
        at com.microsoft.sqlserver.jdbc.Util.lookupHostName(Util.java:652)
        at com.microsoft.sqlserver.jdbc.SQLServerConnection.connectHelper(SQLServerConnection.java:2690)
        at com.microsoft.sqlserver.jdbc.SQLServerConnection.login(SQLServerConnection.java:2362)
        at com.microsoft.sqlserver.jdbc.SQLServerConnection.connectInternal(SQLServerConnection.java:2213)
        at com.microsoft.sqlserver.jdbc.SQLServerConnection.connect(SQLServerConnection.java:1276)
        at com.microsoft.sqlserver.jdbc.SQLServerDriver.connect(SQLServerDriver.java:861)
        at java.sql.DriverManager.getConnection(DriverManager.java:569)
        at java.sql.DriverManager.getConnection(DriverManager.java:219)
        at com.iwavesys.cloudazure.ToDoActivity.Azure_Connection(ToDoActivity.java:222)
        at com.iwavesys.cloudazure.ToDoActivity.access$100(ToDoActivity.java:43)
        at com.iwavesys.cloudazure.ToDoActivity$2.onClick(ToDoActivity.java:154)
        at android.view.View.performClick(View.java:6294)
        at android.view.View$PerformClick.run(View.java:24770)
        at android.os.Handler.handleCallback(Handler.java:790)
        at android.os.Handler.dispatchMessage(Handler.java:99)
        at android.os.Looper.loop(Looper.java:164)
        at android.app.ActivityThread.main(ActivityThread.java:6494)
        at java.lang.reflect.Method.invoke(Native Method)
        at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:438)
        at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:807)

I am linking all the library file to my gradle file .

build.Gradle :

apply plugin: 'com.android.application'
android {
    compileSdkVersion 30
    buildToolsVersion "30.0.2"

    defaultConfig {
        applicationId "com.iwavesys.cloudazure"
        minSdkVersion 19
        targetSdkVersion 30
        multiDexEnabled true
        versionCode 1
        versionName "1.0"
        testInstrumentationRunner "androidx.test.runner.AndroidJUnitRunner"
    }

    buildTypes {
        release {
            minifyEnabled false
            proguardFiles getDefaultProguardFile('proguard-android-optimize.txt'), 'proguard-rules.pro'
        }
    }
    compileOptions {
        sourceCompatibility JavaVersion.VERSION_1_8
        targetCompatibility JavaVersion.VERSION_1_8
    }
}
dependencies {
    implementation fileTree(dir: "libs", include: ["*.jar"])
    implementation 'androidx.appcompat:appcompat:1.2.0'
    implementation 'androidx.constraintlayout:constraintlayout:2.0.4'
    implementation 'org.conscrypt:conscrypt-android:2.2.1'
    implementation 'org.apache.httpcomponents:httpclient-android:4.3.5'
    //implementation 'net.sourceforge.jtds:jtds:1.3.0'
    testImplementation 'junit:junit:4.12'
    androidTestImplementation 'androidx.test.ext:junit:1.1.2'
    androidTestImplementation 'androidx.test.espresso:espresso-core:3.3.0'
    implementation 'com.microsoft.azure:azure-mobile-android:3.1.0'
    implementation 'com.google.code.gson:gson:2.8.5'
    implementation 'com.google.guava:guava:24.1-jre'
    implementation 'com.android.support:support-v4:28.0.0'
    implementation 'com.microsoft.azure.android:azure-storage-android:2.0.0@aar'
}

I am using following version of .jar files for connection :

  1. jtds-1.3.1.jar
  2. mssql-jdbc-8.4.1.jre8.jar
  3. mysql-connector-java-8.0.22.jar

Where i am missing?? My code is correct or not ?? Anyone knows please help me. Thank you in Advance.

Azure SQL Database
{count} votes