YdbOpen说明文档


目录

概述

YdbOpen通过JS远程的打开、关闭、创建、修改APP本地SqlLite数据库的任何一处,助力您开发出更优秀的APP。

通过JS远程的增删改查本地文件。通过使用远程下载功能,您可以随时随地将您需要的文件下载到您所需要的APP本地。

此文档面向网页开发者介绍YdbOpen如何使用及相关注意事项,需要注意的是必须开启云开发插件之后,YdbOpen里的方法才会生效。

YdbOpen使用步骤

步骤一:引入JS文件

在需要调用JS接口的页面引入如下JS文件,:http://static.ydbimg.com/API/YdbOpen.js

步骤二:调用YdbOpen的相关方法

                例如: /* 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的调用要放到页面尾部,或者放入页面加载完事件中
                //方法一: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:"结果描述或错误原因" }
            

判断表是否存在 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:"结果描述或错误原因" }
            

文件及文件夹操作

文件夹操作

文件夹是否存在 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不能在同一文件夹
		            //异常:文件夹不存在,文件夹相同
		            /* 示例 */
                    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:"结果描述或错误原因" }
            

获取知道文件夹中内容列表 readdir

                     //ret: {status:true/false,data:[{Name:"a.txt",IsDir:false,ModifyDate:"2015-10-17 12:59:38",FileSize:0.85<单位m>},....]}
		            //异常信息可能文件夹不存在或文件夹不是文件夹
		            /* 示例 */
                    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对应的是否为文件夹
modifydate 字符型 标识文件修改时间
filesize 浮点型 标识文件大小单位M,文件夹为0

文件操作

文件是否存在 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: "这是文件默认内容", encoding: "UTF-8" }, function (ret1) {
		                if (ret1.status) {
		                    alert("文件:" + fname + ",创建成功!" +ret1.msg);
		                } else {
		                    alert(ret1.msg);
		                }
		            });
                    //输入参数:Json对象;
                    
参数 类型 注释
path 字符型 待创建的文件路径,如“A/qike.txt”
default 字符型 默认的文件内容;可空,如“”/“这是文件内容”
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: "这是写入的全部内容!!\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:"结果描述"} 字符型,为文件内容,异常或失败则为空; 说明:文件不存在是则自动创建,存在则覆盖;

追加文件内容 appendtext

                    /* 示例 */
                    YdbOpen.call("appendtext", { filepath: fname, appendtext: "这是追加的内容!!\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;

            

将相对路径转换成绝对路径 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 字符型 标识压缩后文件的存放位置可为文件夹名或文件夹+文件名
//说明: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反馈】

邮件内容说明:

用简明的语言描述问题所在,并讲清楚遇到该问题的场景,可附上截屏图片,我们团队会尽快处理你的反馈。