안녕하세요. 화창한 오후에 질문하나 올립니다.

 

지금 구현하려고 하는게 웹에서 db파일을 다운받아서 어플의 db경로에 덮어씌우기 형식으로해서 업데이트를 시키려고하는데

 

다운이 안되는것 같아서 질문올립니다.

 

소스가 조금 길기때문에 중요 부분이라고 생각되는 부분만 색으로 표시할게요.

 

package material.data.db;

import java.io.BufferedInputStream;
import java.io.BufferedOutputStream;
import java.io.File;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.InputStream;
import java.net.HttpURLConnection;
import java.net.URL;

import android.app.Activity;
import android.content.Context;
import android.database.Cursor;
import android.database.SQLException;
import android.database.sqlite.SQLiteDatabase;
import android.os.Bundle;
import android.util.Log;
import android.view.MotionEvent;
import android.view.View;
import android.view.View.OnTouchListener;
import android.widget.Button;
import android.widget.EditText;
import android.widget.Toast;

public class ASMSActivity extends Activity implements OnTouchListener {
    /** Called when the activity is first created. */
 private Button createB, dropB, insertB, updateB, deleteB, selectB;
  private EditText et1, et2, et3;
  private SQLiteDatabase db;
  private final static String DB_NAME="Material.db";                        //DB name setting
  private final static int DB_MODE=Context.MODE_PRIVATE;
  private final static String T_NAME="material";
  private static final String TAG = null;
  
  @SuppressWarnings("unused")
 private void downloadDB(HttpURLConnection conn, String FileName) { // 이 구문이 db를 웹(개인 홈피)에서 다운 받는 구문입니다.
    
     final String DIR ="/data/data/material.data.db/databases/";
     final String PATH = DIR+ FileName;
     File fDir = new File(DIR);
     File f = new File(PATH);
    
     FileOutputStream fos = null;
     BufferedOutputStream bos = null;
     InputStream is = null;
     BufferedInputStream bis = null;
    
     try {
      URL url = new URL("http://incsoft.co.kr/~kimkw/bbs/download.php?bo_table=study&wr_id=2&no=0");
      HttpURLConnection httpConn = (HttpURLConnection) url.openConnection();
    
      if(!fDir.exists()){
       fDir.mkdir();
      }
      if (f.exists()) {
       f.delete();
       f.createNewFile();
      }
      is = httpConn.getInputStream();
      bis = new BufferedInputStream(is);
    
        
      fos = new FileOutputStream(f);
      bos = new BufferedOutputStream(fos);
    
      int read = -1;
      int len = conn.getContentLength();
      byte[] buffer = new byte[len];
    
      while ((read = bis.read(buffer, 0, 1024)) != -1) {
       bos.write(buffer, 0, read);
      }
      bos.flush();  
      Log.i(TAG, "write sucess");
     } catch (IOException e) {
      // TODO Auto-generated catch block
      Log.i(TAG, "file Write error");
     } finally {
      try {
       fos.close();
       bos.close();
       is.close();
       bis.close();
      } catch (IOException e) {
    
      }
     }
    }
  //DB open
    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.main);
        createB = (Button)findViewById(R.id.b01);
        dropB = (Button)findViewById(R.id.b02);
        insertB = (Button)findViewById(R.id.b03);
        updateB = (Button)findViewById(R.id.b04);
        deleteB = (Button)findViewById(R.id.b05);
        selectB = (Button)findViewById(R.id.bselect);
        
        createB.setOnTouchListener((OnTouchListener) this);
        dropB.setOnTouchListener((OnTouchListener) this);
        insertB.setOnTouchListener((OnTouchListener) this);
        updateB.setOnTouchListener((OnTouchListener) this);
        deleteB.setOnTouchListener((OnTouchListener) this);
        selectB.setOnTouchListener((OnTouchListener) this);
        
        et1 = (EditText)findViewById(R.id.et01);
        et2 = (EditText)findViewById(R.id.et02);
        et3 = (EditText)findViewById(R.id.et03);
        
        openDB();
    }
    
    private void openDB(){
     db = openOrCreateDatabase(DB_NAME, DB_MODE, null);
     showToast("DB("+DB_NAME+")생성 or 열림");
    }
    //Message
    private void showToast(String msg) {
  // TODO Auto-generated method stub
  Toast.makeText(this,msg,Toast.LENGTH_SHORT).show();
 }
 
 public boolean onTouch(View v, MotionEvent event) {
   // TODO Auto-generated method stub
     if(v == createB){
      createTable();
     }else if(v == dropB){
      dropTable();
     }else if(v == insertB){
      insertData();
     }else if(v == updateB){
      updateData();
     }else if(v == deleteB){ 
      deleteData();
     }else{ //v == selectB
      selectData();
     }
  return false;
 }
 
 //SQL Process
 private boolean execSQL(String sql){
  try{
   db.execSQL(sql);
   return true;
  }catch (SQLException se) {
   // TODO: handle exception
   return false;
  }  
 }
 
 //Data Select
 private void selectData() {
  // TODO Auto-generated method stub
  String sql = "SELECT name, location, number FROM ";
   sql += T_NAME;
   sql += " WHERE name = \"";
   sql += et1.getText().toString();
   sql += "\"";
  Log.e("selectData(): ",sql);
  try{
   Cursor cur = db.rawQuery(sql, null);
   
   cur.moveToFirst();
   if(cur.getCount() > 0){
    et2.setText(cur.getString(1));
    et3.setText(cur.getString(cur.getColumnIndex("number"))); 
   }else{
    showToast("조회 데이타가 없습니다.");
   }
   
  }catch (SQLException se) {
   // TODO: handle exception
   Log.e("selectData()Error! : ",se.toString());
  }   
 }
 
 //Data Delete
 private void deleteData() {
  // TODO Auto-generated method stub
  String sql = "DELETE FROM ";
  sql += T_NAME;
  sql += " WHERE name = \"";
  sql += et1.getText().toString();
  sql += "\"";
  
  if(!this.execSQL(sql)){
   showToast("Data("+T_NAME+")delete Error!");
  }else{
   showToast("Data("+T_NAME+")delete OK!");
  }
 }
 
 //Data Update
 private void updateData() {
  // TODO Auto-generated method stub
  String sql = "UPDATE ";
  sql += T_NAME;
  sql += " SET ";
  sql += " location = '";
  sql += et2.getText().toString();
  sql += "', number = '";
  sql += et3.getText().toString();
  sql += "' WHERE name = \"";
  sql += et1.getText().toString();
  sql += "\"";

  if(!this.execSQL(sql)){
   showToast("Data("+T_NAME+")update Error!");
  }else{
   showToast("Data("+T_NAME+")update OK!");
  }
 }
 
 //Data Insert
 private void insertData() {
  // TODO Auto-generated method stub
  String sql = "INSERT INTO ";
  sql += T_NAME;
  sql += "(name,location,number,ddate) VALUES ( '";
  sql += et1.getText().toString();
  sql += "', '";
  sql += et2.getText().toString();
  sql += "', '";
  sql += et3.getText().toString();
  sql += "', ";  
  sql += "date('now') )";
  
  if(!this.execSQL(sql)){
   showToast("Data("+T_NAME+")insert Error!");
  }else{
   showToast("Data("+T_NAME+")insert OK!");
  }
 }
 
 //Table Drop
 private void dropTable() {
  // TODO Auto-generated method stub
  String sql = "drop table ";
  sql += T_NAME;
  
  try{
   db.execSQL(sql);
   showToast("Table("+T_NAME+")삭제 완료!");
  }catch (SQLException se) {
   // TODO: handle exception
   Log.e("dropTable()Error! : ",se.toString());
  }
 }
 
 //Table Create
 private void createTable() {
  // TODO Auto-generated method stub
  String sql = "create table ";
  sql += T_NAME;
  sql += "(_id integer primary key autoincrement, name text not null, location text not null,  ";
  sql += "number text default 'one', ddate date)";
  
  try{
   db.execSQL(sql);
   showToast("Table("+T_NAME+")생성 완료!");
  }catch (SQLException se) {
   // TODO: handle exception
   //Log.e("createTable()시오류 : ",se.toString());
  }
 }
}