Description
Question
This is my first time using SQL Server and the mssql jdbc library, but I encountered this problem
java.lang.NullPointerException: Attempt to invoke virtual method 'java.security.CodeSource java.security.ProtectionDomain.getCodeSource()' on a null object reference
at com.microsoft.sqlserver.jdbc.ConfigurableRetryLogic.getCurrentClassPath(ConfigurableRetryLogic.java:294)
at com.microsoft.sqlserver.jdbc.ConfigurableRetryLogic.readFromFile(ConfigurableRetryLogic.java:339)
at com.microsoft.sqlserver.jdbc.ConfigurableRetryLogic.setUpStatementRules(ConfigurableRetryLogic.java:207)
at com.microsoft.sqlserver.jdbc.ConfigurableRetryLogic.(ConfigurableRetryLogic.java:89)
at com.microsoft.sqlserver.jdbc.ConfigurableRetryLogic.getInstance(ConfigurableRetryLogic.java:106)
at com.microsoft.sqlserver.jdbc.SQLServerConnection.connectInternal(SQLServerConnection.java:2600)
at com.microsoft.sqlserver.jdbc.SQLServerConnection.connect(SQLServerConnection.java:2207)
at com.microsoft.sqlserver.jdbc.SQLServerDriver.connect(SQLServerDriver.java:1320)
at java.sql.DriverManager.getConnection(DriverManager.java:580)
at java.sql.DriverManager.getConnection(DriverManager.java:236)
at com.example.accountingapp.data.datasource.DatabaseHelper.getConnection(DatabaseHelper.kt:25)
at com.example.accountingapp.ui.activity.MainActivity$onCreate$1.invokeSuspend(MainActivity.kt:33)
at kotlin.coroutines.jvm.internal.BaseContinuationImpl.resumeWith(ContinuationImpl.kt:33)
at kotlinx.coroutines.DispatchedTask.run(DispatchedTask.kt:104)
at kotlinx.coroutines.internal.LimitedDispatcher$Worker.run(LimitedDispatcher.kt:111)
at kotlinx.coroutines.scheduling.TaskImpl.run(Tasks.kt:99)
at kotlinx.coroutines.scheduling.CoroutineScheduler.runSafely(CoroutineScheduler.kt:585)
at kotlinx.coroutines.scheduling.CoroutineScheduler$Worker.executeTask(CoroutineScheduler.kt:802)
at kotlinx.coroutines.scheduling.CoroutineScheduler$Worker.runWorker(CoroutineScheduler.kt:706)
at kotlinx.coroutines.scheduling.CoroutineScheduler$Worker.run(CoroutineScheduler.kt:693)
Suppressed: kotlinx.coroutines.internal.DiagnosticCoroutineContextException: [StandaloneCoroutine{Cancelling}@f68faf2, Dispatchers.IO]
code:
object DatabaseHelper {
private const val TAG = "DatabaseHelper"
private const val serverName = "192.168.196.151"
private const val portNumber = "1433"
private const val databaseName = "AccountingDB"
private const val username = "sa"
private const val password = "123456"
fun getConnection(): Connection? {
var connection: Connection? = null
try {
Class.forName("com.microsoft.sqlserver.jdbc.SQLServerDriver")
val connectionUrl =
(("jdbc:sqlserver://$serverName:$portNumber" + ";" + "databaseName="
+ databaseName) + ";username=" + username) + ";password=" + password + ";"
connection = DriverManager.getConnection(connectionUrl)
Log.d(TAG, "Database connection successful")
} catch (e: ClassNotFoundException) {
Log.e(TAG, "ClassNotFoundException: ${e.message}")
} catch (e: SQLException) {
Log.e(TAG, "SQLException: ${e.message}")
}
return connection
}
}
dependencies:
implementation("com.microsoft.sqlserver:mssql-jdbc:12.10.0.jre11")