Advertisement
okardec

DB.tk

Sep 24th, 2020
1,738
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Kotlin 3.04 KB | None | 0 0
  1. package core.base
  2.  
  3. import java.sql.Connection
  4. import java.sql.DriverManager
  5. import java.sql.SQLException
  6.  
  7.  
  8. class DB() {
  9.  
  10.     private val JDBC_URL = "jdbc:sqlite:"+Config.DB_PATH;
  11.     private lateinit var con: Connection
  12.  
  13.     init {
  14.         connect()
  15.     }
  16.  
  17.     protected fun finalize() {
  18.         close()
  19.     }
  20.  
  21.  
  22.     /**
  23.      * inicia a conexão com o banco
  24.      */
  25.     fun connect(){
  26.         try {
  27.             con = DriverManager.getConnection(JDBC_URL)
  28.         } catch (e: SQLException) {
  29.             e.message?.let { Log.add(it) }
  30.             throw Exception(e.message)
  31.         }
  32.     }
  33.     fun close() {
  34.         con.close()
  35.     }
  36.  
  37.     /**
  38.      * executa uma query especifica, utilizada nos metodos insert/delete/update
  39.      * retorna boolean se funcionou ou nao
  40.      */
  41.     fun runQuery(sqlString: String): Boolean {
  42.  
  43.         try {
  44.             con.createStatement().use { statement ->
  45.                 Log.add(sqlString)
  46.                 return statement.executeUpdate(sqlString)==1
  47.             }
  48.         } catch (e: SQLException) {
  49.             println("Erro ao executar a query : " + e.message)
  50.             return false
  51.         }
  52.     }
  53.  
  54.     /**
  55.      * metodo para se realizar select propriamente dito
  56.      * com preenchimento de variaveis prórpias
  57.      */
  58.     var totalRows = 0
  59.     private set
  60.  
  61.     var fields = mutableMapOf<Int, Any>()
  62.     private set
  63.  
  64.     fun select(sqlString: String) {
  65.         Log.add(sqlString)
  66.         ///limpa os valores para que caso seja feito outro select não esteja armazendando nada
  67.         totalRows = 0
  68.         fields = mutableMapOf<Int, Any>()
  69.         var fDs = mutableMapOf<String, Any>()
  70.         return try {
  71.             con.createStatement().use{ statement->
  72.                 statement.executeQuery(sqlString).use{ rs->
  73.                     var n = 0
  74.  
  75.                     while (rs.next()) {
  76.                         totalRows = rs.row
  77.                         fDs = mutableMapOf<String, Any>()
  78.                         for (i in 1..rs.metaData.columnCount) {
  79.                             //println(rs.metaData.getColumnName(i) + " - " + rs.metaData.getColumnTypeName(i) + " - " + rs.getString(rs.metaData.getColumnName(i)) )
  80.                             fDs.put(rs.metaData.getColumnName(i), when(rs.metaData.getColumnTypeName(i)){
  81.                                 "INTEGER" -> rs.getInt(rs.metaData.getColumnName(i))
  82.                                 "STRING" -> rs.getString(rs.metaData.getColumnName(i))
  83.                                 "DOUBLE" -> rs.getDouble(rs.metaData.getColumnName(i))
  84.                                 "DATE" -> rs.getDate(rs.metaData.getColumnName(i))
  85.                                 else -> rs.getString(rs.metaData.getColumnName(i))
  86.                             })
  87.                         }
  88.                         fields.put(n,fDs)
  89.                         n++
  90.                     }
  91.                 }
  92.             }
  93.         } catch (e: SQLException) {
  94.             Log.add("Erro ao executar a query : " + e.message)
  95.             //false
  96.         }
  97.     }
  98.  
  99.  
  100.  
  101. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement