2012-06-20 1 views
1

주요 활동 :Null 포인터 예외 회 전자 및 기타 텍스트 값을 안드로이드에 sqlite 데이터베이스에 삽입하는 동안?

private Button btnSubmit; 
private DataSource mDataSource; 
private Context mContext; 
@Override 
public void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.main); 
    final EditText first_name = (EditText) findViewById(R.id.first_name); 
    final Spinner relation = (Spinner) findViewById(R.id.relation); 
    final EditText address = (EditText) findViewById(R.id.address); 
    Button mSubmitButton = (Button) findViewById(R.id.btnSubmit); 
    relation.setOnItemSelectedListener(new CustomOnItemSelectedListener()); 
    mSubmitButton.setOnClickListener(new View.OnClickListener() { 

      @Override 
      public void onClick(View v) { 
       String fName = first_name.getText().toString(); 
       String re_lation = (String) relation.getSelectedItem(); 
       String add_ress = address.getText().toString(); 
       if ((fName.length() <=0) || (re_lation.length()<=0) || (add_ress.length()<=0)) { 
         Toast.makeText(MyAndroidAppActivity.this, "please fill the data", Toast.LENGTH_SHORT).show(); 
       } else{ 
         Log.i("name",fName); 
         Log.i("rel",re_lation); 
         Log.i("e",add_ress); 
         mDataSource.addUser(fName, re_lation, add_ress); 

       } 
      } 
    }); 
} 

DataSource.java

private SQLiteDatabase mSQLiteDatabase; 
private MySQLiteHelper mSQLiteHelper; 
private String[] mAllColumns = { 
     MySQLiteHelper.COLUMN_ID, MySQLiteHelper.COLUMN_FIRST_NAME, MySQLiteHelper.COLUMN_RELATION, MySQLiteHelper.COLUMN_ADDRESS 
}; 

public DataSource (Context context){ 
     mSQLiteHelper = new MySQLiteHelper(context); 
} 

public void open() throws SQLiteException { 
     mSQLiteDatabase = mSQLiteHelper.getWritableDatabase(); 
} 

public void close() { 
     mSQLiteHelper.close(); 
} 

public void addUser(String first_name, String relation, String address){ 
     ContentValues values = new ContentValues(); 
     Log.i("name",first_name); 
     values.put(MySQLiteHelper.COLUMN_FIRST_NAME, first_name); 
     values.put(MySQLiteHelper.COLUMN_RELATION, relation); 
     values.put(MySQLiteHelper.COLUMN_ADDRESS, address); 
     mSQLiteDatabase.insert(MySQLiteHelper.TABLE_USERS, null, values); 
     //Cursor cursor = mSQLiteDatabase.query(MySQLiteHelper.TABLE_USERS, allcolumns, selection, selectionArgs, groupBy, having, orderBy) 
} 

MySQLiteHelper.java

public class MySQLiteHelper extends SQLiteOpenHelper { 
     public static final String TABLE_USERS = "users"; 
     public static final String COLUMN_ID = "_id"; 
     public static final String COLUMN_FIRST_NAME = "first_name"; 
     public static final String COLUMN_RELATION = "relation"; 
     public static final String COLUMN_ADDRESS = "address"; 



     private static final String DATABASE_NAME = "users.db"; 
     private static final int DATABASE_VERSION = 1; 

     // Database creation sql statement 
     private static final String DATABASE_CREATE = "create table " 
       + TABLE_USERS + "(" + COLUMN_ID 
       + " integer primary key autoincrement, " + COLUMN_FIRST_NAME 
       + " text not null," + COLUMN_RELATION + " text not null," + 
       COLUMN_ADDRESS + " text not null);"; 



     public MySQLiteHelper(Context context) { 
      super(context, DATABASE_NAME, null, DATABASE_VERSION); 
     } 

     @Override 
     public void onCreate(SQLiteDatabase db) { 
      db.execSQL(DATABASE_CREATE); 

     } 

     @Override 
     public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) { 
      db.execSQL("DROP TABLE IF EXISTS "+TABLE_USERS); 
      onCreate(db); 

     } 
} 

오류 로그 캣 : 여기

06-20 11:26:02.043: E/AndroidRuntime(342): FATAL EXCEPTION: main 
06-20 11:26:02.043: E/AndroidRuntime(342): java.lang.NullPointerException 
06-20 11:26:02.043: E/AndroidRuntime(342): at com.mkyong.android.MyAndroidAppActivity$1.onClick(MyAndroidAppActivity.java:62) 
06-20 11:26:02.043: E/AndroidRuntime(342): at android.view.View.performClick(View.java:2485) 
06-20 11:26:02.043: E/AndroidRuntime(342): at android.view.View$PerformClick.run(View.java:9080) 
06-20 11:26:02.043: E/AndroidRuntime(342): at android.os.Handler.handleCallback(Handler.java:587) 
06-20 11:26:02.043: E/AndroidRuntime(342): at android.os.Handler.dispatchMessage(Handler.java:92) 
06-20 11:26:02.043: E/AndroidRuntime(342): at android.os.Looper.loop(Looper.java:123) 
06-20 11:26:02.043: E/AndroidRuntime(342): at android.app.ActivityThread.main(ActivityThread.java:3683) 
06-20 11:26:02.043: E/AndroidRuntime(342): at java.lang.reflect.Method.invokeNative(Native Method) 
06-20 11:26:02.043: E/AndroidRuntime(342): at java.lang.reflect.Method.invoke(Method.java:507) 
06-20 11:26:02.043: E/AndroidRuntime(342): at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:839) 
06-20 11:26:02.043: E/AndroidRuntime(342): at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:597) 

나는 t을 가지고 그는 널 포인터 예외에 값을 제출 중 동안

mDataSource.addUser(fName, re_lation, add_ress); 내가 이리와 생성되지 않습니다 데이터베이스 values.but 세 가지 오류 라인을 지적하고있어 오류 라인, 스피너와 SQLite는 데이터베이스에서 다른 텍스트 값을 삽입하는 동안 데이터베이스에, 그것은 null 포인터 exception.what 내 프로그램에 오류가 throw됩니다. 아무도 말해 줄래? 아직 open() 메서드 당신의 onCreate() 콜백

protected void onCreate(Bundle savedInstanceState) 
{ 

setContentView(R.layout.layout); 
mDataSource = new DataSource(getBaseContext()); 

// ... The Rest of your code 
} 

과 또한 데이터 소스의 생성자의 호출에

당신이 그것을 초기화해야

을 초기화되지

+0

View에서 삭제 view.onClickListener j에서보기 시도해주세요 onClickListener –

+0

onclicklisnter 메서드가 작동하고 있습니다. 해당 줄이 여기에서 호출하지 않습니다. 그러나 올바른 생성자를 넣으십시오. – rajeshlawrance

답변

0

mDataSource 사전에

감사

public DataSource (Context context){ 

mSQLiteHelper = new MySQLiteHelper(context); 
open(); 
} 

public void open() throws SQLiteException { 
     mSQLiteDatabase = mSQLiteHelper.getWritableDatabase(); 
} 
+0

mDataSource를 초기화하는 방법은? 여기 oncreateInstance 위에 이미 초기화되어 있습니다. – rajeshlawrance

+0

보이지 않습니다. 귀하의 코드에 따르면 ... –

+0

ya.now 그것의 ok.but 이제 내가 줄 mSQLiteDatabase.insert (MySQLiteHelper.TABLE_USERS, null, 값) 다른 오류가있어; DataSource.java .... – rajeshlawrance

관련 문제