#kotlin #stored-procedures
#kotlin #хранимые процедуры
Вопрос:
У меня есть эта функция, проблема в том, что, имея тип any, все методы (setString, SetInt, …) Я получаю сообщение об ошибке: (
fun execStoredProcedure(storedProcedure: String, params: Array<Any>?) : ResultSet? {
try {
val procedure: CallableStatement = this.getConnection().prepareCall(storedProcedure)
if ( params != null ) {
for ( (index,param) in params.withIndex() ){
when( param::class.simpleName ){
"String" -> procedure.setString(index 1,param)
"Int" -> procedure.setInt(index 1,param)
"Double" -> procedure.setDouble(index 1,param)
"Date" -> procedure.setDate(index 1,param)
}
}
}
return procedure.executeQuery()
}catch (e:Error){
println("Error in storedProcedure: ${e.message}")
return null
}
}
O si alguien sabe una funcion para poder ejecutar cualquier stored procedure en Kotlin, mi profesor no enseña nada :(
Ответ №1:
Если вы измените свое when
предложение на сравнение классов, а String
не на сравнение имен, вы можете воспользоваться интеллектуальным приведением, и это должно сработать (непроверено):
when(param) {
is String -> procedure.setString(index 1,param)
is Int -> procedure.setInt(index 1,param)
is Double -> procedure.setDouble(index 1,param)
is Date -> procedure.setDate(index 1,param)
}