ThinkPHP5+Layui完毕图片上传加预览

var uploadInst = upload.render({
      elem:'#cover'
      ,url:'addCourse'
      ,accept:'file'  // 允许上传的文件类型
      ,auto:true // 自动上传
      ,before:function (obj) {
          console.log(obj);
          // 预览
          obj.preview(function(index,file,result) {
              // console.log(file.name);    //图片名字
              // console.log(file.type);    //图片格式
              // console.log(file.size);    //图片大小
              // console.log(result);    //图片地址
              $('#preview').attr('src',result); //图片链接 base64
          });
          // layer.load();
      }
      // 上传成功回调
      ,done:function(res) {
          // console.log(upload);
          console.log(res);

      }
      // 上传失败回调
      ,error:function(index,upload) {
          // 上传失败
      }

  });

4.5.1 新增、编辑和删除

增产代码组和代码:点击展开树形菜单“系统代码”,可以看出平台置于的一有个别代码组和代码。采用“系统代码”后点击“新增分类”按钮,可以添加代码组;选用已有的代码组,点击“新增代码”按钮,可以加上具体的代码。

在增产代码组或代码的长河中,其中带黄色星号标记“*”的条文,标识、名称和排序ID是必需求填写的始末。平台会检测该代码组或代码的标识、名称在阳台上的合法性,确保代码组或代码的标识、名称的唯一性和可用性。

现实添加代码组、代码的操作界面如下图4.5.1-1所示:

 图片 1

 图片 2

图4.5.1-1  新增代码组、代码

private void InfoUpdatedADD()
        {
            if (dmeObj == null)
            {
                lbInfo.Text = "在“系统代码”下新增如下代码分类";
                return;
            }

            if (dmeObj != null && dmeObj is DMESYS_SYSCODE_TYPE)
            {
                dmeCodeType = dmeObj as DMESYS_SYSCODE_TYPE;
                lbInfo.Text = "在代码分类“" + dmeCodeType.Name + "”下新增如下代码";
                return;
            }
        }

        private bool InfoUpdatedEDIT()
        {
            if (dmeObj == null)
            {
                lbInfo.Text = "加载代码类型信息时出错!";
                lbInfo.ForeColor = Color.Red;
                ucCodes.IsEnabled(false);
                return false;
            }

            if (dmeObj != null && dmeObj is DMESYS_SYSCODE_TYPE)
            {
                dmeCodeType = dmeObj as DMESYS_SYSCODE_TYPE;
                lbInfo.Text = "编辑代码分类“" + dmeCodeType.Name + "”";
                return true;
            }

            if (dmeObj != null && dmeObj is DMESYS_SYSCODE)
            {
                dmeCode = dmeObj as DMESYS_SYSCODE;
                lbInfo.Text = "编辑代码“" + dmeCode.Name + "”";
                return true;
            }

            return false;
        }

        private bool InsertorUpdateCodes()
        {
            if (dmeCode == null)
            {
                dmeCode = new DMESYS_SYSCODE();
            }

            if (dmeCodeType == null)
            {
                dmeCodeType = new DMESYS_SYSCODE_TYPE();
            }

            if (action == Action.ADD)
            {
                if (dmeObj == null && DoValidatedCodes())
                {
                    dmeCodeType.Id = FeiQing.DBO.DBOService.GetID();
                    DBOSYS_SYSCODE_TYPE.InsertDMESYS_SYSCODE_TYPE(dmeCodeType);
                    return true;
                }
                if (dmeObj is DMESYS_SYSCODE_TYPE && DoValidatedCodes())
                {
                    dmeCode.Syscode_Type_Id = dmeCodeType.Id;
                    dmeCode.Id = FeiQing.DBO.DBOService.GetID();
                    DBOSYS_SYSCODE.InsertDMESYS_SYSCODE(dmeCode);
                    return true;
                }
                return false;
            }

            if (action == Action.EDIT)
            {
                if (dmeObj is DMESYS_SYSCODE_TYPE && DoValidatedCodes())
                {
                    dmeCodeType.Id = (dmeObj as DMESYS_SYSCODE_TYPE).Id;
                    DBOSYS_SYSCODE_TYPE.UpdateDMESYS_SYSCODE_TYPE(dmeCodeType);
                    return true;
                }
                if (dmeObj is DMESYS_SYSCODE && DoValidatedCodes())
                {
                    dmeCode.Id = (dmeCode as DMESYS_SYSCODE).Id;
                    DBOSYS_SYSCODE.UpdateDMESYS_SYSCODE(dmeCode);
                    return true;
                }
                return false;
            }

            return false;
        }

        private bool DoValidatedCodes()
        {
            if (String.IsNullOrEmpty(ucCodes.LbTxtTag))
            {
                lbTip.Text = "“标识”不能为空。";
                lbTip.ForeColor = Color.Red;
                return false;
            }
            if (String.IsNullOrEmpty(ucCodes.LbTxtName))
            {
                lbTip.Text = "“名称”不能为空。";
                lbTip.ForeColor = Color.Red;
                return false;
            }
            if (String.IsNullOrEmpty(ucCodes.LbTxtOrder))
            {
                lbTip.Text = "“排序ID”不能为空。";
                lbTip.ForeColor = Color.Red;
                return false;
            }
            if (!FeiQing.Util.DataValidator2.IsNumber(ucCodes.LbTxtOrder))
            {
                lbTip.Text = "“排序ID”必须为数值。";
                lbTip.ForeColor = Color.Red;
                return false;
            }

            if (dmeObj == null && dmeCodeType != null && action == Action.ADD)
            {
                dmeCodeType.Tag = ucCodes.LbTxtTag;
                dmeCodeType.Name = ucCodes.LbTxtName;
                dmeCodeType.Order_Id = Int32.Parse(ucCodes.LbTxtOrder);
                dmeCodeType.Remark = ucCodes.LbTxtRemark;
            }
            if (dmeObj is DMESYS_SYSCODE_TYPE && dmeCode != null && action == Action.ADD)
            {
                dmeCode.Tag = ucCodes.LbTxtTag;
                dmeCode.Name = ucCodes.LbTxtName;
                dmeCode.Order_Id = Int32.Parse(ucCodes.LbTxtOrder);
                dmeCode.Remark = ucCodes.LbTxtRemark;
            }
            if (dmeObj is DMESYS_SYSCODE_TYPE && dmeCodeType != null && action == Action.EDIT)
            {
                dmeCodeType.Tag = ucCodes.LbTxtTag;
                dmeCodeType.Name = ucCodes.LbTxtName;
                dmeCodeType.Order_Id = Int32.Parse(ucCodes.LbTxtOrder);
                dmeCodeType.Remark = ucCodes.LbTxtRemark;
            }
            if (dmeObj is DMESYS_SYSCODE && dmeCode != null && action == Action.EDIT)
            {
                dmeCode.Tag = ucCodes.LbTxtTag;
                dmeCode.Name = ucCodes.LbTxtName;
                dmeCode.Order_Id = Int32.Parse(ucCodes.LbTxtOrder);
                dmeCode.Remark = ucCodes.LbTxtRemark;
            }

            return true;
        }

 

编纂代码组和代码:紧假使在代码组或代码的标识,名称,排序,备注等音信暴发改变的状态时开展的编排操作。点击展开树形菜单“系统代码”,在树型目录下抉择一个代码组只怕代码后点击“编辑”按钮,即落成对应代码组或代码音信的改动。具体编辑代码组、代码的操作界面如下图4.5.1-2中所示:

 图片 3

图4.5.1-2  编辑代码组、代码

 

除去代码组和代码:点击展开树形菜单“系统代码”,在树型目录下抉择二个代码组或代码后点击“删除”按钮,图4.5.1-3出示了删减操作的唤醒对话框界面。

备注:对于全部代码的代码组是无力回天直接删除的,首先要求删除其下属的代码。

 图片 4

 图片 5

图4.5.1-3  删除代码组或代码提醒

 

private void btnDelete_Click(object sender, System.EventArgs e)
        {
            if (IsCodeType())
            {
                if (selectedNode.ChildNodes.Count > 0)
                {
                    GUIHelper.MessageToUserInfo("提示:该代码分类包含代码,无法直接删除!");
                    return;
                }
                if (GUIHelper.MessageQuestion("确定要删除代码分类“" + (selectedObj as DMESYS_SYSCODE_TYPE).Name + "”吗?", "删除代码分类"))
                {
                    DBOSYS_SYSCODE_TYPE.DeleteDMESYS_SYSCODE_TYPE(selectedObj as DMESYS_SYSCODE_TYPE);
                    btnRefresh_Click(sender, e);
                    return;
                }
            }
            if (IsCode())
            {
                if (GUIHelper.MessageQuestion("确定要删除代码“" + (selectedObj as DMESYS_SYSCODE).Name + "”吗?", "删除代码"))
                {
                    DBOSYS_SYSCODE.DeleteDMESYS_SYSCODE(selectedObj as DMESYS_SYSCODE);
                    btnRefresh_Click(sender, e);
                    return;
                }
            }
        }

 

类代码 57 能源不可用或操作员干预

表 38. 类代码 57:资源不可用或操作员干预
SQLSTATE 值   
含义
57001 表不可用,因为它没有主索引。
57003 未激活指定的缓冲池。
57007 对象不能使用,因为 DROP 或 ALTER 处于暂挂状态。
57009 虚拟存储器或数据库资源暂时不可用。
57011 虚拟存储器或数据库资源不可用。
57012 非数据库资源不可用。这不会影响后续语句的成功执行。
57013 非数据库资源不可用。这将影响后继语句的成功执行。
57014 按照请求取消了处理。
57016 因为表不活动,所以不能存取它。
57017 未定义字符转换。
57019 该语句因资源问题未成功。
57020 包含数据库的驱动器被锁定。
57021 软盘驱动器门是打开的。
57022 不能创建表,因为语句的授权标识不拥有任何合适的 dbspaces。
57030 与应用程序服务器的连接超出安装定义的限制。
tp57032 已启动最大并行数据库数。
57033 发生死锁或超时,而没有自动回滚。
57036 事务日志不属于当前的数据库。
57046 不能启动新的事务,因为数据库或实例被停顿。
57047 不能创建内部数据库文件,因为该目录不可存取。
57048 存取表空间的容器时发生错误。
57049 已达到操作系统处理限制。
57050 文件服务器当前不可用。 
57051 估计的 CPU 成本超出了资源限制。
57052 节点不可用,因为它所含有的容器不足以满足所有的临时表空间。
57053 因为冲突操作,所以不能对表执行操作。
57055 带有足够页大小的临时表空间不可用。 
57056 程序包不可用,因为数据库处于 NO PACKAGE LOCK 方式。
57057 由于 SQL 语句的 DRDA 链中的优先条件,不能执行该 SQL 语句。
57059 表空间中没有足够的空间用于执行指定的操作。

调用代码

 /* 定义计算的调用方法类 */
 class Calculate{
    private base: number;
    private way: any;
    setBase(base: number) {
        this.base = base;
    }
    setLeve(leve:Object) {
        this.way = leve;
    }
    getResult(){
        return this.way.calculate(this.base);
    }
}
<div class="layui-upload">
   <button type="button" class="layui-btn" id="cover">上传封面</button>
</div> 
<div class="layui-input-inline">
   <img id="preview" width="200px" height="200px">
</div>

4.5 代码(字典)管理

系统代码是阳台置于的、通用的、统一的数据描述。

代码管理(数据字典)是整整平纽伦堡数量描述的卓有作用机制。通过界面举行可视化的操作和维护,能飞速录入和修改平台上统一的字典数据。有效做实了数额的重复利用率和制品、项目标开发功效。整个数据字典数据为框架平台所共享,用户可以更好地对系统举办自定义管理,以满足自身的个性化需求。

代码管理的功力作业区(用户操作)界面如下图4.5-1所示,通过主要的操作按钮和新闻内容可见其成效有:

① 新增代码组、代码,编辑代码组、代码,
② 删除代码组、代码,移动代码,
③ 代码组、代码的唯一标识,排序成效和备注音信等。

内部效率操作按钮的状态会基于采用的左侧树型中不相同节点和见仁见智登录用户的动作权限而变更。

阳台在脚下仅帮助二级深度的树型代码结构,可根据实际需要开展添加、修改、删除或运动等对平台代码举行分类和调动。

图片 6 

图4.5-1  代码管理界面

#region LoadCodeTypes, LoadCodes
        private void LoadCodeTypes(TreeNode currentNode, DMESYS_SYSCODE_TYPE currentCodeType)
        {
            List<DMESYS_SYSCODE_TYPE> subCodeTypes = null;
            if (currentCodeType != null)
                subCodeTypes = DBOSYS_SYSCODE_TYPE.GetSubCodeTypes(currentCodeType);
            else
                subCodeTypes = DBOSYS_SYSCODE_TYPE.GetSYS_SYSCODE_TYPEEntities();

            foreach (DMESYS_SYSCODE_TYPE rt in subCodeTypes)
            {
                TreeNode node = currentNode.ChildNodes.Add();
                node.Tag = rt;
                node.Text = rt.Name;
                node.CollapsedImageIndex = 1;
                node.ExpandedImageIndex = 2;

                LoadCodeTypes(node, rt);
            }
        }

        private void LoadCodes()
        {
            codes.Clear();
            codes = DBOSYS_SYSCODE.GetSYS_SYSCODEEntities();

            foreach (DMESYS_SYSCODE r in codes)
            {
                TreeNode tn = CallFindNode(r.Syscode_Type_Id, tvCodes);
                if (tn != null)
                {
                    TreeNode node = tn.ChildNodes.Add();
                    node.Tag = r;
                    node.Text = r.Name;
                    node.CollapsedImageIndex = 3;
                    node.ExpandedImageIndex = 3;
                }
            }
        }

        private TreeNode FindTreeNode(string codeTypeId, TreeNode tnParent)
        {
            if (tnParent == null || tnParent.Tag is DMESYS_SYSCODE)
                return null;
            if ((tnParent.Tag as DMESYS_SYSCODE_TYPE).Id == codeTypeId)
                return tnParent;
            TreeNode tnRet = null;
            foreach (TreeNode tn in tnParent.ChildNodes)
            {
                tnRet = FindTreeNode(codeTypeId, tn);
                if (tnRet != null)
                    break;
            }
            return tnRet;
        }

        private TreeNode CallFindNode(string codeTypeId, TreeControl treeView)
        {
            TreeNodeCollection nodes = treeView.RootNodes[0].ChildNodes;
            foreach (TreeNode n in nodes)
            {
                TreeNode temp = FindTreeNode(codeTypeId, n);
                if (temp != null)
                    return temp;
            }
            return null;
        }
        #endregion

 

类代码 44 WITH CHECK OPTION 违例

表 31. 类代码 44:WITH CHECK OPTION 违例
SQLSTATE 值   
含义
44000 不允许插入或更新操作,因为结果行不满足视图定义。

小结

从上述代码可看出,增加可在标准代码中扩展。保持了代码的高扩充和高可维护性。

 

4.5.2 移动代码

点击展开树形菜单“系统代码”,选用一个代码后点击“移动”按钮,如下图4.5.2-1中所示,采用必要活动到的靶子代码组,点击确认,即可成功代码的调整。方今平台上只援救代码移动,代码组暂时不协理活动。

 图片 7

图4.5.2-1  移动代码

#region LoadCodeTypes
        private void LoadCodeTypes(TreeNode currentNode, DMESYS_SYSCODE_TYPE currentCodeType)
        {
            List<DMESYS_SYSCODE_TYPE> subCodeTypes = null;
            if (currentCodeType != null)
                subCodeTypes = DBOSYS_SYSCODE_TYPE.GetSubCodeTypes(currentCodeType);
            else
                subCodeTypes = DBOSYS_SYSCODE_TYPE.GetSYS_SYSCODE_TYPEEntities();

            foreach (DMESYS_SYSCODE_TYPE rt in subCodeTypes)
            {
                TreeNode node = currentNode.ChildNodes.Add();
                node.Tag = rt;
                node.Text = rt.Name;
                node.CollapsedImageIndex = 1;
                node.ExpandedImageIndex = 2;

                LoadCodeTypes(node, rt);
            }
        }
        #endregion

        private bool MoveCode()
        {
            if (destObj == null)
            {
                lbTip.Visible = true;
                return false;
            }

            if (destObj is DMESYS_SYSCODE_TYPE)
            {
                target.Syscode_Type_Id = (destObj as DMESYS_SYSCODE_TYPE).Id;
                DBOSYS_SYSCODE.UpdateDMESYS_SYSCODE(target);
                return true;
            }

            return false;
        }

 

 

类代码 38 外部函数非凡

表 26. 类代码 38:外部函数异常
SQLSTATE 值   
含义
38XXX 外部例程或触发器返回有效错误 SQLSTATE。
38001 不允许外部例程执行 SQL 语句。
38002 例程尝试修改数据,但例程未定义为 MODIFIES SQL DATA。
38003 例程中不允许该语句。
38004 例程尝试读取数据,但例程未定义为 READS SQL DATA。
38501 (使用 SIMPLE CALL 或 SIMPLE CALL WITH NULLS 调用约定)调用用户定义的函数、外部过程或触发器时出错。
38502 不允许外部函数执行 SQL 语句。
38503 用户定义的函数异常终止(abend)。
38504 用户定义的函数已被用户中断,以停止可能的循环条件。
38505 FINAL CALL 上的例程中不允许 SQL 语句。
38506 函数因来自 OLE 数据库提供程序的错误而失败。
38552 SYSFUN 模式(由 IBM 提供)中的函数已异常终止。

可以在消息正文中找到下列原因码之一:

01
数字值超出范围
02
被零除
03
算术溢出或下溢
04
日期格式无效
05
时间格式无效
06
时间戳记格式无效
07
时间戳记持续时间的字符表示法无效
08
间隔类型无效(必须是 1、2、4、8、16、32、64、128、256 其中之一)
09
字符串太长
10
字符串函数中的长度或位置超出范围
11
浮点数的字符表示法无效
38553 系统模式中的例程已因错误而终止。
38H01 MQSeries 函数未能初始化。
38H02 MQSeries 的“应用程序消息传递接口”未能终止会话。
38H03 MQSeries 的“应用程序消息传递接口”未能正确地处理消息。
38H04 MQSeries 的“应用程序消息传递接口”未能发送消息。
38H05 MQSeries 的“应用程序消息传递接口”未能读取/接收消息。
38H06 MQSeries 的“应用程序消息传递接口”预订(不预订)请求失败。
38H07 MQSeries 的“应用程序消息传递接口”未能落实工作单元。
38H08 MQSeries 的“应用程序消息传递接口”策略错误。
38H09 MQSeries XA(两阶段落实)API 调用错误。
38H0A MQSeries 的“应用程序消息传递接口”未能回滚工作单元。

工作代码(用来输出结果的代码)

let calculater = new Calculate();  //实例化生成可调用对象
calculater.setBase(1000); //设置计算基础
calculater.setLeve( new L1() ); //设置计算的方式
console.log(calculater.getResult()); //get类方法,输出最后的结果 

js代码

 

var calculateBonus = function( performanceLevel, salary ){
    if ( performanceLevel === 'S' ){ 
        return salary * 4;
    }
    if ( performanceLevel === 'A' ){
        return salary * 3;
    }
    if ( performanceLevel === 'B' ){
        return salary * 2;
    } 
};
calculateBonus( 'B', 20000 ); //40000 
calculateBonus( 'S', 6000 ); //    24000
 $file = request()->file('file');
 // 移动到框架应用根目录/public/uploads/ 目录下
 $info = $file->move('public/upload/');
 if ($info) {
     $path = 'public/upload/'.$info->getSaveName();
     return return_succ($path);
 }

类代码 24 无效游标状态

表 17. 类代码 24:无效游标状态
SQLSTATE 值   
含义
24501 标识的游标未打开。
24502 在 OPEN 语句中标识的游标已经打开。
24504 在 UPDATE、DELETE、SET 或 GET 语句中标识的游标未定位在行上。
24506 在 PREPARE 中标识的语句是一个打开游标语句。
24510 对一个删除孔或更新孔尝试了 UPDATE 或 DELETE 操作。
24512 结果表与基本表不一致。
24513 不允许 FETCH NEXT、PRIOR、CURRENT 或 RELATIVE,原因是游标位置未知。
24514 先前的错误已禁用此游标。
24516 已对结果集指定了一个游标。
24517 外部函数或方法将游标保持为打开。

方针方式化解的题材:策略方式要解决的标题是,代码的复用和增添难点。即便没有政策格局的代码是将处理函数代码与逻辑代码混在一块儿写,那样写的补益是三次写好,但代码的扩大性与代码的复用性不佳。

图片 8

类代码 22 数据分外

表 15. 类代码22:数据异常
SQLSTATE 值   
含义
22001 字符数据,发生右截断;例如,更新或插入值对于列来说太长(字符串),或者日期时间值由于太小而不能赋给主机变量。
22002 检测到空值或缺少指示符参数;例如,不能将空值赋给主机变量,因为没有指定指示符变量。
22003 数字值超出范围。
22004 不能从定义为 PARAMETER STYLE GENERAL 的过程或者从用非空自变量调用的类型保留方法中返回空值。
22007 检测到无效的日期时间格式;即指定了无效的字符串表示法或值。
22008 发生日期时间字段溢出;例如,对日期或时间戳记算术运算的结果不在有效日期范围之内。
2200G 大多数特定类型都不匹配。
22011 发生子字符串错误;例如,SUBSTR 的自变量超出范围。
22012 用零作除数是无效的。
22018 对于 CAST、DECIMAL、FLOAT、或 INTEGER 标量函数,字符值是无效的。
22019 LIKE 谓词有无效转义字符。
22021 某字符不在编码字符集中。
22024 以 NUL 结束的输入主机变量或参数不包含 NUL。
22025 LIKE 谓词字符串模式包含无效的转义字符。
2202D 配合变异方法使用了空实例。
2202H 在 TABLESAMPLE 子句中指定的样本大小无效。
22501 变长字符串的长度控制字段为负值或大于最大值。
22504 混合数据值是无效的。
22506 对日期时间专用寄存器的引用无效,因为 TOD 时钟发生故障或操作系统时区参数超出范围。
22522 CCSID 值根本无效,对数据类型或子类型无效,或对编码方案无效。
22526 键变换函数没有生成任何行或生成了重复的行。
22527 对多行 INSERT 操作检测到了无效的输入数据。

可以寓目的症结是:假若想要增加代码,只可以在本来的靶子上插入新的代码,对于代码的原小编来说那不是为题,不过对于看外人写的代码的人来说这样的代码想要做早先时期的爱护难度之高同理可得。为了写出具有高复用性,好保证的,可增加的代码来说那样的代码风格是不对路的。

php接口

类代码 08 连接卓殊

表 7. 类代码 08:连接异常
SQLSTATE 值   
含义
08001 应用程序请求器不能建立连接。
08002 连接已存在。
08003 连接不存在。
08004 应用程序服务器拒绝建立连接。
08007 事务解析未知。
08502 用 TWOPHASE 的 SYNCPOINT 运行的应用程序进程发出的 CONNECT 语句无效,因为无事务管理器可用。
08504 当处理指定的路径重命名配置文件时遇到错误。

三个很好的裁决情势的代码

html代码

<body>
    <form action="#" method="post">
        用户名:<input type="text" name="user">
        密码:<input type="password" name="pwd">   
        手机号码:<input id="ph" type="text" name="phoneNumber">
        <input type="submit" value="提交">
    </form>
<script src="ms/m3.js"></script>
</body>

typescript代码

/* 定义检查表单的规则 */
namespace RuleList{
    export const Rules: any = {
        "isNotEmpty": function (value: any, errMsg: string) {
            console.log(11);
            if (value === '') return errMsg;
        },
        "minLength": function (value: any, minLength: number, errMsg: string) {
            console.log(22);
            if (value.length < minLength) return errMsg;
        },
        "isMobile": function (value: any, errMsg: string) {
            console.log(33);
            if (!/^1[3|5|8][0-9]{9}$/.test(value)) return errMsg;
        }
    }
}

/* 定义检查表单的方法类:add():添加检查的规则; start():开始检查 */
class Validator {
    cache: object[] = [];
    add(dom: any, rule: string, errMsg: string) {
        let arr: any = rule.split(':');
        this.cache.push(function () {
            let whichRule: string = arr.shift();
            arr.unshift(dom.value);
            arr.push(errMsg);
            return RuleList.Rules[whichRule].apply(dom, arr);
        });
    };
    start() {
        for (let i: number = 0, func: any; i < this.cache.length; i++) {
            func = this.cache[i];
            let msg = func();
            if (msg) return msg;  //如果有返回值说明验证没有通过
        }
    }
}

/* 策略模式的表单校验 */
let regForm = document.querySelector('form');
let usr:any = document.querySelector('input[type=text]:first-of-type');
let pwd:any = document.querySelector('input[type=password]');
let phone:any = document.querySelector('#ph');

/* 检查表单的函数 ->1.1 */
let ValidataFunc = function(){
    let validator = new Validator();
    validator.add(usr, 'isNotEmpty','用户名为空');
    validator.add(pwd, 'isNotEmpty', '密码为空');
    validator.add(pwd, 'minLength:6', '密码小于6位');
    validator.add(phone,'isMobile','号码不是手机号码');
    let msg = validator.start();
    return msg;
}
/* 检查表单的函数 ->1. */
if( regForm ){
    regForm.onsubmit = function(){
        let errMsg = ValidataFunc();
        if( errMsg ){
            alert(errMsg);
            return false;
        }
    }
}

html代码

类代码 07 动态 SQL 错误

表 6. 类代码 07:动态 SQL 错误
SQLSTATE 值   
含义
07001 对于参数标记的数目来说,主机变量的数目不正确。
07002 调用参数列表或控制块无效。
07003 在 EXECUTE 语句内标识的语句是一条选择语句,或未处于已预编译状态。
07004 动态参数需要 USING 子句或 INTO 子句。
07005 游标的语句名标识的是一个不能与游标关联的已预编译语句。
07006 由于其数据类型的缘故不能使用某输入主机变量。

@(前端)[设计格局,JavaScript,TypeScript]

类代码 01 警告

表 4. 类代码 01:警告
SQLSTATE 值   
含义
01002 发生 DISCONNECT 错误。
01003 从列函数的自变量消去 NULL 值。
01004 字符串值在指定给具有较短长度的另一字符串数据类型时被截断。
01005 SQLDA 中的条目数不够。
01007 未授予特权。
0100C 从过程返回了一个或多个特殊结果集。
0100D 关闭的游标已在链中的下一个结果集上重新打开。
0100E 生成的过程大于允许的最大结果集数目。只有第一个整数结果集已经返回到调用者。
01503 结果列数比提供的主机变量数大。
01504 UPDATE 或 DELETE 语句不包括 WHERE 子句。
01506 对 DATE 或 TIMESTAMP 值进行了调整,以更正算术运算得出的无效日期。
01509 由于用户虚拟机中的存储器不够,取消游标的分块。
01515 已为主机变量指定了一个空值,因为列的非空值不在主机变量的范围之内。
01516 已忽略不可用的 WITH GRANT OPTION。
01517 用替代字符替换不能转换的字符。
01519 已为主机变量指定了一个空值,因为数字值超出范围。
01524 列函数的结果不包括由算术表达式求值得出的空值。
01526 隔离级别已升级。
01527 SET 语句引用的专用寄存器在 AS 上不存在。
01539 连接成功但只应使用 SBCS 字符。
01543 已忽略重复约束。
01545 未限定列名已解释为相关引用。
01550 索引未创建,因为具有指定描述的索引已经存在。
01560 忽略了一个冗余的 GRANT。
01562 在数据库配置文件中的新日志路径(newlogpth)无效。
01563 日志文件的当前路径(logpath)无效。日志文件路径被复位为缺省值。
01564 已为主机变量指定了空值,因为发生了被零除的错误。
01586 将引用结构中父表的约束设置为 OFF 已导致一个或多个派生表被自动置为检查暂挂状态
01589 语句包含有冗余规范。
01592 在引用 SOURCE 函数的 CREATE FUNCTION 语句中,或:

  • 输入参数的长度、精度或小数位大于源函数相应参数的长度、精度或小数位;或
  • RETURNS 或 CAST FROM 参数的长度、精度或小数位比源函数的小;或
  • CREATE FUNCTION 语句中的 CAST FROM 参数的长度、精度或小数位比 RETURNS 参数的大。

运行期间可能发生截断(那时可能会引起错误)。

01594 对于所有信息,SQLDA 内的条目数不够多(即没有足够的描述符返回相异名称)。
01595 该视图已替换现有无效视图。
01596 没有为基于长串数据类型的单值类型创建比较函数。
01598 尝试激活活动的事件监视器,或尝试释放不活动的事件监视器。
01599 忽略 REBIND 上的绑定选项。
01602 优化级别已降低。
01603 CHECK DATA 处理过程中发现约束违例,已将其移至异常表。
01604 已经说明了 SQL 语句,但是未执行它。
01605 递归公共表表达式可能包含无限循环。
01606 节点或系统数据库目录是空的。
01607 只读事务中节点的时间差超过定义的阈值。
01609 生成的过程大于允许的最大结果集数目。只有第一个整数结果集已经返回到调用者。
01610 从过程返回了一个或多个特殊结果集。
01611 关闭的游标已在链中的下一个结果集上重新打开。
01614 定位器数小于结果集数。
01616 估计的 CPU 成本超出了资源限制。
01618 再分发节点组是更改数据分区所必需的。
01620 UNION ALL 的某些基本表可能是同一个表。
01621 检索到的 LOB 值可能已更改。
01622 语句成功完成,但在语句完成之后发生了系统错误。
01623 忽略 DEGREE 的值。
01625 模式名在 CURRENT PATH 中出现了多次。
01626 数据库仅有一个活动的缓冲池。
01627 DATALINK 值可能无效,因为该表处理协调暂挂或协调不可能的状态。
01632 并发连接数超出了该产品的定义授权。
01633 可能不能使用具体查询表来优化查询的处理。
01636 数据库管理器一直未验证非增量数据的完整性。
01637 未启用调试。
01639 联合对象可能需要调用者具有对数据源对象的必要特权。
01641 Datalink 类型属性限制结构化类型的使用。
01642 对于最大的可能 USER 缺省值,列不足够长。
01643 对 SQL 例程中 SQLSTATE 或 SQLCODE 变量的赋值可能会被覆盖,不会激活任何处理程序。
01645 SQL 过程的可执行文件未保存在数据库目录中。
01648 忽略了 COMPRESS 列属性,因为对表取消激活了 VALUE COMPRESSION。
01649 缓冲池操作已经完成,但是直到下一次数据库重新启动才会生效。
01650 索引和表统计信息不一致。
01651 成功激活了事件监视器,但是某些监视信息可能丢失了。
01652 由于语句上下文而忽略了隔离子句。
01653 权限授予给 USER。因为权限名大于 8 个字节,所以不考虑组。
01654 未启动缓冲池。
01655 成功创建了事件监视器,但是至少有一个事件监视器目标表已存在。
01657 缓冲池操作在下一次数据库重新启动后才会生效。
01665 列名或参数名被截断。
01667 可能不能使用视图来优化查询的处理。
01669 由于远程目录与本地目录之间的模式不一致,因此,未彻底更新指定昵称的统计信息。
01670 对新表来说,不存在缺省主表空间。
01671 高速缓存的语句的环境与当前环境不同。将使用当前环境来重新优化指定的语句。
01H51 “MQSeries 应用程序消息传递接口”消息被截断。
01HXX 由用户定义的函数或外部过程 CALL 返回了有效警告 SQLSTAE。

标准代码

/* 定义各种计算方式 */
class L1{
    calculate(base:number){
        return base*2;
    }
}
class L2{
    calculate(base:number){
        return base*3;
    }
}
class L3 {
    calculate(base: number) {
        return base * 4;
    }
}

类代码 23 约束违例

表 16. 类代码 23:约束违例
SQLSTATE 值   
含义
23001 RESTRICT 更新或删除规则防止父键被更新或删除。
23502 插入或更新值为空,但该列不能包含空值。
23503 外键的插入或更新值无效。
23504 NO ACTION 更新或删除规则防止父键被更新或删除。
23505 发生由唯一索引或唯一约束强加的约束违例。
23510 使用由 RLST 表强加的命令时发生约束违例。
23511 不能删除父行,因为检查约束限制该删除。
23512 不能添加检查约束,因为该表含有不满足约束定义的行。
23513 INSERT 或 UPDATE 的结果行不符合检查约束定义。
23514 检查数据处理中发现约束违例。
23515 不能建立唯一索引,或不能添加唯一约束,因为该表包含指定键的重复值。
23520 不能定义外键,因为其所有的值都不同于父表的父键。
23521 对目录表的更新违反了内部约束。
23522 标识列值的范围或者序列用完。
23524 UNION ALL 视图内的无效行移动。
23527 联合数据源中发生了完整性约束违例。

一直不用政策情势的例子代码

类代码 00 完全成功完结

表 3. 类代码 00:完全成功完成
SQLSTATE 值   
含义
00000 操作执行成功,并且未产生任何类型的警告或异常情况。

化解难点的笔触

1.分别出代码中“变”与“不变”的一部分。其中“变”的一对是吗?应该是继承代码中要伸张的一些,不是将内容稳定死的代码。而不变的有些就是代码调用部分,平日来说代码中的调用部分是稳定不变的。
2.所以将本来深度耦合的代码分离出来,作者要好给取了名字叫规则代码调用代码;条件代码时可变的可伸张的,平时放到外部的模块中用来调用和抓实可维护性。而调用代码提供set和“get`类格局用来安装标准代码的运营时须要的参数和调用调用代码用来输出结果。

发表评论

电子邮件地址不会被公开。 必填项已用*标注