开发问题总结(2)

本资料有的是网上找的,有的是自己工作中遇到写的demo,可能有些许地方不正确,

1.数据库
1.1.1 替换函数REPLACE
用第三个表达式替换第一个字符串表达式中出现的所有第二个给定字符串表达式。
语法:
REPLACE ( ‘‘string_replace1’’ , ‘‘string_replace2’’ , ‘‘string_replace3’’ )
示例:

查询操作:

select REPLACE(sname,'Jack','admin,2,') from StudentInfo;

更新操作:

update studentinfo set sname = REPLACE(sname,'jack','admin') where sname like 'jack';

1.1.2字符串比较函数CHARINDEX
返回字符串中指定表达式的起始位置。
语法:CHARINDEX (<’substring_expression’>, )
其中substring _expression 是所要查找的字符表达式,expression 可为字符串也可为列名表达式。如果没有发现子串,则返回0 值。
此函数不能用于TEXT 和IMAGE 数据类型。
示例:

select CHARINDEX(sname,sgender) from StudentInfo
select * from StudentInfo where CHARINDEX(sname,'jacg')>0;

1.1.3 截取字符串函数SUBSTRING
SUBSTRING (, <starting_ position>, length)
返回从字符串左边第starting_ position 个字符起length个字符的部分。
开始start位置的设置,确实如果设置为1,会从第一个字符开始计数,1,2,3,4…以此类推、
select substring(ziduan,1,6)
将会选择字段的前6个字符,比如说是200908
如果设置为0,从0开始计数,1,2,3,4…
同样的执行select substring(ziduan,0,6),结果会是20090
示例:

select substring(sname,1,4) from StudentInfo where sid = 3;
select * from StudentInfo where substring(sname,0,2) = 'J';

1.1.4 日期格式化函数CONVERT()
CONVERT() 函数是把日期转换为新数据类型的通用函数。
CONVERT() 函数可以用不同的格式显示日期/时间数据。
语法
CONVERT(data_type(length),data_to_be_converted,style)
data_type(length) 规定目标数据类型(带有可选的长度)。data_to_be_converted 含有需要转换的值。style 规定日期/时间的输出格式。
可以使用的 style 值:
Style ID Style 格式
100 或者 0 mon dd yyyy hh:miAM (或者 PM)
101 mm/dd/yy
102 yy.mm.dd
103 dd/mm/yy
104 dd.mm.yy
105 dd-mm-yy
106 dd mon yy
107 Mon dd, yy
108 hh:mm:ss
109 或者 9 mon dd yyyy hh:mi:ss:mmmAM(或者 PM)
110 mm-dd-yy
111 yy/mm/dd
112 yymmdd
113 或者 13 dd mon yyyy hh:mm:ss:mmm(24h)
114 hh:mi:ss:mmm(24h)
120 或者 20 yyyy-mm-dd hh:mi:ss(24h)
121 或者 21 yyyy-mm-dd hh:mi:ss.mmm(24h)
126 yyyy-mm-ddThh:mm:ss.mmm(没有空格)
130 dd mon yyyy hh:mi:ss:mmmAM
131 dd/mm/yy hh:mi:ss:mmmAM
select convert(varchar(50),getDate(),120)
ps:可以修改varchar的长度,同样可以达到yyyy-mm-dd的效果

select convert(varchar(50),getDate(),120) 2015-04-12 11:56:38
select convert(varchar(10),getDate(),120) 2015-04-12

1.1.4 不区分大小写查询UPPER

select userName from userListInfo where upper(userName) like '%ZHANGSAN%'
select userName from userListInfo where upper(userName) like upper( '%zhangsan%')

1.2 常用sql语句
1.2.1 拷贝表,拷贝表结构select into
拷贝表:已知A表,拷贝到B表(B表不存在)
语句形式为:select * into B from A;

select value1, value2 into Table2 from Table1

拷贝表结构:已知A表,拷贝到B表,不包含数据
语句形式为:select * into B from A where 1=2;
1.2.2 将查询到的数据复制给另一个表INSERT INTO SELECT
语句形式为:Insert into Table2(field1,field2,…) select value1,value2,… from Table1

注意:(1)要求目标表Table2必须存在,并且字段field,field2…也必须存在
(2)注意Table2的主键约束,如果Table2有主键而且不为空,则 field1, field2…中必须包括主键
(3)注意语法,不要加values,和插入一条数据的sql混了,不要写成:
Insert into Table2(field1,field2,…) values (select value1,value2,… from Table1)

由于目标表Table2已经存在,所以我们除了插入源表Table1的字段外,还可以插入常量。示例如下:

insert into StudentInfo1(sname,sgender,saddress) select sname,sgender,2 from StudentInfo

1.2.3创建视图
语法:
Create view 视图名称 AS
sql查询语句
示例:

create view OA_AL_USER 
AS
select b.CnName,b.Userid,b.FolderName,b.InternetAddress,b.PhoneNumber,b.JobTitle from OA_AL_Group_Mapping m,OA_AL_Group o,BPM_OrgUserWithAllDept b where m.Folderid = o.Folderid and m.frequent_contacts = b.Userid;

1.2.4以md5加密的形式,查询空密码

SELECT TOP 100 *
  FROM [userListInfo] where password = 'd41d8cd98f00b204e9800998ecf8427e'

2.easyui
2.1.1获取combobox的value

var Id = $('#Id').combobox("getValue");

2.1.2获取combobox的文本值Text

var Id = $('#Id').combobox("getText");

2.1.3对combobox进行赋值
$(’#Id’).combobox(“setValue”, Id);
2.1.4combobox加载成功之后,显示第一项为默认项

$('#Folderid').combobox({
		onLoadSuccess: function (data) { //加载完成后,设置选中第一项
    		if(data!=null&&data!=""){
    		   $('#Folderid').combobox("setValue",data[0].FolderName); 
    		}
        }
});

2.1.5combobox以远程数据源,加载下拉选项

var url = "rule?wf_num=getDept &dept="+deptID;//$("#durl").text(url);
$('#addDept”).combobox({
      url:url,
      valueField:deptId,
      textField:deptName
});

2.1.6combobox以本地数据源,加载下拉选项

var data = [];
data.push({ "text": "请选择", "value": "" });
data.push({ "text": "全部提成", "value": 1 });
data.push({ "text": "剩余提成", "value": 0.5 });
$("# combobox ").combobox("loadData", data);

2.1.7 datagrid 获取选中的行

  var rows = $('#dg').datagrid('getSelections');
  var row = $('#dg').datagrid('getSelected');

2.1.8 combotree 将值清空

$(’#Id’).combotree(‘clear’);

2.1.10datebox获取值

var EndDate = $('#EndDate').datebox('getValue');

2.3 jQuery发送ajax请求

var res = "";
jQuery.ajax({
        type:"post",
		//设置同步方式,true异步,false同步,默认异步
        async:false,
        url:"r?wf_num=getData",
        dataType:"json",
        data:{"kw":kw},
        success:function(data){
            res=data.msg;
        }
});

2.5.2弹出新窗口openUrl

<a href="javascript:OpenUrl('"+url+"','500','300');void(0)" title='补交首付款'>未付</a>

function OpenUrl(DocURL,lnum,rnum)
{
 var swidth=screen.availWidth;
 var sheight=screen.availHeight;
 if(!lnum) lnum=24;
 if(!rnum) rnum=80;
 var wwidth=swidth-lnum;
 var wheight=sheight-rnum;
 var wleft=(swidth/2-0)-wwidth/2-5;
 var wtop=(sheight/2-0)-wheight/2-25;
 return window.open(DocURL,'','Width='+wwidth+'px,Height='+wheight+'px,Left='+wleft+',Top='+wtop+',location=no,menubar=no,status=yes,resizable=yes,scrollbars=auto,resezie=no');
}

2.5.3关闭新窗口openUrl
//关闭窗口

window.close();
//刷新父窗口
window.opener.location.reload();
//刷新父窗口的父级的树
window.opener.parent.$('#tree').tree('reload');

2.6父页面子页面问题
2.6.1弹出窗体子页面(即IFrame中页面)获取原始页面元素对象

window.parent.opener.$("#comCode").val(comCode); //赋值
var dg=window.parent.opener.$("#dg"); //获取原始页面datagrid

2.6.2含有两个子页面(即两个IFrame页面),其中页面之一获取另外一个页面元素对象

window.parent.document.getElementById(“subFrame”).src=subUrl;

2.6.3父页面获取子页面元素对象

var dg = document.getElementById(‘centerFrame’).contentWindow.$(’#dg’);

2.6.4子页面获取父页面元素对象

var combox = window.parent.$("#comCode");

2.6.5刷新树菜单

window.parent.$(’#tree’).tree(‘reload’);

2.6.6在父页面执行跳转连接

window.parent.location.href = url;

2.7 js四舍五入

$('#id').val(id.toFixed(2));
$('#id).val(Math.round(id*10)/10);

2.8判定复选框是否选中事件

$('#checkedbox').prop("checked")==true
$('# checkedbox').is(':checked')

ps: 
<script type="text/javascript">
function c(){
	alert(0);
	if($('#box').is(':checked')){
		alert(1);
	}
	if($('#box').prop("checked")==true){
		alert(2);
	}
}

</script>
</head>

<body>
  <input type="checkbox" name="box" id="box" onclick="c()"/>复选框
</body>

2.9关闭指定的tab(面板)

var tab = window.parent.$('#tabs').tabs('getSelected');
var index = window.parent.$('#tabs').tabs('getTabIndex',tab);
window.parent.$('#tabs').tabs('close',index);

2.10只读属性

readonly="readonly" 可以保存数据 通过Tab可获得焦点
disabled="disabled"  不能保存数据 不能获得焦点

2.11Easyui中使用jquery或js动态添加元素时出现的样式失效的解决方法
可以使用$.parser.parse();这个方法进行处理;
例如:

$.parser.parse();

表示对整个页面重新渲染,渲染完就可以看到easyui原来的样式了;

var targetObj = $("").appendTo("#id");
$.parser.parse(targetObj);
表示重新渲染某个特定的组件。
2.12自定义搜索 重写搜索js方法,url以规则传json,datagrid加载数据源

 var url = 'r?wf_num=getData&fk_folder='+v.FolderId;
   $('#dg').datagrid({
	 url:url
   }); 
   $('#dg').datagrid('reload');

2.13下拉框
添加option

$('#select').append("<option value=''></option>");

设置某个值为默认选中

$("#Id option[value='"+val+"']").attr("selected","selected");

2.14 js添加样式
//未定义任何css

//单个
$('#id').css("fontWeight","bold");
//多个
$('#id').css({"fontWeight":"bold","fontSize":"100px","color":"red"});
//已定义好css
.fmt{
        font-weight:bold;  
}
$('#id').addClass("fmt");

2.15 js格式化金额

function formatCurrency(num) {
	var returnStr = "";
    num = num.toString().replace(/\$|\,/g,'');
    if(isNaN(num))
    num = "0";
    sign = (num == (num = Math.abs(num)));
    num = Math.floor(num*100+0.50000000001);
    cents = num%100;
    num = Math.floor(num/100).toString();
    if(cents<10)
    cents = "0" + cents;
    for (var i = 0; i < Math.floor((num.length-(1+i))/3); i++)
    num = num.substring(0,num.length-(4*i+3))+','+
    num.substring(num.length-(4*i+3));
	returnStr = "<b style='font-size:14px;color:green'>"+(((sign)?'':'-') + num + '.' + cents)+"</b>";
    return returnStr;
}

2.16禁用删除键后退

<script type="text/javascript">
//处理键盘事件 禁止后退键(Backspace)密码或单行、多行文本框除外   
function banBackSpace(e){     
    var ev = e|| window.event;//获取event对象 
    var obj = ev.target || ev.srcElement;//获取事件源

    var t = obj.type||obj.getAttribute('type') ||obj.tagName.toLocaleLowerCase();//获取事件源类型     
      
    //获取作为判断条件的事件类型   
    var vReadOnly = obj.getAttribute('readonly');  
    var vEnabled = obj.getAttribute('enabled');  
    //处理null值情况   
    vReadOnly = (vReadOnly == null) ? false : vReadOnly;  
    vEnabled = (vEnabled == null) ? true : vEnabled;  
      
//当敲Backspace键时,事件源类型为密码或单行、多行文本的,
//div是指演变的textarea,如editor编辑器
    //并且readonly属性为true或enabled属性为false的,则退格键失效   
    var flag1=(ev.keyCode == 8 && (t=="password" || t=="text" || t=="textarea"||t=="div") 
                && (vReadOnly==true || vEnabled!=true))?true:false;  
     
    //当敲Backspace键时,事件源类型非密码或单行、多行文本的,则退格键失效   
    var flag2=(ev.keyCode == 8 && t != "password" && t != "text" && t != "textarea"&&t != "div") ?true:false;
      
    //判断   
    if(flag2){  
        return false;  
    }  
    if(flag1){     
        return false;     
    }     
}  
  
//禁止后退键 作用于Firefox、Opera   
document.onkeypress=banBackSpace;  
//禁止后退键  作用于IE、Chrome   
document.onkeydown=banBackSpace;  

</script>

2.17回车执行js

$(function(){
    $('input').keyup(function (event) {
        var e = event|| window.event;
        if (e.keyCode == "13") {
            doSearch();
        }
    });
});

2.18去除空格
str为要去除空格的字符串:

去除所有空格:   
str = str.replace(/\s+/g,"");       

去除两头空格:   
str = str.replace(/^\s+|\s+$/g,"");

去除左空格:
str = str.replace( /^\s*/, '');

去除右空格:
str = str.replace(/(\s*$)/g, "");

2.19获取cookie

function getCookie(name) 
{ 
    var arr,reg=new RegExp("(^| )"+name+"=([^;]*)(;|$)");
    if(arr=document.cookie.match(reg)){
        return unescape(arr[2]); 
    }else {
        return null; 
	}
}

2.20 jQuery数字运算

2.21判断一个函数是否有效

  if(typeof setTmpRemark != 'undefined' && setTmpRemark instanceof Function){ 
       setTmpRemark()
    }

2.22获取随机32位id

function getUuid(){
  var len=32;//32长度
  var radix=16;//16进制
  var chars='0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz'.split('');
  var uuid=[],i;radix=radix||chars.length;
  if(len){
  	for(i=0;i<len;i++)uuid[i]=chars[0|Math.random()*radix];
  }else{
  	var r;uuid[8]=uuid[13]=uuid[18]=uuid[23]='-';uuid[14]='4';
  	for(i=0;i<36;i++){
	  	if(!uuid[i]){
	  		r=0|Math.random()*16;uuid[i]=chars[(i==19)?(r&0x3)|0x8:r];
	  	}
  	}
  }
  return uuid.join('');
}

var y = date.getFullYear();
    var m = date.getMonth() + 1;
    var d = date.getDate();
    var h = date.getHours();
    var mi = date.getMinutes();
    var t = date.getSeconds();
    d = d > 9 ? d : '0' + d;
    m = m > 9 ? m : '0' + m;
    mi = mi > 9 ? mi : '0' + mi;
    t = t > 9 ? t : '0' + t;
    return y + '-' + m + '-' + d + ' ' + h + ':' + mi+ ':' + t;

3.1.1java获取当前月份

Calendar cal=Calendar.getInstance();//使用日历类
int year=cal.get(Calendar.YEAR);//得到年
int month=cal.get(Calendar.MONTH)+1;//得到月,因为从0开始的,所以要加1
int day=cal.get(Calendar.DAY_OF_MONTH);//得到天
int hour=cal.get(Calendar.HOUR);//得到小时
int minute=cal.get(Calendar.MINUTE);//得到分钟
int second=cal.get(Calendar.SECOND);//得到秒
System.out.println("结果:"+year+"-"+month+"-"+day+" "+hour+":"+minute+":"+second);

3.1.2 java字符串替换

String str = "'SL,,";
System.out.println("替换前:" + str);
//将两个逗号替换成一个逗号
str = str.replaceAll(",,", "+");
//str = str.replace(",,", ",");
System.out.println("替换后:" + str);

ps: replace与replaceAll的区别
String x = "[kllkklk\\kk\\kllkk]";
下面将字符串中的“\\”替换为“++”
  System.out.println(x.replace("\\", "++"));    没有问题
  System.out.println(x.replaceAll("\\", "++"));  报错 java.util.regex.PatternSyntaxException

可见,当使用转义字符进行替换的时候,是有区别的。replaceAll的参数就是regex,是正则表达式。首先会转义,所以报错。当字符串无法确定是否具有转义字符时,而且也不需要转义时,建议使用replace函数,否则,使用replaceAll函数

3.1.3获取格式化的yyyy-MM-dd

import java.text.SimpleDateFormat;
import java.text.DateFormat;
public static String getFullyear(){
	DateFormat insDateFormat = new SimpleDateFormat("yyyy-MM-dd");
        return insDateFormat.format(new Date());
}

3.1.4获取随机id

String uuid= java.util.UUID.randomUUID().toString().trim().replaceAll("-", "");

3.1.5使用cookie记住用户名

import javax.servlet.http.Cookie;
import javax.servlet.http.HttpServletResponse;

Cookie cookie = new Cookie("user","admin");
cookie.setMaxAge(24*60*60);
cookie.setPath("/");
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值