как удалить пустые столбцы таблицы данных, если у нее нет имени столбца, а индекс столбца является динамическим в c #

Вы, безусловно, можете разделить одну базу данных между двумя приложениями.

. Чтобы обмениваться данными между приложениями (при условии, что они выпущены одним и тем же издателем), вам нужно будет указать общий идентификатор пользователя в AndroidManifest .xml обоих приложений.

<manifest xmlns:android="http://schemas.android.com/apk/res/android" android:sharedUserId="my.app" ... >

(Это недокументировано, но общий идентификатор пользователя должен быть строкой с хотя бы одним разделителем точек).

Остальное легко, и вам не нужно беспорядок вокруг пути базы данных. Просто используйте тот же DBAdapter в обоих приложениях. В приложении, которое размещает базу данных, вызовите DBAdapter с родным контекстом.

DBadapter hostDBAdapter = new DbAdapter(getApplicationContext());
performerDBadapter.open();

Во втором приложении доступ к базе данных с контекстом приложения для размещения базы данных. Сначала определите общий контекст:

Context sharedContext = null;
    try {
        sharedContext = this.createPackageContext("replace.with.host.package.name", Context.CONTEXT_INCLUDE_CODE);
        if (sharedContext == null) {
            return;
        }
    } catch (Exception e) {
        String error = e.getMessage(); 
        return;
        }   

Затем откройте DBAdapter с общим контекстом:

DbAdapter sharedDBadapter = new PerformerDbAdapter(sharedContext);
sharedDBadapter.open();

В качестве окончательной заметки, если ваша база данных существует до установки общего идентификатор пользователя в манифесте, вам нужно будет удалить / переустановить приложения на физическом устройстве, чтобы вы не заблокировали себя из своей базы данных (sqlite error 14). С другой стороны, эмулятор может оказаться более прощающим. Итог, если ваши приложения опубликованы на рынке Android, установка общего идентификатора пользователя в запоздалой мысли не будет работать.

Надеюсь, это поможет.

-2
задан Noufal 18 March 2019 в 14:31
поделиться

1 ответ

Вам просто нужен цикл для проверки ... Примерно так:

foreach(var column in t.Columns.Cast<DataColumn>().ToArray()) {
    if (t.AsEnumerable().All(dr => dr.IsNull(column)))
        t.Columns.Remove(column);
}

Кредиты: здесь

0
ответ дан Mikev 18 March 2019 в 14:31
поделиться
Другие вопросы по тегам:

Похожие вопросы: