회원가입페이지 같은걸 구현하는데...
테이블에 값이 입력이되질 않습니다.
조언 좀 부탁드릴게요~ㅠ
밤새도록 메달렷는데...ㅠ
혹시 디비오픈핼퍼를 이용해야하나요?
보통 값을 넣을때 어떤 과정을 거처야하나요?
package tic.diet.android;
import android.app.Activity;
import android.os.Bundle;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.Button;
import android.widget.EditText;
import android.widget.RadioButton;
import android.widget.Toast;
import android.content.ContentValues;
import android.database.sqlite.SQLiteDatabase;
import android.util.Log;
import java.util.Arrays;
import java.util.Locale;
public class regActivity extends Activity implements OnClickListener {
/** Called when the activity is first created. */
private static final String DEBUG_TAG = "FullDatabase Log";
private static final String DATABASE_NAME="diet.db";
private static final String DATABASE_TABLE="user_db";
private static final String DATABASE_FIELD ="name";
private static final String DATABASE_FIELD1 ="tall";
private static final String DATABASE_FIELD2 ="wei";
private static final String DATABASE_FIELD3 ="sex";
private static final String DATABASE_FIELD4 ="body";
private static final String CREATE_TABLE = "CREATE TABLE "+ DATABASE_TABLE +"(id Integer PRIMARY KEY AUTOINCREMENT, "+ DATABASE_FIELD +" TEXT,"+ DATABASE_FIELD1 +" Integer,"+ DATABASE_FIELD2 +" Integer,"+ DATABASE_FIELD3 +" text,"+ DATABASE_FIELD4 +" text); ";
private String DROP_TABLE ="DROP TABLE "+DATABASE_TABLE;
SQLiteDatabase mDatabase;
EditText nm;
EditText tl_et;
EditText wei_et ;
private static String name;
private static Integer tall;
private static Integer wei;
private static String sex;
private static String body;
public void insert(String name, Integer tall, Integer wei, String sex, String body){
Log.i(DEBUG_TAG, "*** insert ***");
ContentValues values = new ContentValues();
Log.i(DEBUG_TAG, "*** insert first ***");
values.put(this.DATABASE_FIELD, name);
Log.i(DEBUG_TAG, "*** insert name end ***");
values.put(DATABASE_FIELD1, tall);
Log.i(DEBUG_TAG, "*** insert tall end ***");
values.put(DATABASE_FIELD2, wei);
Log.i(DEBUG_TAG, "*** insert wei end ***");
values.put(DATABASE_FIELD3, sex);
Log.i(DEBUG_TAG, "*** insert sex end ***");
values.put(DATABASE_FIELD3, body);
Log.i(DEBUG_TAG, "*** insert body end ***"+ this.name +" "+ this.tall +" "+ this.wei +" "+ this.sex +" "+ this.body +" ");
mDatabase.insert(DATABASE_TABLE, null, values); // logcat에서 보면 이곳을 지나지 못하고 오류나네요.
Log.i(DEBUG_TAG, "*** insert succes ***");
}
public boolean check_null(){
Log.i(DEBUG_TAG, "*** check null method ***");
if(name == "" || tall ==0 || wei ==0 || sex =="" || body =="" ){
Log.i(DEBUG_TAG, "*** check null true end ***");
return true;
}
Log.i(DEBUG_TAG, "*** check null false end ***");
return false;
}
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.regpage);
Log.i(DEBUG_TAG, "*** DB if start ***");
if (Arrays.binarySearch(databaseList(), DATABASE_NAME) < 0) {
//DB생성,설정
Log.i(DEBUG_TAG, "*** DB if enter ***");
mDatabase = openOrCreateDatabase(DATABASE_NAME,
SQLiteDatabase.CREATE_IF_NECESSARY, null);
mDatabase.setVersion(1);
mDatabase.setLocale(Locale.getDefault());
mDatabase.setLockingEnabled(true);
try{
mDatabase.execSQL(CREATE_TABLE);
Log.i(DEBUG_TAG, "*** DB if create_table exe ***");
}catch(Exception e){
}
}
nm = (EditText)findViewById(R.id.et_name);
tl_et = (EditText)findViewById(R.id.et_tall);
wei_et = (EditText)findViewById(R.id.et_wei);
Log.i(DEBUG_TAG, "*** edit txt connect ***");
final RadioButton rb_m = (RadioButton) findViewById(R.id.rb_m);
final RadioButton rb_f = (RadioButton) findViewById(R.id.rb_f);
final RadioButton rb_ed = (RadioButton) findViewById(R.id.rb_ed);
final RadioButton rb_ms = (RadioButton) findViewById(R.id.rb_ms);
final RadioButton rb_et = (RadioButton) findViewById(R.id.rb_et);
Log.i(DEBUG_TAG, "*** radiobutton connect ***");
rb_m.setOnClickListener(radio_s);
rb_f.setOnClickListener(radio_s);
rb_ed.setOnClickListener(radio_b);
rb_ms.setOnClickListener(radio_b);
rb_et.setOnClickListener(radio_b);
Log.i(DEBUG_TAG, "*** listener connect ***");
Button r_i_b = (Button)findViewById(R.id.r_p_i);
r_i_b.setOnClickListener(this);
// TODO Auto-generated method stub
}
OnClickListener radio_s = new OnClickListener() {
public void onClick(View v) {
// Perform action on clicks
RadioButton rb = (RadioButton) v;
sex = rb.getText().toString();
Log.i(DEBUG_TAG, "*** s_radio_b exe ***");
}
};
OnClickListener radio_b = new OnClickListener() {
public void onClick(View v) {
// Perform action on clicks
RadioButton rb = (RadioButton) v;
body = rb.getText().toString();
Log.i(DEBUG_TAG, "*** body_radio_b exe ***");
}
};
@Override
public void onClick(View v) {
// TODO Auto-generated method stub
if(v.getId() == R.id.r_p_i){
Log.i(DEBUG_TAG, "*** insert_b exe ***");
if(!check_null()){
Log.i(DEBUG_TAG, "*** check if enter ***");
name = nm.getText().toString();
tall = Integer.parseInt(tl_et.getText().toString());
wei = Integer.parseInt(wei_et.getText().toString());
insert(name, tall, wei, sex, body);
Log.i(DEBUG_TAG, "*** db insert exe ***");
}else{
Toast.makeText(regActivity.this, "Check All Input", Toast.LENGTH_SHORT).show();
}
}
}
}
오류 또는 코드 리팩토링 가능부분도 언급해주셨으면 좋겠습니다.
아래는 로그캣 빨간부분입니다.
05-31 04:06:08.421: WARN/dalvikvm(262): threadid=1: thread exiting with uncaught exception (group=0x4001d800)
05-31 04:06:08.481: ERROR/AndroidRuntime(262): FATAL EXCEPTION: main
05-31 04:06:08.481: ERROR/AndroidRuntime(262): java.lang.NullPointerException
05-31 04:06:08.481: ERROR/AndroidRuntime(262): at tic.diet.android.regActivity.check_null(regActivity.java:65)
05-31 04:06:08.481: ERROR/AndroidRuntime(262): at tic.diet.android.regActivity.onClick(regActivity.java:144)
05-31 04:06:08.481: ERROR/AndroidRuntime(262): at android.view.View.performClick(View.java:2408)
05-31 04:06:08.481: ERROR/AndroidRuntime(262): at android.view.View$PerformClick.run(View.java:8816)
05-31 04:06:08.481: ERROR/AndroidRuntime(262): at android.os.Handler.handleCallback(Handler.java:587)
05-31 04:06:08.481: ERROR/AndroidRuntime(262): at android.os.Handler.dispatchMessage(Handler.java:92)
05-31 04:06:08.481: ERROR/AndroidRuntime(262): at android.os.Looper.loop(Looper.java:123)
05-31 04:06:08.481: ERROR/AndroidRuntime(262): at android.app.ActivityThread.main(ActivityThread.java:4627)
05-31 04:06:08.481: ERROR/AndroidRuntime(262): at java.lang.reflect.Method.invokeNative(Native Method)
05-31 04:06:08.481: ERROR/AndroidRuntime(262): at java.lang.reflect.Method.invoke(Method.java:521)
05-31 04:06:08.481: ERROR/AndroidRuntime(262): at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:868)
05-31 04:06:08.481: ERROR/AndroidRuntime(262): at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:626)
05-31 04:06:08.481: ERROR/AndroidRuntime(262): at dalvik.system.NativeStart.main(Native Method)
05-31 04:06:08.541: WARN/ActivityManager(65): Force finishing activity tic.diet.android/.regActivity