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

안드로이드 SQLite 추가,조회,종료 버튼을 누르면 앱이 사망합니다 ㅜ

0 추천
import android.app.*;
import android.database.*;
import android.os.Bundle;
import android.util.*;
import android.view.*;
import android.widget.*;

public class Insert extends ListActivity implements View.OnClickListener {
   // DBHelper myhelper;
  //  SQLiteDatabase sqlDB;
    DBHandler dbHandler;

    EditText editname, editcardsa, editcardnumber;
    ListView listView;
    Cursor cursor = null;
    String[] arr = null;

    private Button btnexit;
    Button btnsave,  btnSelect;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.listactivity);

        btnsave = (Button) findViewById(R.id.btnsave);
        btnSelect = (Button) findViewById(R.id.btnselect);
        btnexit = (Button) findViewById(R.id.btnexit);

        btnsave.setOnClickListener(this);
        btnSelect.setOnClickListener(this);
        btnexit.setOnClickListener(this);

        editname = (EditText) findViewById(R.id.editText);
        editcardsa = (EditText) findViewById(R.id.editText2);
        editcardnumber = (EditText) findViewById(R.id.editText3);

        listView = (ListView) findViewById(android.R.id.list);

    }

    @Override
    public void onClick(View v) {
        dbHandler = DBHandler.open(this);


        try {
            if (v.getId()== R.id.btnsave) {
                if (editname.getText().toString().equals("")) {
                    Toast.makeText(this, "이름 입력", Toast.LENGTH_SHORT).show();
                    return;
                } else if (editcardsa.getText().toString().equals("")) {
                    Toast.makeText(this, "카드사 입력", Toast.LENGTH_SHORT).show();
                    return;
                } else if (editcardnumber.getText().toString().equals("")) {
                    Toast.makeText(this, "카드번호 입력", Toast.LENGTH_SHORT).show();
                    return;
                }

                long re = dbHandler.insert(
                        editname.getText().toString(),
                        editcardsa.getText().toString(),
                        editcardnumber.getText().toString());
                if (re == 0) {
                    Toast.makeText(this, "추가 실패", Toast.LENGTH_SHORT).show();
                } else {
                    Toast.makeText(this, "추가 성공", Toast.LENGTH_SHORT).show();
                    cursor = dbHandler.selectAll();
                    arr = new String[cursor.getCount()];
                    int count = 0;
                    while (cursor.moveToNext()) {
                        String code = cursor.getString(0);
                        String strUserName = cursor.getString(1);
                        String strCardSa = cursor.getString(2);
                        String strCardNumber = cursor.getString(3);
                        arr[count] = code + " " + strUserName + " " + strCardSa + " " + strCardNumber;
                        count++;
                    }
                    cursor.close();
                    invalidate();
                }

            } else if (v.getId()== R.id.btnselect) {
                cursor = dbHandler.selectAll();
                arr = new String[cursor.getCount()];
                int count = 0;
                while (cursor.moveToNext()) {
                    String code = cursor.getString(0);
                    String strUserName = cursor.getString(1);
                    String strCardSa = cursor.getString(2);
                    String strCardNumber = cursor.getString(3);
                    arr[count] = code + " " + strUserName + " " + strCardSa + " " + strCardNumber;
                    count++;
                }
                }
                else if (v.getId()== R.id.btnexit) {
                finish();
            }
                cursor.close();
                invalidate();



        } catch (Exception e) {
            Log.i("disp", "err:" + e);
        }

    }
    private void invalidate() {
        ListAdapter adapter = new ArrayAdapter<String>(this,
                android.R.layout.simple_list_item_1, arr);
        setListAdapter(adapter);
    }

    @Override
    public boolean onCreateOptionsMenu(Menu menu) {
        // Inflate the menu; this adds items to the action bar if it is present.
        getMenuInflater().inflate(R.menu.menu_insert, menu);
        return true;
    }

    @Override
    public boolean onOptionsItemSelected(MenuItem item) {
        // Handle action bar item clicks here. The action bar will
        // automatically handle clicks on the Home/Up button, so long
        // as you specify a parent activity in AndroidManifest.xml.
        int id = item.getItemId();

        //noinspection SimplifiableIfStatement
        if (id == R.id.action_settings) {
            return true;
        }

        return super.onOptionsItemSelected(item);
    }

}
import android.content.Context;
import android.database.sqlite.SQLiteDatabase;
import android.database.sqlite.SQLiteOpenHelper;

public class DBHelper extends SQLiteOpenHelper {
    private static final String DB_NAME = "NFC";
    private static final int    DB_VER = 1;


    public DBHelper(Context context) {
        super(context, DB_NAME, null, DB_VER);
    }

    @Override
    public void onCreate(SQLiteDatabase db) {
        String sql = "create table NFC(" +
                "code text primary key autoincrement," +
                "strUserName text not null, strCardSa text not null ," +
                "strCardNumber integer not null)";
        db.execSQL(sql);
    }

    @Override
    public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {
        db.execSQL("drop table if exist NFC");
        onCreate(db);
    }
}

 

import android.content.*;
import android.database.*;
import android.database.sqlite.*;

/**
 * Created by inhatc on 2015-05-26.
 */
public class DBHandler {
    private Context ctx;

    private   DBHelper myhelper;
    private SQLiteDatabase sqlDB;

    public  DBHandler(Context ctx) {
        this.ctx = ctx;
        myhelper = new DBHelper(ctx);
        sqlDB = myhelper.getWritableDatabase();


    }

    public static DBHandler open(Context ctx) throws SQLException {
        DBHandler handler = new DBHandler(ctx);
        return handler;
    }
    public void close() {
        myhelper.close();
    }
    public long insert(String strUserName,String strCardSa,String strCardNumber) {
        ContentValues values = new ContentValues();
        values.put("strUserName",strUserName);
        values.put("strCardSa",strCardSa);
        values.put("strCardNumber",strCardNumber);
        long result =sqlDB.insert("NFC", null, values);
        return result;
    }

    public Cursor selectAll() {
        Cursor cursor = sqlDB.query(true,"NFC",
                new String[]{"code","strUserName","strCardSa","strCardNumber"},
                null, null, null, null, null, null);
        return cursor;
    }

}

 

각 버튼에 클릭리스너 주고 했는데 ㅜ 

버튼들을 누르면 계속 앱이 .. 운명 하시네요 ㅜ..

코드를 하루종일 봐도 문제점을 모르겠는데 ㅜ 답답함만 늘어갑니다 ㅜ 

꼭좀 도와주세요 ㅜㅜ 

익명사용자 님이 2015년 5월 28일 질문

2개의 답변

0 추천
코드말고 로그캣 에러내용을 보고 문제점을 찾으셔야죠.
익명사용자 님이 2015년 5월 28일 답변
0 추천
그냥 죽는게 아니라 사인이 있을텐데 그걸 찾아보심이..ㅎㅎ..

처음 접하는 남의 코드로 원인을 파악하기 쉽지 않습니다.

버튼을 눌렀을 때 문제점이 발생했으니, 버튼 이벤트쪽을 살펴보시고,

다음에 질문올리시면 에러로그도 올리세요..
anci (19,950 포인트) 님이 2015년 5월 28일 답변
제 스마트폰 연결을 해서 하는데 ㅜ 엄청많은 로그캣 내용이 쓕쓕쓕 계속 올라가네요 ㅜ ..
로그캣에 필터적용하세요. 원하는 것만 볼 수 있습니다.
...