Android에서 sqlite 데이터베이스를 사용하는 NullpointerException

achref

android를 사용하여 재생 목록 개체를 sqlite 데이터베이스에 삽입하려고하는데 데이터베이스를 열 때 NullPointerException이 발생합니다. 내 PlaylistDbAdapter는 다음과 같습니다.

    import java.util.ArrayList;
    import java.util.List;

    import android.content.ContentValues;
    import android.content.Context;
    import android.database.Cursor;
    import android.database.SQLException;
    import android.database.sqlite.SQLiteDatabase;
    import android.database.sqlite.SQLiteOpenHelper;

    public class PlaylistDbAdapter{

// All Static variables
// Database Version
private static final int DATABASE_VERSION = 2;

// Database Name
private static final String DATABASE_NAME = "playlistdb";

// Contacts table name
private static final String TABLE_NAME = "playlists";

// Contacts Table Columns names
private static final String KEY_ID = "id";
private static final String KEY_NAME = "name";
private DatabaseHelper dh;
 private SQLiteDatabase mDb;
private final Context mCtx;

private static class DatabaseHelper extends SQLiteOpenHelper{

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

// Creating Tables
@Override
public void onCreate(SQLiteDatabase db) {
    String CREATE_PLAYLISTS_TABLE =  "create table playlists (id integer primary key autoincrement, name text not null);";
    db.execSQL(CREATE_PLAYLISTS_TABLE);
}

// Upgrading database
@Override
public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {
    // Drop older table if existed
    db.execSQL("DROP TABLE IF EXISTS " + TABLE_NAME);

    // Create tables again
    onCreate(db);
}
}


 public  PlaylistDbAdapter(Context ctx) {
        this.mCtx = ctx;
    }
 public PlaylistDbAdapter open() throws SQLException {
        dh = new DatabaseHelper(mCtx);
        mDb = dh.getWritableDatabase();
        return this;
    }

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

/**
 * All CRUD(Create, Read, Update, Delete) Operations
 * @return 
 */

void addPlaylist(Playlist playlist) {

    ContentValues values = new ContentValues();
    values.put(KEY_NAME, playlist.getName()); // Playlist Name

    // Inserting Row
    mDb.insert(TABLE_NAME, null, values);
    mDb.close(); // Closing database connection
}

// Getting single playlist
Playlist getPlaylist(int id) {
    SQLiteDatabase db = dh.getReadableDatabase();

    Cursor cursor = db.query(TABLE_NAME, new String[] { KEY_ID,
            KEY_NAME}, KEY_ID + "=?",
            new String[] { String.valueOf(id) }, null, null, null);
    if (cursor != null)
        cursor.moveToFirst();

    Playlist playlist = new Playlist (Integer.parseInt(cursor.getString(0)),
            cursor.getString(1));
    // return playlist
    System.out.println(playlist._name);
    return playlist;
}

// Getting All Playlists
public List<Playlist> getAllPlaylists() {
    List<Playlist> contactList = new ArrayList<Playlist>();
    // Select All Query
    String selectQuery = "SELECT  * FROM " + TABLE_NAME;

    SQLiteDatabase db = dh.getWritableDatabase();
    Cursor cursor = db.rawQuery(selectQuery, null);

    // looping through all rows and adding to list
    if (cursor.moveToFirst()) {
        do {
            Playlist playlist = new Playlist();
            playlist.setID(Integer.parseInt(cursor.getString(0)));
            playlist.setName(cursor.getString(1));
            // Adding playlist to list
            contactList.add(playlist);
        } while (cursor.moveToNext());
    }

    // return playlist list
    return contactList;
}

// Updating single playlist
public int updatePlaylist(Playlist playlist) {
    SQLiteDatabase db = dh.getWritableDatabase();

    ContentValues values = new ContentValues();
    values.put(KEY_NAME, playlist.getName());

    // updating row
    return db.update(TABLE_NAME, values, KEY_ID + " = ?",
            new String[] { String.valueOf(playlist.getID()) });
}

// Deleting single playlist
public void deletePlaylist(Playlist playlist) {
    SQLiteDatabase db = dh.getWritableDatabase();
    db.delete(TABLE_NAME, KEY_ID + " = ?",
            new String[] { String.valueOf(playlist.getID()) });
    db.close();
}


// Getting playlists Count
public int getPlaylistCount() {
    String countQuery = "SELECT  * FROM " + TABLE_NAME;
    SQLiteDatabase db = dh.getReadableDatabase();
    Cursor cursor = db.rawQuery(countQuery, null);
    cursor.close();
    // return count
    return cursor.getCount();
}

    }

이것은 내 재생 목록 개체입니다

    public class Playlist {


//private variables
int _id;
String _name;

// Empty constructor
public Playlist(){

}
// constructor
public Playlist(int id, String name){
    this._id = id;
    this._name = name;
}

// constructor
public Playlist(String name){
    this._name = name;
}
// getting ID
public int getID(){
    return this._id;
}

// setting id
public void setID(int id){
    this._id = id;
}

// getting name
public String getName(){
    return this._name;
}

// setting name
public void setName(String name){
    this._name = name;
}

    }

그리고 이것은 사용자가 재생 목록의 이름을 선택하는 경고 대화 상자를 사용하여 새 재생 목록을 추가하는 AddPlaylist 클래스입니다.

    import android.os.Bundle;

    import android.text.InputType;
    import android.view.View;
    import android.widget.EditText;
    import android.widget.ImageButton;
    import android.widget.Toast;
    import android.app.Activity;
    import android.app.AlertDialog;
    import android.content.Context;
    import android.content.DialogInterface;
    import android.database.sqlite.SQLiteDatabase;


    public class AddPlaylist extends Activity{
private ImageButton btnAddPlaylist;
private String playlistName = "";
public PlaylistDbAdapter dh;
private SQLiteDatabase db;

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);     
    setContentView(R.layout.add_playlist);
    btnAddPlaylist = (ImageButton) findViewById(R.id.btnAddPlaylist);
    btnAddPlaylist.setOnClickListener(new View.OnClickListener(){

        @Override
        public void onClick(View arg0) {
            popUpNewPlaylist();
        }

    });
}
public void popUpNewPlaylist()
{   

    AlertDialog.Builder builder = new AlertDialog.Builder(this);
    builder.setTitle("Playlist name");

    // Set up the input
    final EditText input = new EditText(this);
    // Specify the type of input expected; this, for example, sets the input as a password, and will mask the text
    input.setInputType(InputType.TYPE_CLASS_TEXT | InputType.TYPE_CLASS_TEXT);
    builder.setView(input);

    // Set up the buttons
    builder.setPositiveButton("Add", new DialogInterface.OnClickListener() { 
        @Override
        public void onClick(DialogInterface dialog, int which) {
            playlistName = input.getText().toString();
            Playlist tmpPLST = new Playlist();
            tmpPLST.setName(playlistName);
            dh.open();
            //dh.addPlaylist(tmpPLST);
            popupSuccessToast();
        }
    });
    builder.setNegativeButton("Cancel", new DialogInterface.OnClickListener() {
        @Override
        public void onClick(DialogInterface dialog, int which) {
            dialog.cancel();
            popupCancelToast();
        }
    });

    builder.show();
}

public void popupSuccessToast()
{
    Context context = getApplicationContext();
    CharSequence text = "Playlist "+playlistName+" Added";
    int duration = Toast.LENGTH_SHORT;

    Toast toast = Toast.makeText(context, text, duration);
    toast.show();
}

public void popupCancelToast()
{
    Context context = getApplicationContext();
    CharSequence text = "Operation canceled";
    int duration = Toast.LENGTH_SHORT;

    Toast toast = Toast.makeText(context, text, duration);
    toast.show();
}


    } 

내 충돌 로그

    04-27 18:43:34.151: E/AndroidRuntime(4338): FATAL EXCEPTION: main
    04-27 18:43:34.151: E/AndroidRuntime(4338): java.lang.NullPointerException
    04-27 18:43:34.151: E/AndroidRuntime(4338):     at                               ca.uqac.powerplayer.AddPlaylist$2.onClick(AddPlaylist.java:58)
    04-27 18:43:34.151: E/AndroidRuntime(4338):     at             com.android.internal.app.AlertController$ButtonHandler.handleMessage(AlertController.java)
     04-27 18:43:34.151: E/AndroidRuntime(4338):    at    android.os.Handler.dispatchMessage(Handler.java)
     04-27 18:43:34.151: E/AndroidRuntime(4338):    at android.os.Looper.loop(Looper.java)
    04-27 18:43:34.151: E/AndroidRuntime(4338):     at android.app.ActivityThread.main(ActivityThread.java)
    04-27 18:43:34.151: E/AndroidRuntime(4338):     at java.lang.reflect.Method.invokeNative(Native Method)
    04-27 18:43:34.151: E/AndroidRuntime(4338):     at java.lang.reflect.Method.invoke(Method.java)
    04-27 18:43:34.151: E/AndroidRuntime(4338):     at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java)
    04-27 18:43:34.151: E/AndroidRuntime(4338):     at com.android.internal.os.ZygoteInit.main(ZygoteInit.java)
    04-27 18:43:34.151: E/AndroidRuntime(4338):     at dalvik.system.NativeStart.main(Native Method)

감사.

리빈

문제는 AddPlaylist수업에서 PlaylistDbAdapter dh그렇지 않다는 것 instantiated입니다. 그리고 당신은 액세스하려고 dh.open()의 방법을 onClick.

PlaylistDbAdapter메서드 또는 변수에 액세스하려면에 대한 인스턴스를 만들어야합니다 .

이 기사는 인터넷에서 수집됩니다. 재 인쇄 할 때 출처를 알려주십시오.

침해가 발생한 경우 연락 주시기 바랍니다[email protected] 삭제

에서 수정
0

몇 마디 만하겠습니다

0리뷰
로그인참여 후 검토

관련 기사

분류에서Dev

SQLite를 사용하는 Android 데이터베이스 오류

분류에서Dev

sqlite를 사용하여 데이터베이스에서 데이터에 액세스하는 방법

분류에서Dev

android에서 sqlite 데이터베이스에 대한 insert () 메서드를 사용하는 방법

분류에서Dev

Android에서 sqlite 데이터베이스를 정렬하는 방법

분류에서Dev

Android에서 기존 sqlite 데이터베이스의 데이터를 업데이트하는 방법

분류에서Dev

Android SDK 용 SQLite 데이터베이스

분류에서Dev

파이썬에서 sqlite3를 사용하여 데이터베이스를 만드는 방법

분류에서Dev

swiftyJSON 및 sqlite.swift를 사용하여 json 기반 데이터를 sqlite 데이터베이스에 추가

분류에서Dev

Android에서 rawQuery 및 rowid를 사용하여 sqlite 데이터베이스에서 한 행 선택

분류에서Dev

매개 변수를 사용하여 SQlite 데이터베이스에서 데이터를 선택하십시오.

분류에서Dev

Expo를 사용하여 React Native에서 DocumentPicker에서 SQLite 데이터베이스를 여는 방법

분류에서Dev

android studio는 Sqlite 데이터베이스에서 데이터를 검색하여 textview에 표시합니다

분류에서Dev

OGM 드라이버를 사용하여 Neo4j 데이터베이스에서 데이터를로드하는 동안 NullPointerException이 발생했습니다.

분류에서Dev

PHP 스크립트를 사용하여 Android 앱에서 SQLite 데이터베이스 파일 업로드

분류에서Dev

Android에서 sqlite 데이터베이스 수동 복사

분류에서Dev

SQLite 데이터베이스에서 Android의 문자열 형식으로 데이터를 검색하는 방법

분류에서Dev

Android-SQLite 데이터베이스에서 데이터를 검색하는 가장 빠른 방법

분류에서Dev

Android는 SQLite 데이터베이스에서 값 검색

분류에서Dev

Android는 SQLite 데이터베이스에서 값 검색

분류에서Dev

sqlalchemy를 사용하여 sqlite에서 만든 데이터베이스의 SQL 덤프를 얻는 방법

분류에서Dev

sqlite를 사용하여 Excel 시트에서 데이터베이스 만들기, OperationalError : near "Android": 구문 오류

분류에서Dev

bash를 사용하여 sqlite 데이터베이스에 값 삽입

분류에서Dev

AndroidStudio를 사용하여 기기에 sqlite 데이터베이스 생성

분류에서Dev

Jetbrains에서 Datagrip을 사용할 때 sqlite 데이터베이스를 저장하는 방법

분류에서Dev

스위치를 사용하여 sqlite 데이터베이스에서 데이터를 선택하는 Java 코드를 작성하려고합니다.

분류에서Dev

Android에서 sqlite 데이터베이스를 업데이트하는 동안 구문 오류

분류에서Dev

postgres 데이터베이스에서 android sqlite로 데이터를 가져 오는 방법

분류에서Dev

Java SQLite 데이터베이스, nullPointerException을 제공하는 항목 삽입

분류에서Dev

Android에서 Sqlite 데이터베이스에 싱글 톤 패턴 사용

Related 관련 기사

  1. 1

    SQLite를 사용하는 Android 데이터베이스 오류

  2. 2

    sqlite를 사용하여 데이터베이스에서 데이터에 액세스하는 방법

  3. 3

    android에서 sqlite 데이터베이스에 대한 insert () 메서드를 사용하는 방법

  4. 4

    Android에서 sqlite 데이터베이스를 정렬하는 방법

  5. 5

    Android에서 기존 sqlite 데이터베이스의 데이터를 업데이트하는 방법

  6. 6

    Android SDK 용 SQLite 데이터베이스

  7. 7

    파이썬에서 sqlite3를 사용하여 데이터베이스를 만드는 방법

  8. 8

    swiftyJSON 및 sqlite.swift를 사용하여 json 기반 데이터를 sqlite 데이터베이스에 추가

  9. 9

    Android에서 rawQuery 및 rowid를 사용하여 sqlite 데이터베이스에서 한 행 선택

  10. 10

    매개 변수를 사용하여 SQlite 데이터베이스에서 데이터를 선택하십시오.

  11. 11

    Expo를 사용하여 React Native에서 DocumentPicker에서 SQLite 데이터베이스를 여는 방법

  12. 12

    android studio는 Sqlite 데이터베이스에서 데이터를 검색하여 textview에 표시합니다

  13. 13

    OGM 드라이버를 사용하여 Neo4j 데이터베이스에서 데이터를로드하는 동안 NullPointerException이 발생했습니다.

  14. 14

    PHP 스크립트를 사용하여 Android 앱에서 SQLite 데이터베이스 파일 업로드

  15. 15

    Android에서 sqlite 데이터베이스 수동 복사

  16. 16

    SQLite 데이터베이스에서 Android의 문자열 형식으로 데이터를 검색하는 방법

  17. 17

    Android-SQLite 데이터베이스에서 데이터를 검색하는 가장 빠른 방법

  18. 18

    Android는 SQLite 데이터베이스에서 값 검색

  19. 19

    Android는 SQLite 데이터베이스에서 값 검색

  20. 20

    sqlalchemy를 사용하여 sqlite에서 만든 데이터베이스의 SQL 덤프를 얻는 방법

  21. 21

    sqlite를 사용하여 Excel 시트에서 데이터베이스 만들기, OperationalError : near "Android": 구문 오류

  22. 22

    bash를 사용하여 sqlite 데이터베이스에 값 삽입

  23. 23

    AndroidStudio를 사용하여 기기에 sqlite 데이터베이스 생성

  24. 24

    Jetbrains에서 Datagrip을 사용할 때 sqlite 데이터베이스를 저장하는 방법

  25. 25

    스위치를 사용하여 sqlite 데이터베이스에서 데이터를 선택하는 Java 코드를 작성하려고합니다.

  26. 26

    Android에서 sqlite 데이터베이스를 업데이트하는 동안 구문 오류

  27. 27

    postgres 데이터베이스에서 android sqlite로 데이터를 가져 오는 방법

  28. 28

    Java SQLite 데이터베이스, nullPointerException을 제공하는 항목 삽입

  29. 29

    Android에서 Sqlite 데이터베이스에 싱글 톤 패턴 사용

뜨겁다태그

보관