开发中的零敲碎打,编程技巧,BUG收集

--批量导入数据脚本:
INSERT INTO tb_Table (id, name)
SELECT     77583 , name1 FROM         tb_table2 WHERE (intTID = 41444)
123456 MD5加密后的代码“E10ADC3949BA59ABBE56E057F20F883E”
修改字段名花费的执行时间很小。修改字段类型可以使用下面的方式。
--将原有的intID字段改成int型
ALTER TABLE [tb_Table1] ALTER COLUMN intID int NULL
数据库的自增字段,标识增量是步长,标识种子是起始的数字。可以设置从100000开始,每条数据增加1。100000,100002,100003。。

<href="javascript:void(0);" onclick="open();">链接</a> 如果open()里面有location.href = "http://xxx.com"; 则无法转向。 ——IE6下面location.href 的BUG。<href="#" onclick="open();">链接2</a><href="javascript:open();">链接3</a> 都没问题。
<!--获取页面图片的宽度和高度,如果你设定了IMG的width和height属性,获取得到的就是你设定的值-->
<img src="1.gif" id="1" />
<script language="javascript" type="text/javascript">
 
var x=document.getElementById(1).clientWidth;
 
var y=document.getElementById(1).clientHeight;
 document.write(
"图片的宽度为:"+x+"图片高度为:"+y);
</script>
不要在使用callback的时候使用页面的reload方法或者转向
客户端CLICK和服务器端点击的解决方式
onclick="if(CreateNewClub()==false) return;" onserverclick="btnCreateNewClub_ServerClick"
/// <summary>
        
/// 插入一个节点和此节点的多个子节点。
        
/// </summary>
        
/// <param name="MainNode"></param>
        
/// <param name="ChildNode"></param>
        
/// <param name="ht">用哈希表存储多个子节点的键值对</param>

        public void InsertNode(string MainNode, string ChildNode, Hashtable ht)
        
{
            XmlNode objRootNode 
= objXmlDoc.SelectSingleNode(MainNode);
            XmlElement objChildNode 
= objXmlDoc.CreateElement(ChildNode);
            objRootNode.AppendChild(objChildNode);
            
foreach (DictionaryEntry de in ht)
            
{
                XmlElement objElement 
= objXmlDoc.CreateElement(de.Key.ToString());
                objElement.InnerText 
= de.Value.ToString();
                objChildNode.AppendChild(objElement);
            }

        }
XmlNode和XmlElement的继承关系     
  System.Object  
        System.Xml.XmlNode  
              System.Xml.XmlLinkedNode  
                    System.Xml.XmlElement
元素是XML的基本构造模块。通常,元素拥有子元素、文本节点,或两者的组合。元素节点也是能够拥有属性的唯一节点类型。比如  
  
<name>123</name>  
  name元素包含文本节点123
//System.ArgumentException:
//     newChild 是从不同于创建此节点的文档创建的。该节点是只读的。
        public virtual XmlNode AppendChild(XmlNode newChild);

注意这个错误,”不同的文档创建的“
System.IO.StreamWriter sw = new System.IO.StreamWriter(@"d:\aa.txt");
            Console.SetOut(sw);
            Console.WriteLine(
"kajsdklfjasdf");
            sw.Close(); 
//在后台代码里面写前台提示脚本的方式 asp.net ajax beta2
<asp:UpdatePanel runat="server" ID="p1">
*.cs:
Microsoft.Web.UI.ScriptManager.RegisterStartupScript(p1, 
this.GetType(), "click""alert('ok')"true);
.Net Coding时,请注意:

滥用XML了么?这是个时髦但昂贵、缓慢的东东 
只在确定能处理的地方Exception 
string + 比 StringBuilding  慢300倍 
Inbox 
/Unbox ,慢 
Reflexction。慢 
COM invoke,慢
//checkbox在datagrid里如何实现批量删除

//首先,在datagrid控件绑定的时候,必须指定它的主键值
this.datagrid1.DataKeyField = "id";

private void DelButton_Click(object sender, System.EventArgs e)
{
   
for(int i=0;i<this.datagrid1.Items.Count;i++)
   
{
     CheckBox mychk 
= (CheckBox)this.datagrid1.Items[i].FindControl(xxxid);
     
if(mychk.Checked == true)
     
{
         
int myid = Convert.ToInt32(this.datagrid1.DataKeys[i].ToString());
         sql 
= delete table where id = + myid;
         
//执行删除
     }

   }

}
using System.Net;
//将具有指定 URI 的资源下载到本地文件
WebClient wc = new WebClient();
wc.DownloadFile(uri,filename);
JS里正则匹配忽略大小写的一个小例子(. net的正则验证控件里面似乎不能这样写), java中用(?i)sss
var url = /sss/i  ;
var text = "Sss";
var result = text.match(url);
if (result != null{
    alert(
"matched!"); 
}
得到程序运行时间的函数
using System.Diagnostics;
//开始计时
Stopwatch watch = new Stopwatch();            
    watch.Start();                        
....
//停止计时
watch.Stop();
Response.Write(watch.Elapsed);
在mysql数据库执行sql语句时使用正则表达式
下面的sql语句使用正则表达式匹配手机号:
select  ('13800138000' REGEXP '^13[0-9]{9,9}$|159[0-9]{8,8}$')
若匹配上查询结果为1否为0。 
select 当前日期=convert(varchar(10),getdate(),120)
,当前时间
=convert(varchar(8),getdate(),114)

本周开始时间: 
cast(CONVERT(varchar(10),(getdate() - DATEPART(weekday,getdate())+1),120as datetime)
页面加载和关闭的触发的事件:
1 写在body标签里面
<body onunload="alert('xxxxxxxxxxxxxxxxx')" onload="">
2  JS里
<script>
window.onunload
=alert("xxxxxxx");/*关闭*/
window.onload
=alert("xxxxxxx");/*加载*/
window.onbeforeunload
=alert("xxxxxxx");//
</script>
onbeforeunload可以在页面关闭,刷新,跳转时弹出提示信息,防止意外的跳转使得当前页的表单内容被清空。如果用onuload的话会使页面关闭之后才执行事件。

3.asp.net代码
protected   override   void   OnUnload(EventArgs   e)  
{
   Session.RemoveAll(); //删除Session
   base.OnUnload (e);  
}   
问题描述:取上传的文件名以及扩展名
//错误代码,图片文件名中有.的情况没有考虑,如:a.b.gif 
extFile = fileName.Substring(fileName.IndexOf("."));
//正确代码         
Match match = Regex.Match(fileName, @"^.*(?
<ex>\.(png|gif|jpeg|jpg])$");
extFile = DateTime.Now.ToFileTime() + match.Groups["ex"].Value;
发现某网站在Firefox 下面进不了首页,原来,他们使用 window.navigate("URL") 而不是 location.href='URL' 来做跳转;不幸的是 Firefox 并不支持 navigate 方法。所以以后任何地方要做跳转,忘了 navigate 吧!
解决了一个小问题,还是正则
http://xiaoqian.cn/([(\u4e00-\u9fa5)0-9a-zA-Z]+)(\/|.{0})$
([(\u4e00-\u9fa5)0-9a-zA-Z]+)匹配汉字,字母和数字
(\/|.{0})表示有个/或者空(什么都没有)

空不就是0个字符,嘿嘿
发现写正则是需要灵感的           

   把|.{0}换成?更好
   ?表示 重复零次或一次 (thx lee)   

2006-10-24 11:05:09
养成在代码中写:
#region 解释
   //一个功能实现片段
#end region
的习惯,这样,一个文件中的代码看起来舒服多了
:)
怎么把1/2  转化成 50% 
 方案:(0.5*100).tostring+"%"
 代码:
      string a = "1/2";
      string[] b = a.Split('/');
      double i = (double)(Convert.ToDouble(b[0]) / Convert.ToDouble(b[1])) * 100; 
上面是自定义的,据说.NET框架中有个函数能做,FormatPercent,没有检验
i.ToString("#0.00"); 
比如i=50
结果就是 50.00 
i=12.3456
结果就是 12.35 
四舍五入
在自定义控件上面添加页面输出缓存
<%@ OutputCache Duration="120000" VaryByParam="*" %>
注意:"*"
如何获取编辑行的主键值?
DataList_links_ItemDataBound()中
  del.CommandArgument = item.id.ToString();
DataList_links_ItemCommand事件中
 int id = Convert.ToInt32(e.CommandArgument); 
sqlserver中的decimal类型可以选择精度和小数位数来控制一个小数,float不行
mysql中可以这样分页取数据
select * from tb limit 0,30
貌似SQLServer2005可以使用ROW_NUMBER()结合order by来实现分页,一段sql例子:
select threadid from 
(
select threadid, ROW_NUMBER() OVER (order by stickydate) as Pos from cs_threads
) as T 
where T.Pos > 100000 and T.Pos 
< 100030
原文地址:https://www.cnblogs.com/lbk/p/505220.html