QT QML中中SQLite的数据库路径的数据库路径
我们在用QT Quick的QML编写前端界面时,常常会用到前端SQLite数据库以保持本地的数据,此时你不需要用C++,直接用
QML就可以了。
当编写完成代码后,你却不知道数据放在哪里了,实际上QT在你的代码完成后,会把数据库放在一个缺省的目录,本文以
win10为为例,来说明如何定制化你的SQLite的缺省路径。
注意:
本文是从一个数据库操作项目中,节选的一部分内容,可参考
课程:
《QML SQLite数据库编程》
《QT QML跨平台移动APP编程》
首先创建QT 的项目文件,选择 New File or Project / Application / Qt Quick Application-Empty,然后输入项目名称就可以了。
我们引入项目对数据库操作的js文件:DataBase.js,内容为数据库操作的代码。
function dbInit()
{
var db = LocalStorage.openDatabaseSync("mySQLite", "1.0", "This is only for demo", 1000000)
try {
db.transaction(function (tx) {
tx.executeSql('CREATE TABLE IF NOT EXISTS myclass (name text, teacher text)')
})
console.log("Table Created!")
} catch (err) {
console.log("Error creating table in database: " + err)
};
}
function dbGetHandle()
{
try {
var db = LocalStorage.openDatabaseSync("mySQLite", "1.0", "This is only for demo", 1000000)
} catch (err) {
console.log("Error opening database: " + err)
}
return db
}
function dbInsert(name, teacher)
{
var db = dbGetHandle()
var rowid = 0;
db.transaction(function (tx) {
tx.executeSql('INSERT INTO myclass VALUES(?, ?)',
[name, teacher])
var result = tx.executeSql('SELECT last_insert_rowid()')
rowid = result.insertId
})
return rowid;
}
function dbReadAll()
{
var db = dbGetHandle()
db.transaction(function (tx) {
var results = tx.executeSql(
'SELECT rowid,name,teacher FROM myclass order by rowid desc')
for (var i = 0; i < results.rows.length; i++) {
listModel.append({
id: results.rows.item(i).rowid,
name: results.rows.item(i).name,
teacher: results.rows.item(i).teacher
})
}
})
}
评论0