사용자가 입력 한 값을 전역 변수의 편집 텍스트 필드에 저장합니다. 그런 다음이 값을 데이터베이스에 비디오 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);
}
}
}
데이터베이스 코드를 표시하십시오 ... – Opiatefuchs
내 질문에 데이터베이스 코드가 업데이트되었습니다. 나는 그것이 데이터베이스에 문제가되는 것을 볼 수 없다. 내가 단순히 결과에 대한 활동에 문자열을 선언하고 addvideorow 메서드에 전달하면, 비디오 문자열과 선언 된 문자열이 데이터베이스에 들어갑니다. –