1. DB에 있는 데이터를 불러와 리스트뷰에 뿌려줍니다
2. 딜리트 쿼리 실행 후 다시 DB에 있는 데이터를 활용하여 리스트뷰를 뿌려줍니다.
구상은 이러했지만 리스트뷰 갱신이안되네요
그리고 한가지 더 updateDB()함수에서 계속 에러로그를 남깁니다
10-12 02:15:43.058 32076-32076/com.example.admin.sqltest W/버튼 에러﹕ null
stmt.executeQuery(query1);
이 구문이 정상적으로 실행은 안되네요
쿼리는 적용이 되는데 다음으로 넘어가지가 않습니다.
package com.example.admin.sqltest;
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.os.Handler;
import android.os.Message;
import android.util.Log;
import android.view.View;
import android.widget.ArrayAdapter;
import android.widget.Button;
import android.widget.ListView;
import android.os.AsyncTask;
public class MainActivity extends Activity {
Connection conn = null;
Statement stmt = null;
ResultSet reset = null;
ArrayList<String> list = new ArrayList<String>();
ListView listview;
ArrayAdapter<String> adapter;
MyAsyncTask mTask;
static String query = "select * from dbtest " ;
static String query1 = "delete from dbtest where no=2";
;
@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);
findViewById(R.id.button).setOnClickListener(mClickListener);
}
Button.OnClickListener mClickListener = new View.OnClickListener() {
public void onClick(View v) {
switch (v.getId()) {
case R.id.button:
Log.i("", "버튼 호출됨");
Log.i("Connection","stmt 확인 : "+stmt);
updateDB();
break;
}
}
};
public void updateDB(){
Log.i("", "updateDB() 함수 호출");
try {
stmt.executeQuery(query1);
/*
while(reset.next()){
final String str = reset.getString(1)+" "+reset.getString(2)+" "+reset.getString(3);
list.add(str);
}
adapter.addAll(list);
Log.i("", "어뎁터에 리스트 추가");
adapter.notifyDataSetChanged();
Log.i("", "화면 갱신 뚜둥");
*/
// conn.close();
}
catch (Exception e)
{
Log.w("버튼 에러", "" + e.getMessage());
}
}
@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){
try {
Class.forName("net.sourceforge.jtds.jdbc.Driver").newInstance();
Log.i("Connection","MSSQL 라이브러리 로드");
conn = DriverManager.getConnection("jdbc:jtds:sqlserver://xxx.xxx.xxx.184:1433/test","mesapp","dhc8700!?#");
Log.i("Connection","MSSQL 접속 성공 : "+conn);
stmt = conn.createStatement();
Log.i("Connection","stmt 확인 : "+stmt);
reset = stmt.executeQuery(query);
while(reset.next()){
if ( isCancelled() ) break;
final String str = reset.getString(1)+" "+reset.getString(2)+" "+reset.getString(3);
list.add(str);
}
// conn.close();
Log.i("list 내용 확인 함수 : ","" + list);
}
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, "");
}
};
}