牛骨文教育服务平台(让学习变的简单)
博文笔记

QML 数据库操作 简易篇

创建时间:2015-01-11 投稿人: 浏览次数:1817


此博客始创于:http://blog.csdn.net/lys211

转载请注明出处


此博客仅作记录备忘之用


QML 数据库操作 简易篇

在自己练习写QML小应用的时候,想用db来保存音乐播放列表的信息,发现qml操作数据库还是挺方便的,虽然可能像网上说的那样会不安全。

但是只是音乐播放列表,谁关心这个呢。


现在记录下来备忘。


目前的试验结果里,在PC端还是可以正常使用的,未在别的平台上试用过。

以下函数应该算是比较简明的了。


/*添加歌曲到播放列表中*/
function add_song_to_playlist(song_url, song_name){
    var song_star = 0;
    console.log("add_song_to_playlist", playListName, song_url, song_name, song_star);

    var db = Sql.LocalStorage.openDatabaseSync("SimpleMusicPlayerDB", "1.0", "DB for music store", 1000000);
    db.transaction(
                function(tx) {
                    tx.executeSql("CREATE TABLE IF NOT EXISTS " + playlistPopupUi.playListName + "(fileurl TEXT, songname TEXT, songstar INTEGER)" );
                    tx.executeSql("INSERT INTO " + playlistPopupUi.playListName + " VALUES(?, ?, ?)", [ song_url, song_name, song_star ])
                }
                )

    playlistPopupUi.model.append({"songname":song_name, "fileurl":String(song_url)});
}


/*创建表*/
function create_table_for_playlist(table_name){
    console.log("create_table_for_playlist", table_name);
    var db = Sql.LocalStorage.openDatabaseSync("SimpleMusicPlayerDB", "1.0", "DB for music store", 1000000);
    db.transaction(
                function(tx) {
                    tx.executeSql("CREATE TABLE IF NOT EXISTS " + table_name + "(fileurl TEXT, songname TEXT, songstar INTEGER)" );
                }
                )
}


/*清空播放列表*/
function clean_playlist_info(table_name){
    console.log("clean_playlist_info", table_name);
    var db = Sql.LocalStorage.openDatabaseSync("SimpleMusicPlayerDB", "1.0", "DB for music store", 1000000);
    db.transaction(
                function(tx) {
                    tx.executeSql("TRUNCATE TABLE " + table_name );
                }
                )
    playlistPopupUi.model.clear();
}


/*删除播放列表*/
function delete_playlist_from_db(table_name){
    console.log("delete_playlist_from_db ", table_name);
    var db = Sql.LocalStorage.openDatabaseSync("SimpleMusicPlayerDB", "1.0", "DB for music store", 1000000);
    db.transaction(
                function(tx) {
                    tx.executeSql("DROP TABLE " + table_name );
                }
                )
    playlistPopupUi.model.clear();
}


/*重命名播放列表*/
function rename_playlist(old_table_name, new_table_name){
    console.log("rename_playlist ", old_table_name,  new_table_name);
    var db = Sql.LocalStroage.openDatabaseSync("SimpleMusicPlayerDB", "1.0", "DB for music store", 1000000);
    db.transaction(
                function(tx) {
                    tx.executeSql("EXEC sp_rename ?, ?" , [ old_table_name,  new_table_name ]);
                }
                )
    playlistPopupUi.playListName = new_table_name;
}


/* 加载播放列表 */
function load_db_playlist(table_name){
    console.log("load_db_playlist", table_name);
    playlistPopupUi.model.clear();
    var db = Sql.LocalStorage.openDatabaseSync("SimpleMusicPlayerDB", "1.0", "DB for music store", 1000000);
    db.transaction(
                function(tx) {
                    tx.executeSql("CREATE TABLE IF NOT EXISTS " + table_name + "(fileurl TEXT, songname TEXT, songstar INTEGER)");
                    var rs = tx.executeSql("SELECT * FROM "+table_name);
                    var r = "";
                    for (var i = 0; i < rs.rows.length; i++){
                        playlistPopupUi.model.append({"fileurl":rs.rows.item(i).fileurl ,"songname":rs.rows.item(i).songname});
                    }
                }
                )
}

/*
       model: fileurl, songname, songstar
       table: fileurl, songname, songstar
*/

/* 从播放列表中删除歌曲 - songname, fileurl, songstar */

function delete_song_from_playlist(song_index){
    console.log("delete_song_from_playlist", song_index, playlistPopupUi.playListName, playlistPopupUi.model.get(song_index).fileurl);

    var db = Sql.LocalStorage.openDatabaseSync("SimpleMusicPlayerDB", "1.0", "DB for music store", 1000000);
    console.log("Sql.LocalStorage.openDatabaseSync OK")
    db.transaction(
                function(tx) {
                    tx.executeSql("DELETE FROM " + playlistPopupUi.playListName + " WHERE fileurl = " + "?", playlistPopupUi.model.get(song_index).fileurl);
                }
                )
    playlistPopupUi.model.remove(song_index);
}


比较悲伤的是,我的小应用还没有完成。

声明:该文观点仅代表作者本人,牛骨文系教育信息发布平台,牛骨文仅提供信息存储空间服务。