Posting

Machbase의 최신 소식을 지금 만나보세요

[MACHBASE 연동] Android studio에서 JDBC 연결하기

마크베이스 기술지원본부 이현민

1. 개요

수많은 데이터들이 많은 환경에서 생성되고 있는 오늘날, 우리 현대인들의 동반자인 스마트폰 또한 데이터생성의 주체로써 또는 전달자로서 알게 모르게 그 구실을 하고 있습니다.
그에 따라 이 글에서는 Android 환경에서 JDBC API를 통해 MACHBASE와 연동하는 방법에 대해서 다뤄보고자 합니다.

2. 준비

MACHBASE : https://kr.machbase.com/home/download/
최신버전의 Android studio (또는 그에 준하는 개발환경) : https://developer.android.com/studio

소스 및 스크립트 :  https://github.com/MACHBASE/AndroidStudio

Android와 연결하기 전 MACHBASE를 설치, 실행하고 MACHBASE의 GITHUB에 들어가 Table 생성 스크립트와 Android 코드를 미리 준비해야 합니다.

3. 환경설정

$MACHBASE_HOME/lib/MACHBASE.jar 파일을 확인 후 진행합니다.


3-1. Project 만들기

Android Studio에서 New Project를 하나 만들어 줍니다. 이때 Template에서 Empty Activity를 선택하고 Next를 눌러줍니다.

empty.PNG

Language는 반드시 Java 로 변경하여야 합니다 Kotlin을 사용 하실 경우 가이드대로 진행할 수 없습니다.
Language_java.png

Language까지 설정을 끝맞쳤다면 이제 MACHBASE를 연동할 Project package가 만들어졌습니다.

무지_첫장.png

3-2 jar 파일 추가하기

새 Project가 만들어졌다면 우리는 가장 먼저 MACHBASE와 어플리케이션 간의 연결을 진행해줄 machbase.jar 파일을 패키지에 추가해줍니다.

우선 [File -> Project Structure] 을 열어줍니다.

Project Structure.png

다음은 [Dependencies -> Modules -> +button -> New Module] 을 선택합니다.

Project Structure2.png

Import JAR/AAR Package를 선택하고 NEXT를 눌러줍니다.

Project Structure3.png

Import 할 machbase.jar 파일의 경로를 지정해줍시다. MACHBASE를 설치했다면 $MACHBASE_HOME/lib/machbase.jar 파일로 존재합니다.

Project Structure4.png

위의 과정을 잘 진행했다면 Modules의 목록에 <All Modules>, app, MACHBASE가 생성되어 있습니다. 우리는 다시 app을 눌러서 MACHBASE module을 추가해줘야 합니다.

아래의 이미지를 따라 추가하면 됩니다.

Project Structure5.png
Project Structure6.png
Project Structure7.png

4. App실행

작성된 코드를 이용하여 App을 실행해보겠습니다.

Application은 실행이 됬는데 MACHBASE에 데이터가 입력되지 않았습니다.

비교.PNG

Android studio의 log message를 확인해보니 Exception 에러가 발생했음을 알 수 있습니다.

run_app.PNG

해당 오류는 android Internet permission 에러입니다. 해결방법은 매우 간단합니다.

AndroidManifest.xml 파일에 한줄만 추가하면됩니다.

run_app2.PNG
<uses-permission android:name "android.permission.INTERNET"/>

이제 다시 실행해보겠습니다.

run_app3.PNG

이제야 JDBC 연결이 완료되고 Insert 구문이 실행됬음을 확인했습니다.

그런데 이게 끝이 아닙니다.  로그를 더 내려보니 다른 에러가 발생을 했습니다. 에러가 발생했다는 것은 언제든지 위험이 발생할 수 있다는 뜻이므로 에러를 제거해주도록 하겠습니다.

run_app4.PNG

확인해보니 Connection reset은 DB 서버측에서 커넥션이 종료되었으나. WAS는 그것을 알아차리지 못할때 발생한다고 합니다.

해당 문제를 해결하기 위해서는 아래의 과정을 진행하면 간단히 해결할 수 있습니다.

C:\Program Files\Java\jdk1.8.0_241\jre\lib\security\java.secuirty 또는 
$JAVA_HOME(환경변수)\jre\lib\security\java.secuirty 를 열어주어 값을 변경해주도록 합니다.
원본 : securerandom.source=file:/dev/random
변경 : securerandom.source=file:/dev/urandom

/dev/random을 urandom으로 변경했다면 이제 다시 Application을 실행합니다.

에러해결.PNG

Log를 보니 Error 내역이 없이 진행됬음을 확인 할 수 있었습니다. 만약 계속해서 에러가 발생한다면 에뮬레이터를 재시작하면 됩니다.

5. 마치며

이제 어디서든 스마트폰을 통해 기기에서 직접 발생한 데이터나 어플리케이션에서 수집한 데이터를 MACHBASE에 저장하여 실시간으로 저장하고 분석할 수 있습니다.

만약 JDBC 예제소스가 필요로 하다면 MACHBASE에서 제공하는 JDBC Sample source를 참고하면 좋습니다. 

예제소스는 $MACHBASE_HOME\sample\jdbc에 준비되어 있습니다.

연관 포스트

C언어로 Binary data를 Machbase에 넣기

1.개요 Data를 다루다 보면 numeric, varchar 형 데이터뿐만 아니라 JPG, PNG, MP3와 같은 Binary data도 database에 저장해야 할 때가 존재한다. 그러나 일반 data들과는 달리 Binary

[MACHBASE 기초] Machbase에서 Sequence 컬럼 사용하기

개요 이번 포스트에서는 Machbase 6.5에 새로 추가될 예정인 Sequence(시퀀스) 기능에 대해서 알아보고자 한다. 시퀀스는 순차적으로 자동으로 증가하는 컬럼을 만들기 위해 사용된다.순자적으로 증가하여 중복된 값이 없으므로