我尝试在应用程序启动时创建两个表。但由于某种原因,只创建了一个表。如果我尝试一次创建其中一个表,它工作正常。到目前为止,我可以知道的是,这两个查询都是有效的,它们应该工作,因为我尝试在关闭应用程序并再次启动并创建另一个表后逐个创建这两个表。但是我希望在应用程序启动时创建这两个表。
SqliteService.tsx
import { enablePromise, openDatabase } from 'react-native-sqlite-storage'
const SQLiteService = () => {
const getDBConnection = async () => {
enablePromise(true)
return openDatabase({ name: 'test.db', location: 'default' })
}
const createTable1 = async (db) => {
const query = `CREATE TABLE IF NOT EXISTS TABLE_1 ('key' TEXT NOT NULL, 'value' TEXT NOT NULL);`
await db.executeSql(query)
}
const createTable2 = async (db) => {
const query = `CREATE TABLE IF NOT EXISTS TABLE_2 ('key' TEXT NOT NULL, 'value' TEXT NOT NULL);`
await db.executeSql(query)
}
return {
getDBConnection,
createTable1,
createTable2
}
}
在我的应用程序中
const setupDatabase = useCallback(async () => {
const db = await SQLiteService().getDBConnection()
await SQLiteService().createTable1(db) // only this gets created
await SQLiteService().createTable2(db)
}, [])
useEffect(() => {
setupDatabase()
}, [setupDatabase])
任何关于如何解决这个问题的帮助都是很好的。谢谢。
1条答案
按热度按时间j8yoct9x1#
只是回答我自己的问题。这可能不是最好的方法,但我能够解决这个问题。我必须创建多个承诺,并使用
Promise.all()
和await
解决所有承诺,以便先创建表,然后再访问/插入数据SqliteService.tsx
App.tsx
我对
enablePromise(true)
的用法还不是很清楚,如果有人有更好的解决方案,请随时回答这个问题