3

У меня есть таблица в базе данных, каждая запись этой таблицы должна хранить несколько строк, я не знаю, сколько строк из-за ее решения во время выполнения.Можно ли динамически добавлять новый столбец в таблицу sqlite, вызывая метод из другого класса?

Я хочу, чтобы добавить изображение Ури в таблице базы данных динамически, пользователь динамически добавлять изображения в мое приложение столько, сколько он хочет, так что мне нужно, чтобы сохранить УИР них, что это правильный подход, чтобы сделать это?

Я пытаюсь что-то вроде этого, проследуйте Insert new column into table in sqlite ?

String ColumnName=Environment.getExternalStoragePublicDirectory(Environment.DIRECTORY_PICTURES).toString() + "/" + "image1.jpg"); 

addNewColumn(ColumnName); 

я использовал ниже метод для этого (не работал): -

Сначала я добавляю новый столбец в таблице: -

public Cursor addColumn(String name){ 
    db=dbhelper.getWritableDatabase(); 
    return db.rawQuery("alter table info add column " + name + " text", null); 
} 

Затем вставьте URI в этом

public Boolean setUri(String columnName,String uri) { 
    ContentValues cv= new ContentValues(); 
    cv.put(columnName,uri); 
    SQLiteDatabase db =dbhelper.getWritableDatabase(); 
    long id=db.insert("info",null,cv); 
    if(id>-1) 
     return true; 
    else 
     return false; 
} 

приведенный выше подход правильный?

также я искал и штраф ниже код: -

private static final String ALTER = "ALTER TABLE user_table ADD user_street1 TEXT"; 

    @Override 
    public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) 
    { 
     db.execSQL(ALTER); 
    } 

может я вызвать метод onUpgrade() динамически и добавить новый столбец или любой другой способ сделать это ..?

Заранее спасибо :)

ответ

0

Это очень плохо, чтобы иметь произвольное количество столбцов в таблице. Вместо этого вы должны использовать вторую таблицу с внешним ключом, ссылающуюся на идентификатор строки в первой таблице.

table user 
_id  username ... 
------------------------ 
1  abc 
2  xyz 

table photoInfo 
userId  photoUri 
------------------------------- 
1   /path/to/image1.jpg 
1   /path/to/image2.jpg 
2   /path/to/image3.jpg 
1   /path/to/image4.jpg 

Чтобы показать фотографии для определенного пользователя, используйте JOIN.

+1

Спасибо @Karakuri за предложение :), можете ли вы добавить демо-код в свой ответ, чтобы объяснить его правильно, это будет полезно для меня :) –

+0

демо-код @Nishusharma для чего? Когда вы вставляете новое изображение, вы вставляете его в таблицу 'photoInfo'. Если вы не знаете идентификатор пользователя в то время, вам нужно сначала просмотреть его в таблице пользователей. – Karakuri

+1

Фактически это приложение для ноутбука, в котором пользователь добавляет изображение или текст или и то, и другое, так что, если идентификатор пользователя, создаваемый во время выполнения вместе с изображением, динамическое создание новой записи и записи таблицы изображений, возможно ли это? –

 Смежные вопросы

  • Нет связанных вопросов^_^