마스터Q&A 안드로이드는 안드로이드 개발자들의 질문과 답변을 위한 지식 커뮤니티 사이트입니다. 안드로이드펍에서 운영하고 있습니다. [사용법, 운영진]

MSSQL listview 에 뿌려주는 것을 하고 있는데요..

0 추천
package com.example.test;

import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.ResultSet;
import java.sql.Statement;
import java.util.ArrayList;

import android.app.Activity;
import android.os.Bundle;
import android.util.Log;
import android.widget.ArrayAdapter;
import android.widget.ListView;

public class MainActivity extends Activity {
 
 ArrayList<String> list;
 ArrayAdapter<String> adapter;
 ListView listView;
 
 @Override

    protected void onCreate(Bundle savedInstanceState) {
  
        super.onCreate(savedInstanceState);

        setContentView(R.layout.activity_main);
        
        list = new ArrayList<String>();
        adapter = new ArrayAdapter<String>(this, android.R.layout.simple_list_item_1, list);
        listView = (ListView) findViewById(R.id.listView1);
        listView.setAdapter(adapter);
        
        Querythread querythread = new Querythread();
        querythread.start();
     }

 class Querythread extends Thread{
      public void run(){

        try {
     Thread.sleep(2000);
    } catch (InterruptedException e) {
     e.printStackTrace();
    }
       

     Log.i("Android"," MSSQL 접속 준비");
     
     list.clear();
     
     Query(); //쿼리함수 호출

   }

     
     }
    
public void Query()
{
    Connection conn = null;
    
    try {

     Class.forName("net.sourceforge.jtds.jdbc.Driver").newInstance();
     Log.i("Connection","MSSQL 라이브러리 로드");

     conn = DriverManager.getConnection("jdbc:jtds:sqlserver://###","###","###");
     Log.i("Connection","MSSQL 접속 성공 : "+conn);

     Statement stmt = conn.createStatement();

     //String Query="";
     //stmt.executeUpdate(Query);
     
  String Query = "SELECT * FROM w_item_mst";
  
  ResultSet reset = stmt.executeQuery(Query);

  while (reset.next()) {
   String no = reset.getString("no");
      //Log.i("","No:" + no);
   list.add(no);
  }
     
     conn.close();
     
   
   } 
  catch (Exception e)
  {

      Log.w("Error connection","오류 : " + e);

  }
 }
}

소스는 위와 같은데요..

구글링 + 관련서적 을 참고해서 위와같이 만들었는데..

실행시키면 아무것도 나오질 않습니다.

로그에는 MSSQL 서버 접속은 오류가 없는데요..

listView에는 아무것도 나오질 않는데..

빠진게 있나요..?

익명사용자 님이 2014년 5월 9일 질문
2014년 5월 9일 수정

3개의 답변

+1 추천

adapter.notifyDataSetChanged()

aucd29 (218,390 포인트) 님이 2014년 5월 9일 답변
어느부분에 넣어야 하는지요..?
list 에 add 가 끝나고 나서 호출하세요
+1 추천
위에 인연님께서도 말씀하셨는데요.. 보안 문제로 인해서 절대!!!! DB에 직접 접근하는 방법을 사용하시면 안됩니다.

몇가지 이유를 들어보면

1. DB에 직접 접속하는 정보 유출

2. DB 커넥션수가 사용자수만큼 증가하여 DB 서버에 부담이 큼

 

이 두가지 이유가 가장 크다고 봅니다.

대부분 중계서버로 웹서버, 소켓서버 등등 을 두고

단말 <-> 중계서버 <-> DB서버

와 통신을 하게하고 DB서버는 절대 외부와 직접적으로 연결되는 루트를 제공하지 않아야 합니다.
dante2k (8,390 포인트) 님이 2014년 5월 9일 답변
0 추천
ID랑 비번은 가려주시고...

직접적으로 바로 연결하는 것은 좋지 않습니다.. 보통 DB-Web-단말기 로 접근합니다.

그리고 직접적으로 연결하는것은 막아뒀다 생각하시는게 편합니다; 물론 우회하여 바로 연결은 가능합니다..
인연 (31,880 포인트) 님이 2014년 5월 9일 답변
...