가급적 테스트 용도로만 사용하세요.
MSSQL 서버에 직접 연결하여 데이터를 주고 받으면
암호화안된 데이터 노출될 수 도 있고..
앱에서 소스코드를 추출하여 MSSQL 서버의 비밀번호가 노출될 수 있습니다.
API21을 사용하도록 새로운 안드로이드 프로젝트를 생성하고
생성된 디렉토리의 libs라는 하위 디렉토리에 jtds-1.2.8.jar를 복사해 넣었습니다.
왼쪽에 있는 Android를 클릭해서 Project로 바꾸고.. app하위에 있는 libs에서 jtds-1.2.8.jar를 선택하고 마우스 우클릭해서 나오는 메뉴에서 Add a Library를 선택합니다.(캡처는 1.3.1을 사용할떄 인데 문제가 있어서 1.2.8로 바꾸었습니다.)
http://sourceforge.net/projects/jtds/files/jtds/1.2.8/ 에서 jtds-1.2.8.jar가 포함된 압축파일을 다운로드 받을 수 있습니다.
이제 DB를 출력하기 위해 사용하게 될 listview를 사용하는 레이아웃을 생성합니다.
- <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
- xmlns:tools="http://schemas.android.com/tools" android:layout_width="match_parent"
- android:layout_height="match_parent" android:paddingLeft="@dimen/activity_horizontal_margin"
- android:paddingRight="@dimen/activity_horizontal_margin"
- android:paddingTop="@dimen/activity_vertical_margin"
- android:paddingBottom="@dimen/activity_vertical_margin" tools:context=".MainActivity">
- <ListView
- android:layout_width="wrap_content"
- android:layout_height="wrap_content"
- android:id="@+id/listView" />
- </RelativeLayout>
그리고 AndroidManifest.xml 파일에 아래 한 줄을 추가해줍니다.
<uses-permission android:name="android.permission.INTERNET" />
그리고 다음과 같은 소스코드를 사용하면 원하는 결과를 얻을 수 있습니다. 5.0(API21)에서 정상적으로 동작하는 것을 확인했습니다.
버전에 따라 동작을 안하거나 문제가 발생할 수 있습니다.
- package com.tistory.webnautes.mssqltest;
- import android.app.Activity;
- import android.os.AsyncTask;
- import android.os.Build;
- import android.os.Bundle;
- import android.os.Handler;
- import android.os.Message;
- import android.util.Log;
- import android.widget.ArrayAdapter;
- import android.widget.ListView;
- import java.sql.Connection;
- import java.sql.DriverManager;
- import java.sql.ResultSet;
- import java.sql.Statement;
- import java.util.ArrayList;
- public class MainActivity extends Activity {
- ListView listview;
- ArrayAdapter<String> adapter;
- MyAsyncTask mTask;
- static String query = "select * from state order by curdate desc " ;
- @Override
- protected void onCreate(Bundle savedInstanceState) {
- super.onCreate(savedInstanceState);
- setContentView(R.layout.activity_main);
- listview = (ListView)findViewById(R.id.listView);
- adapter = new ArrayAdapter<String>(this, android.R.layout.simple_list_item_1);
- listview.setAdapter(adapter);
- }
- @Override
- protected void onStart() {
- super.onStart();
- handler.sendEmptyMessage(0);
- }
- class MyAsyncTask extends AsyncTask<String, Void, ArrayList<String>>
- {
- @Override
- protected void onPreExecute(){
- super.onPreExecute();
- }
- @Override
- protected ArrayList<String> doInBackground( String... params){
- ArrayList<String> list = new ArrayList<String>();
- ResultSet reset = null;
- Connection conn = null;
- try {
- Class.forName("net.sourceforge.jtds.jdbc.Driver");
- conn = DriverManager.getConnection("jdbc:jtds:sqlserver://DB서버주소;databaseName=DB이름","아이디","패스워드");
- Statement stmt = conn.createStatement();
- reset = stmt.executeQuery(query);
- while(reset.next()){
- if ( isCancelled() ) break;
- final String str = reset.getString(1)+" "+reset.getString(3)+" "+reset.getString(4);
- list.add(str);
- }
- conn.close();
- }
- catch (Exception e)
- {
- Log.w("111Error connection", "" + e.getMessage());
- }
- return list;
- }
- @Override
- protected void onPostExecute(ArrayList<String> list){
- adapter.clear();
- adapter.addAll(list);
- adapter.notifyDataSetChanged();
- handler.sendEmptyMessageDelayed(0, 1000);
- }
- @Override
- protected void onCancelled(){
- super.onCancelled();
- }
- }
- public Handler handler = new Handler(){
- public void handleMessage( Message msg){
- super.handleMessage(msg);
- mTask = new MyAsyncTask();
- mTask.executeOnExecutor(AsyncTask.THREAD_POOL_EXECUTOR, "");
- }
- };
- }
다음은 실행결과입니다. 1초마다 DB데이터를 다시 가져와서 뿌리도록 한 결과입니다.
'Android > Android PHP MySQL 예제' 카테고리의 다른 글
Android PHP MySQL 예제 - 데이터베이스에 데이터 입력하기 (646) | 2020.07.14 |
---|---|
Android PHP MySQL 예제 - 데이터베이스에 데이터 저장 및 JSON 형식으로 가져오는 예제 프로젝트 (136) | 2019.11.17 |
Android PHP MySQL 예제 - 데이터베이스 질의(query) 결과 출력하기 (112) | 2019.11.17 |
Android PHP MySQL 예제 - 데이터베이스에서 데이터를 JSON 형식으로 가져오기 (563) | 2019.11.17 |
시간날때마다 틈틈이 이것저것 해보며 블로그에 글을 남깁니다.
블로그의 문서는 종종 최신 버전으로 업데이트됩니다.
여유 시간이 날때 진행하는 거라 언제 진행될지는 알 수 없습니다.
영화,책, 생각등을 올리는 블로그도 운영하고 있습니다.
https://freewriting2024.tistory.com
제가 쓴 책도 한번 검토해보세요 ^^
그렇게 천천히 걸으면서도 그렇게 빨리 앞으로 나갈 수 있다는 건.
포스팅이 좋았다면 "좋아요❤️" 또는 "구독👍🏻" 해주세요!