spi*_*ght 6 sqlite ios react-native
我正在遵循有关将现有数据库导入到我的应用程序(用于IOS)的说明:https : //www.npmjs.com/package/react-native-sqlite
在myProject目录中创建了www文件夹,并放置了myDataBase。
将文件夹添加到xcode。
这是我的src代码来打开它并进行查询:
import SQLite from 'react-native-sqlite-storage'
function errorCB(err) {
console.log("SQL Error: " + err);
}
function successCB() {
console.log("SQL executed fine");
}
function openCB() {
console.log("Database OPENED");
}
console.log('database.js')
var db = null;
export function openDB() {
// var db = SQLite.openDatabase("test.db", "1.0", "Test Database", 200000, openCB, errorCB);
db = SQLite.openDatabase({name : "words", createFromLocation : 1}, openCB,errorCB);
}
export function getWord(str) {
db.transaction((tx) => {
tx.executeSql("SELECT * FROM words", [], (tx, results) => {
console.log("Query completed");
// Get rows with Web SQL Database spec compliance.
var len = results.rows.length;
console.log('len' + len)
for (let i = 0; i < len; i++) {
let row = results.rows.item(i);
console.log(`word: ${row.str}, Dept Name: ${row.smth}`);
}
// Alternatively, you can use the non-standard raw method.
/*
let rows = results.rows.raw(); // shallow copy of rows Array
rows.map(row => console.log(`Employee name: ${row.name}, Dept Name: ${row.deptName}`));
*/
});
});
}
Run Code Online (Sandbox Code Playgroud)
我正进入(状态:
Built path to pre-populated DB asset from app bundle www subdirectory: /Users/mac/Library/Developer/CoreSimulator/Devices/06420F74-0E1C-47C1-BCAC-5D3574577349/data/Containers/Bundle/Application/75EE8E9A-276F-402F-982A-DBF30DE80802/MyApp.app/www/words
RCTLog.js:48 target database location: nosync
RCTLog.js:48 Opening db in mode READ_WRITE, full path: /Users/mac/Library/Developer/CoreSimulator/Devices/06420F74-0E1C-47C1-BCAC-5D3574577349/data/Containers/Data/Application/67D2451F-3D72-4B82-AC90-AD6DB9A82566/Library/LocalDatabase/words
Database opened
RCTLog.js:48 Good news: SQLite is thread safe!
dataBase.js:13 Database OPENED
RCTLog.js:48 open cb finished ok
sqlite.core.js:475 Error handler not provided: {message: "no such table: words", code: 5}
sqlite.core.js:572 warning - exception while invoking a callback: {"code":5}
Run Code Online (Sandbox Code Playgroud)
不知道此错误的原因是什么?
我已经在数据库浏览器中检查了SQLite,该数据库是正确的,并且其中存在表'words'并具有行。
我尝试过为db文件使用不同的名称:“ words”,“ words.db”,“ words.sqlite”没有帮助。
我从控制台以以下方式运行我的应用程序:
react-native run-ios
Run Code Online (Sandbox Code Playgroud)
小智 1
SQLite.openDatabase({name:"testDB.sqlite3", createFromLocation:1,location:'Library'})
Run Code Online (Sandbox Code Playgroud)
这解决了我的问题。testDB.sqlite3文件大小为 24 MB。
testDB.sqlite不是testDB.db在工作,而是testDB.sqlite3在工作。
| 归档时间: |
|
| 查看次数: |
996 次 |
| 最近记录: |