2017-04-25 7 views
0

사용자가 입력 한 값을 전역 변수의 편집 텍스트 필드에 저장합니다. 그런 다음이 값을 데이터베이스에 비디오 URI와 함께 데이터베이스의 두 개의 별도 열에 삽입하려고합니다. 그것은 비록 내 데이터베이스에 어떤 값을 입력하지 않는 것 같습니다. 내 코드는 다음과 같습니다 :Android- 문자열이 데이터베이스에 저장되지 않음

이 활동이 시작되면 사용자는 제목을 입력하라는 메시지가 나타나면 녹음 버튼을 눌러 비디오 녹화를 시작합니다. 다시 한 번 내 데이터가 내 데이터베이스에 저장되지 않습니다. 누군가가 내 오류를 발견 할 수 있다면 문자열 medName이 런타임 전에 미리 정의 된 값으로 선언되면 데이터가 입력되기 때문에 감사하겠습니다.

데이터베이스 코드 : SQLiteOpenHelper.OnCreate 방법은 한 번 호출하기 때문에

public class MediaContentDB { 

public static final String KEY_ID = "content_id"; 
public static final String KEY_PHOTO_ID = "photo_id"; 
public static final String KEY_MEDIA_PATH = "media_path"; 
public static final String KEY_MEDIA_NAME ="media_name"; 
public static final String KEY_PHOTO_NAME ="photo_name"; 
public static final String KEY_PHOTO_PATH = "photo_path"; 
private MyDataBaseHelper myDataBaseHelper; 
Context context; 


public MediaContentDB(Context context){ 
    this.context=context; 

    myDataBaseHelper = new MyDataBaseHelper(context,MyDataBaseHelper.DATABASE_NAME,null, MyDataBaseHelper.DATABASE_VERSION); 

} 

public void closeDatabase() { 
    myDataBaseHelper.close(); 
} 

public void addVideoRow(String videoPath, String mediaName) { 

    ContentValues newVideo = new ContentValues(); 

    newVideo.put(KEY_MEDIA_PATH, videoPath); 
    newVideo.put(KEY_MEDIA_NAME, mediaName); 


    SQLiteDatabase db = myDataBaseHelper.getWritableDatabase(); 
    db.insert(MyDataBaseHelper.DATABASE_TABLE, null, newVideo); 
} 

public void addPhotoRow(String photoPath, String photoName) { 

    ContentValues newPhoto = new ContentValues(); 

    newPhoto.put(KEY_PHOTO_PATH, photoPath); 
    newPhoto.put(KEY_PHOTO_NAME, photoName); 

    SQLiteDatabase db = myDataBaseHelper.getWritableDatabase(); 
    db.insert(MyDataBaseHelper.DATABASE_PHOTO, null, newPhoto); 
} 



public String getVideoPath(String mediaName) { 


    String[] result_columns = new String[]{KEY_MEDIA_PATH}; 



    String where = KEY_MEDIA_NAME + " = ?"; 
    String whereArgs[] = {mediaName}; 
    String groupBy = null; 
    String having = null; 
    String order = null; 

    SQLiteDatabase db = myDataBaseHelper.getWritableDatabase(); 
    Cursor cursor = db.query(MyDataBaseHelper.DATABASE_TABLE, 
      result_columns, where, 
      whereArgs, groupBy, having, order); 
    // 
    boolean result = cursor.moveToFirst(); 
    if (result) { 
     return cursor.getString(cursor.getColumnIndex(KEY_MEDIA_PATH)); 




    } 
    return ""; 
} 

public String[] getMediaTitle() { 

    ArrayList<String> nameArray = new ArrayList<String>(); 
    String[] result_columns = new String[]{KEY_MEDIA_NAME}; 

    String mediaName; 

    String where = null; 
    String whereArgs[] = null; 
    String groupBy = null; 
    String having = null; 
    String order = null; 

    SQLiteDatabase db = myDataBaseHelper.getWritableDatabase(); 
    Cursor cursor = db.query(MyDataBaseHelper.DATABASE_TABLE, 
      result_columns, where, 
      whereArgs, groupBy, having, order); 
    // 
    boolean result = cursor.moveToFirst(); 
    while (result) { 
     mediaName = cursor.getString(cursor.getColumnIndex(KEY_MEDIA_NAME)); 

     nameArray.add(mediaName); 

     result = cursor.moveToNext(); 


    } 
    return nameArray.toArray(new String[nameArray.size()]); 
} 

public String[] getPhotoTitle() { 

    ArrayList<String> nameArray = new ArrayList<String>(); 
    String[] result_columns = new String[]{KEY_PHOTO_NAME}; 

    String mediaName; 

    String where = null; 
    String whereArgs[] = null; 
    String groupBy = null; 
    String having = null; 
    String order = null; 

    SQLiteDatabase db = myDataBaseHelper.getWritableDatabase(); 
    Cursor cursor = db.query(MyDataBaseHelper.DATABASE_PHOTO, 
      result_columns, where, 
      whereArgs, groupBy, having, order); 
    // 
    boolean result = cursor.moveToFirst(); 
    while (result) { 
     mediaName = cursor.getString(cursor.getColumnIndex(KEY_PHOTO_NAME)); 

     nameArray.add(mediaName); 

     result = cursor.moveToNext(); 


    } 
    return nameArray.toArray(new String[nameArray.size()]); 
} 

public String getPhotoPath(String mediaName) { 


    String[] result_columns = new String[]{KEY_PHOTO_PATH}; 

    String where = KEY_PHOTO_NAME + " = ?";; 
    String whereArgs[] = {mediaName}; 
    String groupBy = null; 
    String having = null; 
    String order = null; 

    SQLiteDatabase db = myDataBaseHelper.getWritableDatabase(); 
    Cursor cursor = db.query(MyDataBaseHelper.DATABASE_PHOTO, 
      result_columns, where, 
      whereArgs, groupBy, having, order); 
    // 
    boolean result = cursor.moveToFirst(); 
    if (result) { 
     return cursor.getString(cursor.getColumnIndex(KEY_PHOTO_PATH)); 




    } 
    return ""; 
} 





private static class MyDataBaseHelper extends SQLiteOpenHelper { 

    private static final String DATABASE_NAME = "mediaContent.db"; 
    private static final String DATABASE_TABLE = "Videos"; 
    private static final String DATABASE_PHOTO = "Photos"; 
    private static final int DATABASE_VERSION = 1; 
    private static final String DATABASE_CREATE = "create table " + 
      DATABASE_TABLE + " (" + KEY_ID + 
      " integer primary key autoincrement, " + KEY_MEDIA_NAME + " text not null, " + 
      KEY_MEDIA_PATH + " text not null);"; 

    private static final String DATABASE_PHOTO_CREATE = "create table " + 
      DATABASE_PHOTO + " (" + KEY_PHOTO_ID + 
      " integer primary key autoincrement, " + KEY_PHOTO_NAME + " text not null, " + 
      KEY_PHOTO_PATH + " text not null);"; 



    public MyDataBaseHelper(Context context, String name, 
          CursorFactory factory, int version) { 
     super(context, name, factory, version); 
    } 


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

    } 
    @Override 
    public void onUpgrade(SQLiteDatabase db, int oldVersion, 
          int newVersion) { 

     Log.w("TaskDBAdapter", "Upgrading from version " + 
       oldVersion + " to " + 
       newVersion + ", which will destroy all old data"); 

     db.execSQL("DROP TABLE IF IT EXISTS " + DATABASE_TABLE); 
     db.execSQL("DROP TABLE IF IT EXISTS " + DATABASE_PHOTO); 


     onCreate(db); 
    } 

} 

}

+0

데이터베이스 코드를 표시하십시오 ... – Opiatefuchs

+0

내 질문에 데이터베이스 코드가 업데이트되었습니다. 나는 그것이 데이터베이스에 문제가되는 것을 볼 수 없다. 내가 단순히 결과에 대한 활동에 문자열을 선언하고 addvideorow 메서드에 전달하면, 비디오 문자열과 선언 된 문자열이 데이터베이스에 들어갑니다. –

답변

0

이 당신의 안드로이드 응용 프로그램을 삭제 시도하고 다시 설치합니다.

+0

데이터베이스를 지우고 싶었 기 때문에 이미 시도했지만 여전히 작동하지 않습니다. –

+0

addVideoRow 메서드 새 MediaContentDB (..)없이 호출하는 방법은 정적 메서드가 아닙니다. –

0

문제가 발견되어 데이터베이스 참조를 초기화하지 않았으므로 addVideoRow 메소드가 작동하지 않습니다.

uriDB = new MediaContentDB(getApplicationContext());