YdbOpen說明文檔


目錄

概述

YdbOpen通過JS遠程的打開、關閉、創建、修改APP本地SqlLite數據庫的任何一處,助力您開發出更優秀的APP。

通過JS遠程的增删改查本地文件。通過使用遠程下載功能,您可以随時随地将您需要的文件下載到您所需要的APP本地。

此文檔面向網頁開發者介紹YdbOpen如何使用及相(xiàng)關注意事項,需要注意的是(shì)必須開啓雲開發插件之後,YdbOpen裏的方法才會生效。

YdbOpen使用步驟

步驟一:引入JS文件

在需要調用JS接口的頁面引入如下JS文件,:static/js/YdbOpen.js

步驟二:調用YdbOpen的相(xiàng)關方法

                例如: /* YdbOpen跨域寫法 */
                YdbOpen.call("ajax", {
                    url: '你的url地址',
                    method: 'POST',
                    data: { UserName: nameObj.val(), UserKey: pwdObj.val() },
                    file: { HeadImg: headObj.val(), CardImg: cardObj.val() },
                    cache: false,
                    timeout: 30,
                    dataType: 'json'
                }, function (ret, err) {
                    if (ret) {
                        layer.open({
                            content: JSON.stringify(ret),
                            btn: ['确定']
                        });
                    } else {
                        layer.open({
                            content: '錯誤碼:' + err.code + ';錯誤信息:' + err.msg + '網絡狀态碼:' + err.statuscode,
                            btn: ['确定']
                        });
                    };
                });
                //特别說明:YdbOpen的調用要放(fàng)到頁面尾部,或者放(fàng)入頁面加載完事件中
                //方法一:jquery 中:$(function(){} 括号内寫你的内容
                //方法二:使用body的onload屬性,onload='someFunctionsWithYdbOpen()'
                //方法三:window.onload=function(){//someFunctionsDoWithYdbOpen}//用window的onload事件,窗體加載完畢的時候
            

接口調用說明

跨域訪問 ajax

                 /* 示例 */
                YdbOpen.call("ajax", {
                    url: '你的url地址',
                    method: 'POST',
                    data: { UserName: nameObj.val(), UserKey: pwdObj.val() },
                    file: { HeadImg: headObj.val(), CardImg: cardObj.val() },
                    cache: false,
                    timeout: 30,
                    dataType: 'json'
                }, function (ret, err) {
                    if (ret) {
                        alert(JSON.stringify(ret));                       
                    } else {
                        alert('錯誤碼:' + err.code + ';錯誤信息:' + err.msg + '網絡狀态碼:' + err.statuscode);
                    };
                });
                //參數說明:輸入參數:json對象
參數 類型 解釋
url 字符型 跨域訪問的接口地址
method 字符型 訪問類型,如GET,POST,DELETE,PUT等
data Object 提交的鍵值對如{UserName:"qike",PassWord:"1234"}
file Object 多文件上傳的鍵值對如{HeadImg:"xxx"},可省略
Cache 布爾型 默認false,可省略
timeout 整型 超時時間,默認30秒,可省略
datatype 字符型 Json,xml,text等
//輸出參數:
參數 類型 解釋
ret 不定 根據DataType類型而定
err json {code:1,msg:"操作成功",statuscode:200}

數據庫操作類

數據庫創建打開接口 dbopen

                   /* 示例 */
                   YdbOpen.call("dbopen", dbname, function (ret) {
		            if (ret.status) {
		            alert(ret.msg);
		            } else {
		            alert(ret.msg);
		            }
		    });
               // 說明:輸入參數:dbname,如 "weblsq.db"。根據Sqlite庫名稱判斷,有則打開,無則創建;
               //返回結果:{status: true/false,msg:"結果描述或錯誤原因" }
            

數據庫關閉接口 dbclose

   
                     /* 示例 */說明:關閉數據庫;
                     YdbOpen.call("dbclose", "dbname", function (ret) {
		               if (ret.status) {
		                   alert(ret.msg);
		                    } else {
		                    alert(ret.msg);
		                  }
		               });
                   // 參數說明: 輸入參數: 數據庫名 dbname,如 "weblsq.db"。
                   //返回結果:{status: true/false,msg:"結果描述或錯誤原因" }
            

判斷表是(shì)否存在 tabexist

                   /* 示例 */
                   YdbOpen.call("tabexist", "name", function (ret) {
		            if (ret.status) {
		            alert("表名:" + name + "已存在"+ret.msg);
		              } else {
		             }
		           });
                    // 參數說明:輸入參數:字符型 表名,如tbUserinfo;
                    //返回結果:{status: true/false,msg:"結果描述或錯誤原因" }
            

執行SQL語句 execsql

                     /* 示例 */
                     var createSql = "create table tbname(id integer,title varchar,content text,time varchar)";
                     YdbOpen.call("execsql", sqlStr ,function(ret) {
                      if (!ret.status) {
                         alert(ret.msg);
                        }
                     });
                    // 參數說明:輸入參數:字符型,待執行的SQL語句;
                   //返回結果:{status: true/false,msg:"結果描述或錯誤原因" }

            

查詢SQL語句 query

                /* 示例 */
                var querySql = "select * from tbname";
                 YdbOpen.call("query", querySql, function (ret) {
                if (ret.status) {
                    var str = ret.msg;
                    if (ret.data.length > 0) {
                        for (var i = 0; i < ret.data.length; i++) {
                            str += "" + ret.data[i].title + "" + ret.data[i].time + "";
                        }
                    } else {
                        str = "該表中暫無數據";
                    }
                }
            });
                    // 參數說明:輸入參數:字符型,待查詢的SQL語句;
                    //返回結果:{ status: true/false,data:[數據集json數據,....],msg:"結果描述或錯誤原因" }
            

文件及文件夾操作

文件夾操作

文件夾是(shì)否存在 direxist

               /* 示例 */
               YdbOpen.call("direxist", dir, function (ret) {
		          if (ret.status) {
		            alert("文件夾【" + dir + "】已存在:"+ret.msg);
		           } else {
		            
		         }
		     });
                //輸入參數:dir 字符型,文件夾名稱,可以含多級,如“abc","abc\def\xyz";	
                //返回結果:{ status: true/false,msg:"結果描述或錯誤原因" }
            

創建文件夾 mkdir

                     /* 示例 */
                     YdbOpen.call("mkdir", dir, function (ret1) {
		                if (ret1.status) {
		                    alert("文件夾[" + dir + "]創建成功!"+ret1.msg);
		                }
		            });
                    // 輸入參數:dir 字符型,待創建的文件夾名稱,可以含有多級路徑;
                    //返回結果:{ status: true/false,msg:"結果描述或錯誤原因" }
            

删除文件夾 deletedir

                       //ret:{status:true/false}
                       //異常情況,文件正在使用,文件夾不存在
                        /* 示例 */
                        YdbOpen.call("deldir", dir, function (ret) {
		                    if (ret.status) {
		                        alert(ret.msg);
		                    } else {
		                        alert(ret.msg);
		                    }
		                });
                    //參數說明:輸入參數:dir 字符型,文件夾内容,可以含多級路徑,如“dira”,“a\b\c\d”,“a”;
                   //返回結果: { status: true/false,msg:"結果描述或錯誤原因" }
            

文件夾命名 rendir

                    var newDir = "Srcddd";
		            //src,trg不能在同一文件夾
		            //異常:文件夾不存在,文件夾相(xiàng)同
		            /* 示例 */
                    YdbOpen.call("rendir", { src: dirA, trg: newDir }, function (ret) {
		                if (ret.status) {
		                    alert(ret.msg);
		                } else {
		                    alert(ret.msg);
		                }
		            });
                   //參數說明:輸入參數:{src:源路徑,trg:目标路徑}
                   //返回結果:{ status: true/false,msg:"結果描述或錯誤原因" }
            

獲取知(zhī)道文件夾中内容列表 readdir

                     //ret: {status:true/false,data:[{Name:"a.txt",IsDir:false,ModifyDate:"2015-10-17 12:59:38",FileSize:0.85<单位m>},....]}
		            //異常信息可能文件夾不存在或文件夾不是(shì)文件夾
		            /* 示例 */
                    YdbOpen.call("readdir", { path: dirA, filetype: "*.*" }, function (ret) {
		                if (ret.status) {
		                    var srcHtml = ret.msg;
		                    if (ret.data.length > 0) {
		                        for (var i = 0; i < ret.data.length; i++) {
		                            srcHtml += ret.data[i].Name + "  " + ret.data[i].IsDir + "  " + ret.data[i].ModifyDate + "  " + ret.data[i].FileSize;
		                        }
		                    }
		                    alert("文件夹列表:\n\n" + srcHtml);
		                } else {
		                    alert(ret.msg);
		                }
		            });
                    //输入参数:{ "Path": dirA, "FileType": "*.*" }
               
參數 類型 注釋
Path 字符型 源文件夾名稱
FileType 字符型 文件類型,可選 默認 *.*
//返回結果:{status:true/false,data:[{name:"文件名",isdir:true,modifydate:"2015-10-21 12:00:900",filesize:0.5},..],msg:"獲取成功"} //返回參數說明:
參數 類型 注釋
name 字符型 文件或文件夾名稱
isdir 布爾型 标識Name對應的是(shì)否爲文件夾
modifydate 字符型 标識文件修改時間
filesize 浮點型 标識文件大小單位M,文件夾爲0

文件操作

文件是(shì)否存在 fileexist

                   /* 示例 */
                   YdbOpen.call("fileexist", fname, function (ret) {
		           if (ret.status) {
		            //ret: {status:true/false,content:"文件内容"}		           
		            } else {
		            alert(ret.msg);
		          }
		       });
                 // 輸入參數:fname 字符型,文件夾+文件名或文件名;
                 //返回結果:{ status: true/false,msg:"結果描述或錯誤原因" }
            

創建文件 createfile

                    /* 示例 */
                    YdbOpen.call("createfile", { path: fname, default: "這是(shì)文件默認内容", encoding: "UTF-8" }, function (ret1) {
		                if (ret1.status) {
		                    alert("文件:" + fname + ",創建成功!" +ret1.msg);
		                } else {
		                    alert(ret1.msg);
		                }
		            });
                    //輸入參數:Json對象;
                    
參數 類型 注釋
path 字符型 待創建的文件路徑,如“A/qike.txt”
default 字符型 默認的文件内容;可空,如“”/“這是(shì)文件内容”
encoding 字符型 标識文件編碼;可空,默認爲UTF-8,可以爲GBK,GB2312,Utf-8
//返回結果:{ status: true/false,msg:"結果描述或錯誤原因" }

删除文件 deletefile

                    /* 示例 */
                    YdbOpen.call("delfile", file, function (ret) {
		                if (ret.status) {
		                    alert(ret.msg);
		                } else {
		                    alert(ret.msg);
		                }
		            });
                    // 參數說明:輸入參數:字符型,标識文件名,如“aa.Txt”,“dira\a.Txt”;
                    //返回結果: { status: true/false,msg:"結果描述或錯誤原因" }
            

文件命名 renfile

                    /* 示例 */
                    var fname = dirA + "/" + fileName;
                    var foname = dirA + "/" + "qike.lst";
                    //src,trg需在同一文件夾
                    //異常:文件不存在,文件正在使用,不在同一文件夾			        
                    YdbOpen.call("renfile", { src: fname, trg: foname }, function (ret) {
			            if (ret.status) {
			                alert(ret.msg);
			            } else {
			                alert(ret.msg);
			            }
			        });
                   // 輸入參數:{src:源路徑,trg:目标路徑}
                   //返回結果:{ status: true/false,msg:"結果描述或錯誤原因" }
            

獲取指定文件内容 readalltext

                     /* 示例 */
                     YdbOpen.call("readalltext", { filepath: fname, encoding: "UTF-8" }, function (ret1) {
		                if (ret1.status) {
		                    alert(ret1.content+":"+ret1.msg);
		                }
		            });
                    //參數說明:輸入參數:{filepath:文件名,encoding:"UTF-8"}
                     
參數 類型 注釋
filepath 字符型 文件名稱
encoding 字符型 文件編碼,可選 默認 UTF-8,可以爲GBK,GB2312,UTF-8
//返回結果:{status:true/false,count:"文件内容",msg:"結果描述"}

寫入内容到指定文件 writealltext

                    var fname = dirA + "/" + fileName;
                    //覆蓋式寫入
                    /* 示例 */
                    YdbOpen.call("writealltext", { filepath: fname, filecontent: "這是(shì)寫入的全部内容!!\n\r", encoding: "UTF-8" }, function (ret) {
			            if (ret.status) {
			                alert(ret.msg);
			            } else {
			                alert(ret.msg);
			            }
			        });
                    //輸入參數:{ filepath: fname, filecontent: "内容!!", encoding:"UTF-8" }

                  
參數 類型 注釋
filepath 字符型 文件名稱
encoding 字符型 文件編碼,可選 默認 UTF-8,可以爲GBK,GB2312,UTF-8
filecontent 字符型 待寫入的文件内容
//返回結果:{status:true/false,msg:"結果描述"} 字符型,爲文件内容,異常或失敗則爲空; 說明:文件不存在是(shì)則自動創建,存在則覆蓋;

追加文件内容 appendtext

                    /* 示例 */
                    YdbOpen.call("appendtext", { filepath: fname, appendtext: "這是(shì)追加的内容!!\n\r" ,encoding: "UTF-8"}, function (ret2) {
                        if (ret2.status) {
                            alert(ret2.msg);
                        }
                    });
                  //輸入參數:{ filepath: fname, appendtext: "追加的内容!!" ,encoding: "UTF-8"}
                  
參數 類型 注釋
filepath 字符型 文件名稱
appendtext 字符型 待追加的内容
encoding 編碼 UTF-8、GBK、GB2312
//返回結果: {status:true/false,msg:"結果描述"}

文件下載 download

                   //ret: {status:true/false,filename:"本地物理路徑file:///"}
                   //異常信息可能鏈接不存在,或下載終端,網絡異常等
                   /* 示例 */
                    YdbOpen.call("download", {
		                url: '要下載的文件路徑',
		                trgname: dirB
		            }, function (ret, err) {
		                if (ret.status) {
		                    alert("下載成功:" + ret.fileName);
		                } else {
		                    alert(err.msg);
		                }
		            });
                    //輸入參數:{url:"要下載的文件路徑",trgname:"下載後的路徑及名稱"}
                    
參數 類型 注釋
url 字符型 待下載路徑
trgname 字符型 下載後的名稱和路徑
返回結果:兩個參數,ret,err Ret {status:true/false,filename:"保存後的物理路徑",msg:"結果描述"}
參數 類型 注釋
status 整型 1、成功;0、失敗
fileName 字符型 下載後的物理路徑名稱
Err:{code:1,msg:"操作成功",statuscode:200}
參數 類型 注釋
code 整型 1、成功;0、失敗
msg 字符型 結果描述
statuscode 整型 網絡狀态碼

文件夾或文件複制 copyto

                    //覆蓋式拷貝
                    //ret:{status:true/false}
                    //異常:可能文件不存在、目标文件正在使用等;
                    /* 示例 */
                    YdbOpen.call("copyto", { src: fsrc, trg: ftrg }, function (ret) {
		                if (ret.status) {
		                    alert("文件" + fsrc + "拷貝到" + ftrg + "成功::" + ret.msg);
		                } else {
		                    alert(ret.msg);
		                }
		            });
                    // 參數說明:輸入參數:{src:源路徑,trg:目标路徑}
                    //返回結果:{ status: true/false,msg:"結果描述或錯誤原因" }
            

文件夾或文件移動 moveto

                    var fonamd = dirA + "/" + "qiqp.lst";
                    var fTrg = dirB + "/" + "qq.dat";
                    //文件移動等于:複制+删除源文件
                    //異常信息可能文件不存在或正在使用
                    /* 示例 */
                    YdbOpen.call("moveto", { src: fonamd, trg: fTrg }, function (ret) {
			            if (ret.status) {
			                alert("文件" + fonamd + "移到" + fTrg + "成功::" + ret.msg);
			            } else {
			                alert(ret.msg);
			            }
			        });
                    //輸入參數:{src:源路徑,trg:目标路徑} 
                    //返回結果:{ status: true/false,msg:"結果描述或錯誤原因" }
                    // 注釋:MoveTo等于Copy + delete;

            

将相(xiàng)對路徑轉換成絕對路徑 relpath2abspath

                    //ret: {status:true/false,path:"file:///xxx"}
                    /* 示例 */
                    YdbOpen.call("relpath2abspath", dirA, function (ret) {
		                if (ret.status) {
		                    alert("SrcDir:[" + dirA + "]AbsPath:[" + ret.path + "]msg:["+ret.msg+"]");
		                } else {
		                    alert(ret.msg);
		                }
		            });                
                    //輸入參數:字符型 ,标識文件夾或文件名;
                    //說明:支持文件夾和文件;
                    //返回結果:{status:true/false,path:"對應的物理路徑",msg:"結果描述"}

            

壓縮文件 zip

                    //文件壓縮: 參數 Files可換成 FileType:"*.lst",若同時存在則 FileType優先級高
                    //ret:{status:true/false}
                    /* 示例 */
                    YdbOpen.call("zip", { dirname: dirA, files: ["weblsq.lst", "qiqi.lst"], targetname: "weblsq.zip" }, function (ret) {
		                if (ret.status) {
		                    alert(ret.msg);
		                } else {
		                    alert(ret.msg);
		                }
		            });
                    //輸入參數:{ dirname: dirA, files: ["weblsq.lst", "qiqi.lst"],  targetname: "weblsq.zip" }
參數 類型 注釋
dirname 字符型 文件夾名稱
files 數組型 待壓縮的文件列表
filetype 字符型 文件過濾支持多個,如“*.Txt”,“*.Txt;*.Log;*.pdf”
PassWord 字符型 壓縮包密碼,可選
targetname 字符型 标識壓縮後文件的存放(fàng)位置可爲文件夾名或文件夾+文件名
//說明:files和filetype互斥,filetype優先; //返回結果:{status:true/false,msg:"結果描述"}

解壓文件 unzip

                    /* 示例 */
                    YdbOpen.call("unzip", { fileName: zipFile,trgdir: trgDir }, function (ret) {
		                if (ret.status) {
		                    alert(ret.msg +":"+ret.abspath);
		                } else {
		                    alert("zip解壓失敗:"+ret.msg);
		                }
		            });
                    //輸入參數:{ filename: zipFile, password: "12345", trgdir: trgDir }
	
參數 類型 注釋
filename 字符型 Zip文件名稱
PassWord 數組型 壓縮包密碼,可選
trgdir 字符型 解壓路徑,爲文件夾,不空
返回結果:{status:true/false,abspath:"解壓後的物理路徑",msg:"結果描述"}

判斷網絡此刻狀态 netstate

                    /* 示例 */
                    YdbOpen.call("netstate", null, function (ret) {
		            if (ret.status) {
		                var msg = "wifi 不可用";
		                switch (ret.state) {
		                    case 0:
		                        msg = "wifi 不可用";
		                        break;
		                    case 1:
		                        msg = "wifi 可用";
		                        break;
		                    case 2:
		                        msg = "gprs 不可用";
		                        break;
		                    case 3:
		                        msg = "gprs 可用";
		                        break;
		                }
		                alert("state:[" + msg + "]msg:["+ret.msg+"]");
		            } else {
		                alert(ret.msg);
		            }
		        });
                    //輸入參數:無;
                    //返回結果:{status:true/false, state:狀态碼, msg:"結果描述"}
                    狀态碼說明:
                   -1:默認值   status爲false時
                    0:wifi 不可用
                    1:wifi 可用
                    2:gprs 不可用
                    3:gprs 可用

            

問題反饋

郵箱地址:3348388407@qq.com

郵件主題:【YdbOpen反饋】

郵件内容說明:

用簡明的語言描述問題所在,并講清楚遇到該問題的場景,可附上截屏圖片,我們團隊會盡快處理你的反饋。