Лучшая практика вокруг Java Sqlite [дубликат]

Я считаю, что это потому, что функция из map не является async , поэтому вы не можете ждать в ее возвратной инструкции. Он компилируется с этой модификацией:

const someFunction = async (myArray) => {
    return myArray.map(async (myValue) => { // <-- note the `async` on this line
        return {
            id: "my_id",
            myValue: await service.getByValue(myValue)
        }
    });
};

Попробуйте в Babel REPL

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

Обновление: мы могли бы получить на следующий день ожидается следующий уровень: https://github.com/MylesBorins/proposal-top-level-await

19
задан rogergl 15 December 2012 в 11:24
поделиться

5 ответов

После некоторого googling я обнаружил, что при подключении к SQLite плохо использовать разные соединения. См.

http://touchlabblog.tumblr.com/post/24474398246/android-sqlite-locking

Установите максимальную мощность пула в 1 и попробуйте .

16
ответ дан sorencito 19 August 2018 в 11:58
поделиться

Должно быть только одно соединение с вашим приложением. вы можете использовать это для обеспечения.

public class SqliteHelper {
private static Connection c = null;
public static Connection getConn() throws Exception {
    if(c == null){
    Class.forName("org.sqlite.JDBC");
    c = DriverManager.getConnection("jdbc:sqlite:D:/test.db");
    }
    return c;
    }
}
11
ответ дан bowman han 19 August 2018 в 11:58
поделиться

Каждый раз, когда вы устанавливаете соединение, обязательно закройте его после завершения работы. Он работал для меня, как если вы используете

Connection con = null;
PreparedStatement pst = con.prepareStatement("...query... "); 
/*
 do some stuff 
*/
pst.executeQuery();
pst.close();
con.close();
0
ответ дан maheshmnj 19 August 2018 в 11:58
поделиться

Попробуйте @Transactional(readonly=true) для тех методов, которые только читают. Возможно, это работает для вас.

0
ответ дан Shree Krishna 19 August 2018 в 11:58
поделиться
  • 1
    Это не помогает – rogergl 15 December 2012 в 12:21
  • 2
    Хорошо, посмотри мой новый ответ. – sorencito 15 December 2012 в 13:49
  • 3
    Это также рекомендуется в документации SQLite как один из нескольких шагов, чтобы уменьшить возникновение этой ситуации. Первым шагом было бы обеспечить закрытие всего. Также следует проверить, поддерживает ли база данных потоки (по умолчанию включено) FULLMUTEX – oden 30 September 2016 в 10:17

Обратите внимание, что это может случиться, если вы случайно забудете закрыть свое соединение:

Connection connection;
try {
  Statement statement = connection.createStatement();
  ResultSet resultSet = statement.executeQuery(QUERY);
  if (resultSet.next()) { /* do something */ }
catch (SQLException e) { /* handle exception */ }
finally {
  if (connection != null) {
    try {
      connection.close(); // <-- This is important
    } catch (SQLException e) {
      /* handle exception */
    }
  }
}

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

3
ответ дан trnelson 19 August 2018 в 11:58
поделиться
Другие вопросы по тегам:

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