본문 바로가기

카테고리 없음

[안드로이드 코틀린] mariadb connection

반응형

mariadb-java-client-2.4.1.jar
0.56MB

첨부 파일을 project_folder\app\libs 안에 넣어 두면 됩니다.

build.gradle(app)에 아래 문구가 있으면 자동으로 참조합니다.

dependencies { 
    implementation fileTree(dir: 'libs', include: ['*.jar']) 
}


1. 주 Activity에서 Database로 연결하는 게 막혀 있어서 Thread를 열어서 접속하여야 한다.

2. Thread 안에서 Toast 접근이 안된다. Handler를 이용하여 가능하다.

3. 소리 재생(ToneGenerator)도 Thread 안에서는 작동하지 않는다. Handler를 이용하여 가능하다.

4. 마리아디비는 // 기호를 사용한다. (오라클은 @)

5. 마리아디비는 dbname 앞에 / 기호를 사용한다. (오라클은 :)

Thread(Runnable {
    var con: Connection? = null
    try {
        Class.forName("org.mariadb.jdbc.Driver")
        DriverManager.setLoginTimeout(1) //접속 제한 시간 설정 : 초 단위
        con = DriverManager.getConnection("jdbc:mysql://domain:port/dbname", "id", "password")

        try {
            val sql: String
            sql = "update table set column1=?,column2=? where pk=?" 
            val prest = oracon!!.prepareStatement(sql) 
            prest.setString(1,column1) 
            prest.setString(2,column2) 
            prest.setString(3,pk) 
            prest.executeQuery()
            prest.close()
            con.close()

            println("maria ok : "+text)
            Toast.makeText(this, "maria ok", Toast.LENGTH_LONG).show() //Thread 안에서 Toast 접근이 안되기 때문에 작동하지 않는다.
        }
        catch (s: SQLException) {
            println("SQL statement is not executed! : "+s.message)
            Handler(Looper.getMainLooper()).post {
                Toast.makeText(this, "Oracle statement is not executed! : "+s.message, Toast.LENGTH_LONG).show()
                val toneGen1 = ToneGenerator(AudioManager.STREAM_MUSIC, 100)
                toneGen1.startTone(ToneGenerator.TONE_CDMA_ABBR_ALERT, 300)
            }
        }
    }
    catch (e: Exception) {
        e.printStackTrace()
        println("DB Connection Error! : "+e.message)
        Handler(Looper.getMainLooper()).post { //Thread 안에서 Toast 접근하는 방법
            Toast.makeText(this, "DB Connection Error! : "+e.message, Toast.LENGTH_LONG).show()
            val toneGen1 = ToneGenerator(AudioManager.STREAM_MUSIC, 100) //소리 재생도 Thread 안에서는 Handler를 통해서 해야 한다.
            toneGen1.startTone(ToneGenerator.TONE_CDMA_ABBR_ALERT, 300)
        }
    }
}).start()

반응형