asp.net、mvc、ajax、js、jquery、sql、EF、linq、netadvantage第三方控件知识点笔记

很简单,以下:javascript

父页面:(弹出提示框)css

 function newwindow(obj)html

{java

 var rtn = window.showModalDialog('NewPage.htm','','status=no,scrollbars=no,top=20,left=110,width=420,height=165');node

 var div = document.getElementById("div1");mysql

 div.innerHTML=rtn;jquery

}web

子页面:ajax

function pageinit()正则表达式

{

var lab = document.getElementById("infoimage");

window.returnValue=lab.value;

window.close();

}

---------------------------父窗体

  function Show()

    {

      var bb=2;

      var a=window.showModalDialog("弹出2.aspx","","dialogwidth=500px;dialogheight=500px;");

      document.getElementById("Text1").value=a;

    }

-----------------------------子窗体

function Button1_onclick() {

  var a=document.getElementById("TextBox1");

  window.returnValue=a.value;

  window.close();

------------------window.dialogArguments

}

-------------------------------------------------后台调用前台js函数;

 ClientScript.RegisterStartupScript(ClientScript.GetType(), null, "<script>guo('fffff');</script>");

--------------------------sd可使name,或者是Id;

 document.all("sd").style["height"]=h;//设置样式,js控制样式

-------------------------调节透明度

    <style type="text/css">

#guo {

         filter:alpha(opacity=50);

}

</style>

--------------------------------调用客户端事件:

  ScriptManager.RegisterStartupScript(UltraWebGrid1, typeof(UltraWebGrid), "null", "<script>window.parent.gb('T');</script>", false);

---------------调用frame框架外的函数:

<script>window.parent.gb('T');</script>", false)

------------------iframe获取父页面的元素

 window.parent.document.getElementById("Text1").value="hahhahhaha";

父亲获取儿子

JS版:document.getElementById("IframeID").contentWindow.document.getElementById("divID")

--------------------------------js星期:

  var day=["日","一","二","三","四","五","六",];

  document.write("星期"+day[new Date().getDay()]);

-----------------------------------

        Infragistics.WebUI.UltraWebListbar.UltraWebListbar bar = new Infragistics.WebUI.UltraWebListbar.UltraWebListbar();

        bar.ID = "menu";

        bar.SkinID = "MenuBar";

        bar.ApplyStyleSheetSkin(Page);

        //bar.Width=

        //bar.Height = "100%";

        bar.Groups.Clear();

        YongHuModel userModel= Session["LoginUser"] as YongHuModel;

        int roleId = userModel.RoleId.Id;

        IList<RoleLines> roleLines = RoleLinesManager.GetSYSMenu(roleId);

 

        foreach (RoleLines roleItem in roleLines)

        {

            if (roleItem.LinkId.ParentId == 0)

            {

                //Infragistics.WebUI.UltraWebNavigator.Node root = new Node();

                //root.Text = roleItem.LinkId.Name;

                //root.DataKey = roleItem.LinkId.Id;

                //root.Expanded = true;

                //root.ImageUrl = "~/XtGlMk/images/base.gif";

 

                TreeNode root = new TreeNode();

                root.Text = roleItem.LinkId.Name;

                root.Value = roleItem.LinkId.Id.ToString();

                root.Expanded = true;

                root.NavigateUrl = "";

                Infragistics.WebUI.UltraWebListbar.Group group = new Infragistics.WebUI.UltraWebListbar.Group(root.Text);

 

 

                MyTemplate tem = new MyTemplate();

                tem.Lines = roleLines;

                tem.Root = root;

 

                group.Template = tem;

                bar.Groups.Add(group);

            }

        }

        bar.DataBind();

        Panel1.Controls.Add(bar);

----------------------------------------------------treeNode节点添加:

using System;

using System.Data;

using System.Configuration;

using System.Web;

using System.Web.Security;

using System.Web.UI;

using System.Web.UI.WebControls;

using System.Web.UI.WebControls.WebParts;

using System.Web.UI.HtmlControls;

using System.Collections.Generic;

using JC.BLL;

using JC.Model;

/// <summary>

/// MyTemplate 的摘要说明

/// </summary>

public class MyTemplate : ITemplate

{

    private IList<RoleLines> lines;

    public IList<RoleLines> Lines

    {

        set { lines = value; }

    }

    private TreeNode root;

    public TreeNode Root

    {

        set { root = value; }

    }

    private System.Web.UI.Page skin;

    public System.Web.UI.Page Skin

    {

        set { skin = value; }

    }

    public void InstantiateIn(Control container)

    {

        TreeView tree = new TreeView();

        tree.Target = "I3";

        //tree.Font.Size = FontUnit.Point(9);

        //tree.ForeColor = System.Drawing.Color.Black;

 

        //tree.ImageSet = TreeViewImageSet.BulletedList;

        tree.NoExpandImageUrl = "../images/left.gif";

        //tree.Font.Size = FontUnit.Point(9);

        tree.CssClass = "STYLE3";

 

        tree.Nodes.Add(root);

        FillTemp(root, Convert.ToInt32(root.Value));

 

        //test

        //TreeNode cNode = new TreeNode();

        //cNode.Text = "租赁";

        //cNode.NavigateUrl = "~/XmGlMk/TenancyManager/Tenancy.aspx";

        //cNode.Target = "I3";

 

 

        //TreeNode gNode = new TreeNode();

        //gNode.Text = "还租";

        //gNode.NavigateUrl = "~/XmGlMk/TenancyManager/GiveBackManager.aspx";

        //gNode.Target = "I3";

        //tree.Nodes.Add(cNode);

        //tree.Nodes.Add(gNode);

        tree.DataBind();

        container.Controls.Add(tree);

    }

    /// <summary>

    /// 使用递归算法添加节点

    /// </summary>

    /// <param name="root"></param>

    /// <param name="parentNodeId"></param>

    private void FillTemp(TreeNode root, int parentNodeId)

    {

        foreach (RoleLines entity in lines)

        {

            if (entity.LinkId.ParentId == parentNodeId)

            {

                TreeNode node = new TreeNode();

                node.Target = "I3";

                node.Text = entity.LinkId.Name;

                node.NavigateUrl = entity.LinkId.Url;

                node.Value = entity.LinkId.Id.ToString();

                string xtbh = HttpContext.Current.Session["XmBH"] as string;

                if (xtbh != null)

                {

                    int bh = Convert.ToInt32(xtbh);

                    XiangMuModel xm = XiangMuManager.getXiangMuByBH(bh);

                    if (!xm.JiJiaB)

                    {

                        if (entity.LinkId.Id == 30107)

                        {

                            node.NavigateUrl = "~/XmGlMk/YiDongJiJia.aspx";

                        }

                    }

                    DJConfiguration config = Commond.GetDjConfiguration(DJTYPE.RKD);

                    if (!config.GFSL)

                    {

                        if (node.Value == "30201" || node.Value == "30202" || node.Value == "30203" || node.Value == "30204")

                        {

                            continue;

                        }

                    }

                }

                FillTemp(node, entity.LinkId.Id);

                root.ChildNodes.Add(node);

            }

        }

    }

}

---------------------------------------listbar:

        Infragistics.WebUI.UltraWebListbar.Group group = new Infragistics.WebUI.UltraWebListbar.Group("aa");

        Infragistics.WebUI.UltraWebListbar.Item ite1 = new Infragistics.WebUI.UltraWebListbar.Item();

        ite1.Text = "aaaa";

        group.Items.Add(ite1);

        this.UltraWebListbar1.Groups.Add(group);

----------------------------------------

 ScriptManager.RegisterStartupScript(UpdatePanel1, typeof(UpdatePanel), "Button2",

                   "<script>alert('请选择要删除的行!');</script>", false);

------------------------------------------scriptmanage中使用控件netadvantage可以使用;webconfig文件

  <httpHandlers>

      <remove path="*.asmx" verb="*"/>

      <add path="ScriptResource.axd" verb="GET,HEAD" type="System.Web.Handlers.ScriptResourceHandler, System.Web.Extensions, Version=1.0.61025.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35" validate="false"/>

  </httpHandlers>

---------------------------

  <p style="padding-top:5px;">欢迎您</p> 若换成<span>就很差用了;

------------------------viewstate相似于static

-------------------------分页:

string sql2 = "select top " + page.PageSize + " * from GongSi where BH not in(select top " + page.Start + " BH from GongSi)";

---------------------------gridview中添加控件

 <igtbl:TemplatedColumn  Width="200px">

                    <HeaderTemplate>

                        操做

                    </HeaderTemplate>

                    <CellTemplate>

                        <asp:LinkButton ID="LinkButton1" runat="server" OnClick="LinkButton1_Click" Width="80px">下属用户</asp:LinkButton>

                    </CellTemplate>

                    <Header>

                        <RowLayoutColumnInfo OriginX="3" />

                    </Header>

                    <Footer>

                        <RowLayoutColumnInfo OriginX="3" />

                    </Footer>

                </igtbl:TemplatedColumn>

---------------------------------------------------------------------------------获取gridview的表格值,cell值:

  Session["Id"] = UltraWebGrid1.DisplayLayout.SelectedCells[0].Row.Cells[0];

 Session["Id"] = UltraWebGrid1.DisplayLayout.SelectedRows[0].Cells[0].ToString();

   案例:

   if (UltraWebGrid2.DisplayLayout.SelectedCells[0] != null)

        {

            if (UltraWebGrid2.DisplayLayout.SelectedCells[0].Row != null)

            {

                int id = Convert.ToInt32(UltraWebGrid2.DisplayLayout.SelectedCells[0].Row.Cells[0].Text);

                Session["XgGsID"] = id;

                Response.Redirect("XgGongSi.aspx");

            }

            else

            {

                ScriptManager.RegisterStartupScript(UpdatePanel1, typeof(UpdatePanel), "Button2",

                   "<script>alert('请选择要修改的行!');</script>", false);

            }

        }

        else

        {

            if (UltraWebGrid2.DisplayLayout.SelectedRows[0] != null)

            {

                int id = Convert.ToInt32(UltraWebGrid2.DisplayLayout.SelectedRows[0].Cells[0].Text);

                Session["XgGsID"] = id;

                Response.Redirect("XgGongSi.aspx");

            }

            else

            {

                ScriptManager.RegisterStartupScript(UpdatePanel1, typeof(UpdatePanel), "Button2",

                      "<script>alert('请选择要修改的行!');</script>", false);

            }

        }

-------------------------------------------------------------------------------------------

 

----------------listbox添加项:

 foreach (YongHuModel model in yhgl_models)

            {

                ListItem li = new ListItem();

                li.Text = model.MC.ToString();

                li.Value = model.BH.ToString();

                cblJZXM.Items.Add(li);

            }

------------------------------------------------listbox:添加移除列;

  cblJZXM.Items.Add(li);

                //移除

cblXM.Items.RemoveAt(i);

------------------------------------------------弹出框案例:

父页面案例:弹出提示框

<script language="javascript" type="text/javascript">

function Button1_onclick() {

   window.showModalDialog("子.aspx",this,"dialogHeight:450px;dialogWidth:800px;status=no");

}

function show(str)

{

  document.getElementById("Text1").value=str;

}

</script>

//子页面案例:后台---

 ScriptManager.RegisterStartupScript(UpdatePanel1, typeof(UpdatePanel), "null",

           "<script>window.dialogArguments.addgs('" + GYSBH + "','" + MC + "');window.close();</script>", false);

必须在head内添加:

<base target = "_self"/>

-----------------------------------后台获取前台session值:

 string dataBaseName=System.Web.HttpContext.Current.Session["XmName"].ToString();

//--------------------------------------查询某数据库某个表:

SELECT * FROM CC ..AA

------------------------------------------

cmd.Parameters.AddRange(values);//循环添加sqlparameters

-----------------------------------------------------------------

 using(SqlDataReader sdr=DBHelper.GetReader(sql1)),使用using的前提是对象类必须是实现:Idispose接口;

            {

                if (sdr.Read())

                {

                    return 0;

                }

            }

--------------------------------------------------------------------------------------------------前台:

  function IfGoDel(bh)

        {

          if(confirm("是否同时删除合格供应商名册与供应商复核里的数据?"))

          {

            document.getElementById("hidCommond").value="allDel";

            document.getElementById("hidXtBH").value=bh;

           

          }else

          {

            document.getElementById("hidCommond").value="Only";

            document.getElementById("hidXtBH").value=bh;

          }

//          __doPostBack("UpdatePanel1","");

         document.form1.submit();

        }

--------后台:

  string commond = Request.Form["hidCommon"];

            if (commond == "Search")

            {

                Bind(1);

            }

            string commd = Request.Form["hidCommond"];

            string xtbh = Request.Form["hidXtBH"];

            if (commd == "allDel")

            {

                int key = Convert.ToInt32(xtbh);

                bool bb = GysFpManager.dropGysFPByBH(key);

                if (bb)

                    {

 

                        ScriptManager.RegisterStartupScript(UpdatePanel1, typeof(UpdatePanel), "Button2",

                           "<script>alert('删除成功!');</script>", false);

                        Bind(1);

                    }

                    else

                    {

                        ScriptManager.RegisterStartupScript(UpdatePanel1, typeof(UpdatePanel), "Button2",

                           "<script>alert('删除失败!');</script>", false);

                    }

             

            }

            if (commd == "Only")

            {

                return;

            }

        }

    }

-----------------------------------数据库分页;

   List<GysModel> GysS = new List<GysModel>();

            List<SqlParameter> pars = new List<SqlParameter>();

            string searchSql = CreatSql(searchModel, pars);

            string selectCount = "select count(*) from Gys where  (FHJG=1 or FHJG is null ) " + searchSql;

            page.TotalRow = Convert.ToInt32(DBHelper.GetScalar(selectCount, pars.ToArray()));

            StringBuilder sql = new StringBuilder("select * from (select  row_number() OVER (ORDER BY BH desc) AS rowId,* from Gys where  (FHJG=1 or FHJG is null )");

            sql.Append(searchSql).Append(")as Temp where rowId between ").Append(page.Begin).Append(" and ").Append(page.End);

            using (SqlDataReader dr = DBHelper.GetReader(sql.ToString(), pars.ToArray()))

            {

                while (dr.Read())

----------------------------------------添加事务:

begin transaction

insert into A(c1,c2) values(v1,v2);

insert into B(c3,c4) values(v3,v4);

insert into C(c5,c6) values(v5,v6);

if @@ERROR = 0

begin

     commit transaction;

end

else

begin

    rollback transaction;

end

---------------------------这条语句是正确的

 cn = new SqlConnection("data source=DELL-PC\\AA;uid=sa;pwd=sa");

            cn.Open();

            StringBuilder sb = new StringBuilder(" use CC update [User] set UName='666' where UId="+i+"");

-----------------------------这条语句也是正确的;

 cn = new SqlConnection("data source=DELL-PC\\AA;initial catalog=CC; uid=sa;pwd=sa");

            cn.Open();

            StringBuilder sb = new StringBuilder(" use CD update [User] set UName='666' where UId="+i+"");

---------------------------------同时对两个数据库进行操做

 try

        {

            int i = 1;

            cn = new SqlConnection("data source=DELL-PC\\AA;initial catalog=CC; uid=sa;pwd=sa");

            cn.Open();

            StringBuilder sb = new StringBuilder("begin transaction ");

            sb.Append("use CC update [User] set UName='xiao' where UId=1");

            sb.Append("use CD update [User] set UName='xiao' where UId=1");

            sb.Append("if @@ERROR = 0 begin commit transaction end else begin rollback transaction end");

            SqlCommand cmd = new SqlCommand(sb.ToString(), cn);

            cmd.ExecuteNonQuery();

        }

------------------------------

cmd.Parameters.AddRange(values);

--------------------------------------

  List<GysFhModel> GysFhS = new List<GysFhModel>();

            List<SqlParameter> pars = new List<SqlParameter>();

            string searchSql = CreatSql(searchModel, pars);

            string selectCount = "select count(*) from GYSFH left join GYS  on GYSFH.GYSBH=GYS.BH where  1=1 " + searchSql;

            page.TotalRow = Convert.ToInt32(DBHelper.GetScalar(selectCount, pars.ToArray()));

            StringBuilder sql = new StringBuilder("select * from (select  row_number() OVER (ORDER BY GYSFH.BH desc) AS rowId,GYSFH.* ,GYS.MC from GYSFH left join GYS  on GYSFH.GYSBH=GYS.BH where 1=1 ");

            sql.Append(searchSql).Append(")as Temp where rowId between ").Append(page.Begin).Append(" and ").Append(page.End);

 

------------------------javascript:后台提交

  document.getElementById("HiddenField1").value="1233434";

         var b=document.getElementById("HiddenField2");

         window.form1.submit();

 

   接收 if (IsPostBack)

        {

            TextBox1.Text = HiddenField1.Value.ToString();

        }

------------------------将数据库备份到指定位置;

backup database cc to disk='D:\d3.bak'

-----------------------将备份还原到某个位置并附加数据库:格式不能变化;

restore database SJCL33 from disk='D:\Company\通用版\JC.Web\File\BakSource\TSSJCL.bak' with FILE = 1, move 'SJCL' to 'C:\Users\dell\Desktop\s\SJCL33.mdf',move 'SJCL_Log' to 'C:\Users\dell\Desktop\s\SJCL33.LDF',NOUNLOAD,  REPLACE,  STATS = 10

restore database SJCL33 from disk='D:\Company\通用版\JC.Web\File\BakSource\TSSJCL.bak' with FILE = 1, move 'SJCL' to 'C:\Users\dell\Desktop\s\SJCL33.mdf',move 'SJCL_Log' to 'C:\Users\dell\Desktop\s\SJCL33.LDF',NOUNLOAD,  REPLACE,  STATS = 10

restore database SJCL33 from disk='D:\Company\通用版\JC.Web\File\BakSource\TSSJCL.bak' with FILE = 1, move 'SJCL' to 'C:\Users\dell\Desktop\s\SJCL33.mdf',move 'SJCL_Log' to 'C:\Users\dell\Desktop\s\SJCL33.LDF',NOUNLOAD,  REPLACE,  STATS = 10

restore database SJCL33 from disk='D:\Company\通用版\JC.Web\File\BakSource\TSSJCL.bak' with FILE = 1, move 'SJCL' to 'C:\Users\dell\Desktop\s\SJCL33.mdf',move 'SJCL_Log' to 'C:\Users\dell\Desktop\s\SJCL33.LDF',NOUNLOAD,  REPLACE,  STATS = 10

restore database SJCL33 from disk='D:\Company\通用版\JC.Web\File\BakSource\TSSJCL.bak' with FILE = 1, move 'SJCL' to 'C:\Users\dell\Desktop\s\SJCL33.mdf',move 'SJCL_Log' to 'C:\Users\dell\Desktop\s\SJCL33.LDF',NOUNLOAD,  REPLACE,  STATS = 10

restore database SJCL33 from disk='D:\Company\通用版\JC.Web\File\BakSource\TSSJCL.bak' with FILE = 1, move 'SJCL' to 'C:\Users\dell\Desktop\s\SJCL33.mdf',move 'SJCL_Log' to 'C:\Users\dell\Desktop\s\SJCL33.LDF',NOUNLOAD,  REPLACE,  STATS = 10

restore database SJCL33 from disk='D:\Company\通用版\JC.Web\File\BakSource\TSSJCL.bak' with FILE = 1, move 'SJCL' to 'C:\Users\dell\Desktop\s\SJCL33.mdf',move 'SJCL_Log' to 'C:\Users\dell\Desktop\s\SJCL33.LDF',NOUNLOAD,  REPLACE,  STATS = 10

restore database SJCL33 from disk='D:\Company\通用版\JC.Web\File\BakSource\TSSJCL.bak' with FILE = 1, move 'SJCL' to 'C:\Users\dell\Desktop\s\SJCL33.mdf',move 'SJCL_Log' to 'C:\Users\dell\Desktop\s\SJCL33.LDF',NOUNLOAD,  REPLACE,  STATS = 10

restore database SJCL33 from disk='D:\Company\通用版\JC.Web\File\BakSource\TSSJCL.bak' with FILE = 1, move 'SJCL' to 'C:\Users\dell\Desktop\s\SJCL33.mdf',move 'SJCL_Log' to 'C:\Users\dell\Desktop\s\SJCL33.LDF',NOUNLOAD,  REPLACE,  STATS = 10

restore database SJCL33 from disk='D:\Company\通用版\JC.Web\File\BakSource\TSSJCL.bak' with FILE = 1, move 'SJCL' to 'C:\Users\dell\Desktop\s\SJCL33.mdf',move 'SJCL_Log' to 'C:\Users\dell\Desktop\s\SJCL33.LDF',NOUNLOAD,  REPLACE,  STATS = 10

restore database SJCL33 from disk='D:\Company\通用版\JC.Web\File\BakSource\TSSJCL.bak' with FILE = 1, move 'SJCL' to 'C:\Users\dell\Desktop\s\SJCL33.mdf',move 'SJCL_Log' to 'C:\Users\dell\Desktop\s\SJCL33.LDF',NOUNLOAD,  REPLACE,  STATS = 10

restore database SJCL33 from disk='D:\Company\通用版\JC.Web\File\BakSource\TSSJCL.bak' with FILE = 1, move 'SJCL' to 'C:\Users\dell\Desktop\s\SJCL33.mdf',move 'SJCL_Log' to 'C:\Users\dell\Desktop\s\SJCL33.LDF',NOUNLOAD,  REPLACE,  STATS = 10

restore database SJCL33 from disk='D:\Company\通用版\JC.Web\File\BakSource\TSSJCL.bak' with FILE = 1, move 'SJCL' to 'C:\Users\dell\Desktop\s\SJCL33.mdf',move 'SJCL_Log' to 'C:\Users\dell\Desktop\s\SJCL33.LDF',NOUNLOAD,  REPLACE,  STATS = 10

restore database SJCL33 from disk='D:\Company\通用版\JC.Web\File\BakSource\TSSJCL.bak' with FILE = 1, move 'SJCL' to 'C:\Users\dell\Desktop\s\SJCL33.mdf',move 'SJCL_Log' to 'C:\Users\dell\Desktop\s\SJCL33.LDF',NOUNLOAD,  REPLACE,  STATS = 10

restore database SJCL33 from disk='D:\Company\通用版\JC.Web\File\BakSource\TSSJCL.bak' with FILE = 1, move 'SJCL' to 'C:\Users\dell\Desktop\s\SJCL33.mdf',move 'SJCL_Log' to 'C:\Users\dell\Desktop\s\SJCL33.LDF',NOUNLOAD,  REPLACE,  STATS = 10

---------------------------

 document.write("浏览器名称: " + navigator.appName + "<br>");

 

        document.write("版本号: " + navigator.appVersion + "<br>");

 

        document.write("代码名字: " + navigator.appCodeName + "<br>");

 

        document.write("用户代理标识: " + navigator.userAgent);

---------------------------bit类型数据存储

插入时能够存:

INSERT INTO Users(Sex) VALUES('TRUE');

0为false,1为true;

或者直接插入0或1;插入时除了整形不带单引号其他都带;

显示时也为True或false;

-----------------------------存储过程整形做为条件

ALTER PROCEDURE dbo.selectuser

(

     @UId int,

     @result nvarchar(20) output

)

AS

 declare @s nvarchar(100)

 set @s=@UId

 declare @str nvarchar(1000)

 set @str='select @result=UName from [User] where UId='''+@s+''''//一个或是三个单引号都行;如果整形,先赋值给字符型就好了

EXEC sp_executesql @str, N'@result nvarchar(20) OUTPUT', @result OUTPUT

--------------------------------数据库分页存储过程

"select UName from [User] where UName like '%"+ss+"%'"

ALTER PROCEDURE dbo.SelectPages

  (

     @name int,

          @pageSize         INT,              --每页显示的索引号

         @pageIndex        INT,               --每页显示的记录数

         @count      INT OUTPUT        --总记录数

  )

AS

  begin

  declare @na nvarchar(20)

  set @na=@name

    declare @sqlstrc nvarchar(2000)

         declare @sqlstrd nvarchar(2000)

         set @sqlstrc='select @count=count(*) from Fen where Name>'''+@na+''''

         exec sp_executesql @sqlstrc, N'@count int output',@count output

         set @sqlstrd='select Name from (select Name,ROW_NUMBER() OVER (ORDER BY Id) AS SerialNumber from Fen where Name>'''+@na+''') as t'

         set @sqlstrd=@sqlstrd+' WHERE t.SerialNumber > ' + CONVERT(NVARCHAR(100), (@pageIndex - 1) * @pageSize) +

                   ' AND t.SerialNumber <= ' + CONVERT(NVARCHAR(100), @pageIndex * @PageSize)

    exec (@sqlstrd)

  end

----------------------------------数据库备份,断开链接知识

using System;

using System.Collections.Generic;

using System.Text;

using System.Data;

using System.Data.SqlClient;

using JC.Model;

namespace JC.DAL

{

    public class DataBaseService

    {

        private const string SQL_SELECT_DATABASE_INFO = "select name,filename,fileid from sysfiles ORDER BY fileid";

        private const string SQL_SELECT_SYSPROCESS = "select * from master..sysprocesses where dbid=db_id(@AimDB)";

        private const string SQL_KILL_PROCESS_PRO = "killspid";

        private const string SQL_RESTORE = "restore database {0} from disk=@SourceDbBakPath with FILE = 1, move @DBName to @DBPath,move @DBLogName to @DBLogPath,NOUNLOAD,  REPLACE,  STATS = 10";

        private const string SQL_EXITS_PROC = "select * from sysobjects where id = object_id(@ProName) and OBJECTPROPERTY(id, N'IsProcedure') = 1";

        /// <summary>

        /// 获取mdf文件的基本信息

        /// </summary>

        /// <returns></returns>

        public static List<DataBaseModel> GetDataBaseInfo()

        {

            List<DataBaseModel> list = new List<DataBaseModel>();

            using (SqlDataReader reader = DBHelper.GetReader(SQL_SELECT_DATABASE_INFO))

            {

                while(reader.Read())

                {

                    DataBaseModel model = new DataBaseModel();

                    model.Fileid = Convert.ToInt32(reader["fileid"]);

                    model.DataBaseName = reader["name"].ToString();

                    model.DataBasePath = reader["filename"].ToString();

                    list.Add(model);  

                }

                reader.Close();

            }

            return list;

        }

        /// <summary>

        /// 判断存储过程是否存在于master数据库

        /// </summary>

        /// <param name="proName">存储过程名称</param>

        /// <returns></returns>

        public static bool ExitsPro(string proName)

        {

            bool result = false;

            using (SqlDataReader reader = DBHelper.GetReaderByConMaster(CommandType.Text, SQL_EXITS_PROC, new SqlParameter("@ProName", proName)))

            {

                if (reader.Read())

                {

                    result = true;

                }

                reader.Close();

            }

            return result;

        }

        /// <summary>

        /// 判断指定数据库是否有链接进程

        /// </summary>

        /// <param name="aimDbBase">数据库名称</param>

        /// <returns></returns>

        public static bool ExitsProcess(string aimDbBase)

        {

            bool result = false;

            using (SqlDataReader reader = DBHelper.GetReader(SQL_SELECT_SYSPROCESS, new SqlParameter("@AimDB", aimDbBase)))

            {

                if (reader.Read())

                {

                    result = true;

                }

                reader.Close();

            }

            return result;

        }

        /// <summary>

        /// 判断某数据库是否有访问进程,有就关闭全部相关进程

        /// </summary>

        /// <param name="aimDbBase">数据库名称</param>

        /// <returns></returns>

        public static int ExitsKillProcess(string aimDbBase)

        {

            return DBHelper.ExecuteNonQueryByMaster(CommandType.StoredProcedure, SQL_KILL_PROCESS_PRO, new SqlParameter("@dbname", aimDbBase));

        }

        /// <summary>

        /// 数据库备份

        /// </summary>

        /// <param name="sourceDbName">源数据库名称</param>

        /// <param name="aimDbPath">备份文件目标路径</param>

        /// <returns></returns>

        public static int DbBackUp(string sourceDbName, string aimDbPath)

        {

            string sql = "BACKUP DATABASE " + sourceDbName + " TO DISK=@AimDbPath";

            return DBHelper.ExecuteNonQueryByMaster(CommandType.Text, sql, new SqlParameter("@AimDbPath",aimDbPath));

        }

        ///// <summary>

        ///// 数据库还原

        ///// </summary>

        ///// <param name="aimDbName">目标数据库名称</param>

        ///// <param name="sourceDbBakPath">数据库备份文件</param>

        ///// <returns></returns>

        //public static int DbRestore(string aimDbName, string sourceDbBakPath)

        //{

        //    string sql = "killspid @AimDbName restore database " + aimDbName + " from disk=@SourceDbBakPath with replace";

        //    SqlParameter [] pars=new SqlParameter[]{

        //    new SqlParameter("@AimDbName",aimDbName),

        //    new SqlParameter("@SourceDbBakPath",sourceDbBakPath)

        //    };

        //   return DBHelper.ExecuteNonQueryByMaster(CommandType.Text, sql, pars);

        //}

        /// <summary>

        /// 数据库还原

        /// </summary>

        /// <param name="aimDbName">目标数据库名称</param>

        /// <param name="sourceDbBakPath">备份文件物理路径</param>

        /// <param name="DBName">备份文件数据库文件的逻辑名称</param>

        /// <param name="DBPath">目标数据库文件的物理路径</param>

        /// <param name="DBLogName">备份文件记录的源数据库的数据库日志文件逻辑名</param>

        /// <param name="DBLogPath">目标数据库日志文件的物理路径</param>

        /// <returns></returns>

        public static int DbRestore(string aimDbName, string sourceDbBakPath,string DBName,string DBPath,string DBLogName,string DBLogPath)

        {

           

            string sql = string.Format(SQL_RESTORE, aimDbName);

            SqlParameter[] pars = new SqlParameter[] {

            new SqlParameter("@SourceDbBakPath",sourceDbBakPath),

            new SqlParameter("@DBName",DBName),

            new SqlParameter("@DBPath",DBPath),

            new SqlParameter("@DBLogName",DBLogName),

            new SqlParameter("@DBLogPath",DBLogPath)

            };

             DBHelper.ExecuteNonQueryByMaster(CommandType.Text, sql, pars);

             return Convert.ToInt32(DBHelper.TestCommond("use " + aimDbName + " SELECT count(*) FROM sysobjects WHERE xtype = 'U'", null));

        }

        /// <summary>

        /// 建立断开链接进程的存储过程

        /// </summary>

        /// <returns></returns>

        public static int CreatKildPro()

        {

               string kill = "  CREATE proc killspid (@dbname varchar(20))";

                kill += " as ";

                kill += " begin ";

                kill += " declare @sql   nvarchar(500) ";

                kill += " declare @spid  int ";

                kill += " set @sql='declare getspid cursor for select spid from sysprocesses where dbid=db_id('''+@dbname+''')'";

                kill += " exec (@sql) ";

                kill += " open getspid  ";

                kill += " fetch next from getspid into @spid   ";

                kill += " while @@fetch_status <> -1   ";

                kill += " begin";

                kill += " exec('kill '+@spid) ";

                kill += " fetch next from getspid into @spid    ";

                kill += " end       ";

                kill += " close getspid  ";

                kill += " deallocate getspid  ";

                kill += " end";

              return  DBHelper.ExecuteNonQueryByMaster(CommandType.Text, kill, null);

        }

    }

}

---------------

using System.Configuration; string _connectionString = ConfigurationManager.AppSettings["ConnectionString"];  

--------------------------------------------动软加密解密

using System;

using System.Security.Cryptography; 

using System.Text;

namespace Maticsoft.DBUtility

{

         /// <summary>

         /// DES加密/解密类。

         /// </summary>

         public class DESEncrypt

         {

                   public DESEncrypt()

                   {       

                  

                   }

 

                   #region ========加密========

 

        /// <summary>

        /// 加密

        /// </summary>

        /// <param name="Text"></param>

        /// <returns></returns>

                   public static string Encrypt(string Text)

                   {

            return Encrypt(Text, "litianping");

                   }

                   /// <summary>

                   /// 加密数据

                   /// </summary>

                   /// <param name="Text"></param>

                   /// <param name="sKey"></param>

                   /// <returns></returns>

                   public static string Encrypt(string Text,string sKey)

                   {

                            DESCryptoServiceProvider des = new DESCryptoServiceProvider();

                            byte[] inputByteArray;

                            inputByteArray=Encoding.Default.GetBytes(Text);

                            des.Key = ASCIIEncoding.ASCII.GetBytes(System.Web.Security.FormsAuthentication.HashPasswordForStoringInConfigFile(sKey, "md5").Substring(0, 8));

                            des.IV = ASCIIEncoding.ASCII.GetBytes(System.Web.Security.FormsAuthentication.HashPasswordForStoringInConfigFile(sKey, "md5").Substring(0, 8));

                            System.IO.MemoryStream ms=new System.IO.MemoryStream();

                            CryptoStream cs=new CryptoStream(ms,des.CreateEncryptor(),CryptoStreamMode.Write);

                            cs.Write(inputByteArray,0,inputByteArray.Length);

                            cs.FlushFinalBlock();

                            StringBuilder ret=new StringBuilder();

                            foreach( byte b in ms.ToArray())

                            {

                                     ret.AppendFormat("{0:X2}",b);

                            }

                            return ret.ToString();

                   }

 

                   #endregion

                  

                   #region ========解密========

  

 

        /// <summary>

        /// 解密

        /// </summary>

        /// <param name="Text"></param>

        /// <returns></returns>

                   public static string Decrypt(string Text)

                   {

            return Decrypt(Text, "litianping");

                   }

                   /// <summary>

                   /// 解密数据

                   /// </summary>

                   /// <param name="Text"></param>

                   /// <param name="sKey"></param>

                   /// <returns></returns>

                   public static string Decrypt(string Text,string sKey)

                   {

                            DESCryptoServiceProvider des = new DESCryptoServiceProvider();

                            int len;

                            len=Text.Length/2;

                            byte[] inputByteArray = new byte[len];

                            int x,i;

                            for(x=0;x<len;x++)

                            {

                                     i = Convert.ToInt32(Text.Substring(x * 2, 2), 16);

                                     inputByteArray[x]=(byte)i;

                            }

                            des.Key = ASCIIEncoding.ASCII.GetBytes(System.Web.Security.FormsAuthentication.HashPasswordForStoringInConfigFile(sKey, "md5").Substring(0, 8));

                            des.IV = ASCIIEncoding.ASCII.GetBytes(System.Web.Security.FormsAuthentication.HashPasswordForStoringInConfigFile(sKey, "md5").Substring(0, 8));

                            System.IO.MemoryStream ms=new System.IO.MemoryStream();

                            CryptoStream cs=new CryptoStream(ms,des.CreateDecryptor(),CryptoStreamMode.Write);

                            cs.Write(inputByteArray,0,inputByteArray.Length);

                            cs.FlushFinalBlock();

                            return Encoding.Default.GetString(ms.ToArray());

                   }

 

                   #endregion

 

 

         }

}

-----------------------

using System;

using System.Collections;

using System.Collections.Specialized;

using System.Data;

using System.Data.SqlClient;

using System.Configuration;

using System.Data.Common;

using System.Collections.Generic;

namespace Maticsoft.DBUtility

{

    /// <summary>

    /// 数据访问抽象基础类

    /// Copyright (C) Maticsoft

    /// </summary>

    public abstract class DbHelperSQL

    {

        //数据库链接字符串(web.config来配置),多数据库可以使用DbHelperSQLP来实现.

        public static string connectionString = PubConstant.ConnectionString;                    

        public DbHelperSQL()

        {           

        }

 

        #region 公用方法

        /// <summary>

        /// 判断是否存在某表的某个字段

        /// </summary>

        /// <param name="tableName">表名称</param>

        /// <param name="columnName">列名称</param>

        /// <returns>是否存在</returns>

        public static bool ColumnExists(string tableName, string columnName)

        {

            string sql = "select count(1) from syscolumns where [id]=object_id('" + tableName + "') and [name]='" + columnName + "'";

            object res = GetSingle(sql);

            if (res == null)

            {

                return false;

            }

            return Convert.ToInt32(res) > 0;

        }

        public static int GetMaxID(string FieldName, string TableName)

        {

            string strsql = "select max(" + FieldName + ")+1 from " + TableName;

            object obj = GetSingle(strsql);

            if (obj == null)

            {

                return 1;

            }

            else

            {

                return int.Parse(obj.ToString());

            }

        }

        public static bool Exists(string strSql)

        {

            object obj = GetSingle(strSql);

            int cmdresult;

            if ((Object.Equals(obj, null)) || (Object.Equals(obj, System.DBNull.Value)))

            {

                cmdresult = 0;

            }

            else

            {

                cmdresult = int.Parse(obj.ToString());

            }

            if (cmdresult == 0)

            {

                return false;

            }

            else

            {

                return true;

            }

        }

        /// <summary>

        /// 表是否存在

        /// </summary>

        /// <param name="TableName"></param>

        /// <returns></returns>

        public static bool TabExists(string TableName)

        {

            string strsql = "select count(*) from sysobjects where id = object_id(N'[" + TableName + "]') and OBJECTPROPERTY(id, N'IsUserTable') = 1";

            //string strsql = "SELECT count(*) FROM sys.objects WHERE object_id = OBJECT_ID(N'[dbo].[" + TableName + "]') AND type in (N'U')";

            object obj = GetSingle(strsql);

            int cmdresult;

            if ((Object.Equals(obj, null)) || (Object.Equals(obj, System.DBNull.Value)))

            {

                cmdresult = 0;

            }

            else

            {

                cmdresult = int.Parse(obj.ToString());

            }

            if (cmdresult == 0)

            {

                return false;

            }

            else

            {

                return true;

            }

        }

        public static bool Exists(string strSql, params SqlParameter[] cmdParms)

        {

            object obj = GetSingle(strSql, cmdParms);

            int cmdresult;

            if ((Object.Equals(obj, null)) || (Object.Equals(obj, System.DBNull.Value)))

            {

                cmdresult = 0;

            }

            else

            {

                cmdresult = int.Parse(obj.ToString());

            }

            if (cmdresult == 0)

            {

                return false;

            }

            else

            {

                return true;

            }

        }

        #endregion

 

        #region  执行简单SQL语句

 

        /// <summary>

        /// 执行SQL语句,返回影响的记录数

        /// </summary>

        /// <param name="SQLString">SQL语句</param>

        /// <returns>影响的记录数</returns>

        public static int ExecuteSql(string SQLString)

        {

            using (SqlConnection connection = new SqlConnection(connectionString))

            {

                using (SqlCommand cmd = new SqlCommand(SQLString, connection))

                {

                    try

                    {

                        connection.Open();

                        int rows = cmd.ExecuteNonQuery();

                        return rows;

                    }

                    catch (System.Data.SqlClient.SqlException e)

                    {

                        connection.Close();

                        throw e;

                    }

                }

            }

        }

 

        public static int ExecuteSqlByTime(string SQLString, int Times)

        {

            using (SqlConnection connection = new SqlConnection(connectionString))

            {

                using (SqlCommand cmd = new SqlCommand(SQLString, connection))

                {

                    try

                    {

                        connection.Open();

                        cmd.CommandTimeout = Times;

                        int rows = cmd.ExecuteNonQuery();

                        return rows;

                    }

                    catch (System.Data.SqlClient.SqlException e)

                    {

                        connection.Close();

                        throw e;

                    }

                }

            }

        }

     

        /// <summary>

        /// 执行Sql和Oracle滴混合事务

        /// </summary>

        /// <param name="list">SQL命令行列表</param>

        /// <param name="oracleCmdSqlList">Oracle命令行列表</param>

        /// <returns>执行结果 0-因为SQL形成事务失败 -1 因为Oracle形成事务失败 1-总体事务执行成功</returns>

        public static int ExecuteSqlTran(List<CommandInfo> list, List<CommandInfo> oracleCmdSqlList)

        {

            using (SqlConnection conn = new SqlConnection(connectionString))

            {

                conn.Open();

                SqlCommand cmd = new SqlCommand();

                cmd.Connection = conn;

                SqlTransaction tx = conn.BeginTransaction();

                cmd.Transaction = tx;

                try

                {

                    foreach (CommandInfo myDE in list)

                    {

                        string cmdText = myDE.CommandText;

                        SqlParameter[] cmdParms = (SqlParameter[])myDE.Parameters;

                        PrepareCommand(cmd, conn, tx, cmdText, cmdParms);

                        if (myDE.EffentNextType == EffentNextType.SolicitationEvent)

                        {

                            if (myDE.CommandText.ToLower().IndexOf("count(") == -1)

                            {

                                tx.Rollback();

                                throw new Exception("违背要求"+myDE.CommandText+"必须符合select count(..的格式");

                                //return 0;

                            }

 

                            object obj = cmd.ExecuteScalar();

                            bool isHave = false;

                            if (obj == null && obj == DBNull.Value)

                            {

                                isHave = false;

                            }

                            isHave = Convert.ToInt32(obj) > 0;

                            if (isHave)

                            {

                                //引起事件

                                myDE.OnSolicitationEvent();

                            }

                        }

                        if (myDE.EffentNextType == EffentNextType.WhenHaveContine || myDE.EffentNextType == EffentNextType.WhenNoHaveContine)

                        {

                            if (myDE.CommandText.ToLower().IndexOf("count(") == -1)

                            {

                                tx.Rollback();

                                throw new Exception("SQL:违背要求" + myDE.CommandText + "必须符合select count(..的格式");

                                //return 0;

                            }

 

                            object obj = cmd.ExecuteScalar();

                            bool isHave = false;

                            if (obj == null && obj == DBNull.Value)

                            {

                                isHave = false;

                            }

                            isHave = Convert.ToInt32(obj) > 0;

 

                            if (myDE.EffentNextType == EffentNextType.WhenHaveContine && !isHave)

                            {

                                tx.Rollback();

                                throw new Exception("SQL:违背要求" + myDE.CommandText + "返回值必须大于0");

                                //return 0;

                            }

                            if (myDE.EffentNextType == EffentNextType.WhenNoHaveContine && isHave)

                            {

                                tx.Rollback();

                                throw new Exception("SQL:违背要求" + myDE.CommandText + "返回值必须等于0");

                                //return 0;

                            }

                            continue;

                        }

                        int val = cmd.ExecuteNonQuery();

                        if (myDE.EffentNextType == EffentNextType.ExcuteEffectRows && val == 0)

                        {

                            tx.Rollback();

                            throw new Exception("SQL:违背要求" + myDE.CommandText + "必须有影响行");

                            //return 0;

                        }

                        cmd.Parameters.Clear();

                    }

                    string oraConnectionString = PubConstant.GetConnectionString("ConnectionStringPPC");

                    bool res = OracleHelper.ExecuteSqlTran(oraConnectionString, oracleCmdSqlList);

                    if (!res)

                    {

                        tx.Rollback();

                        throw new Exception("Oracle执行失败");

                        // return -1;

                    }

                    tx.Commit();

                    return 1;

                }

                catch (System.Data.SqlClient.SqlException e)

                {

                    tx.Rollback();

                    throw e;

                }

                catch (Exception e)

                {

                    tx.Rollback();

                    throw e;

                }

            }

        }       

        /// <summary>

        /// 执行多条SQL语句,实现数据库事务。

        /// </summary>

        /// <param name="SQLStringList">多条SQL语句</param>                  

        public static int ExecuteSqlTran(List<String> SQLStringList)

        {

            using (SqlConnection conn = new SqlConnection(connectionString))

            {

                conn.Open();

                SqlCommand cmd = new SqlCommand();

                cmd.Connection = conn;

                SqlTransaction tx = conn.BeginTransaction();

                cmd.Transaction = tx;

                try

                {

                    int count = 0;

                    for (int n = 0; n < SQLStringList.Count; n++)

                    {

                        string strsql = SQLStringList[n];

                        if (strsql.Trim().Length > 1)

                        {

                            cmd.CommandText = strsql;

                            count += cmd.ExecuteNonQuery();

                        }

                    }

                    tx.Commit();

                    return count;

                }

                catch

                {

                    tx.Rollback();

                    return 0;

                }

            }

        }

        /// <summary>

        /// 执行带一个存储过程参数的的SQL语句。

        /// </summary>

        /// <param name="SQLString">SQL语句</param>

        /// <param name="content">参数内容,好比一个字段是格式复杂的文章,有特殊符号,能够经过这个方式添加</param>

        /// <returns>影响的记录数</returns>

        public static int ExecuteSql(string SQLString, string content)

        {

            using (SqlConnection connection = new SqlConnection(connectionString))

            {

                SqlCommand cmd = new SqlCommand(SQLString, connection);

                System.Data.SqlClient.SqlParameter myParameter = new System.Data.SqlClient.SqlParameter("@content", SqlDbType.NText);

                myParameter.Value = content;

                cmd.Parameters.Add(myParameter);

                try

                {

                    connection.Open();

                    int rows = cmd.ExecuteNonQuery();

                    return rows;

                }

                catch (System.Data.SqlClient.SqlException e)

                {

                    throw e;

                }

                finally

                {

                    cmd.Dispose();

                    connection.Close();

                }

            }

        }

        /// <summary>

        /// 执行带一个存储过程参数的的SQL语句。

        /// </summary>

        /// <param name="SQLString">SQL语句</param>

        /// <param name="content">参数内容,好比一个字段是格式复杂的文章,有特殊符号,能够经过这个方式添加</param>

        /// <returns>影响的记录数</returns>

        public static object ExecuteSqlGet(string SQLString, string content)

        {

            using (SqlConnection connection = new SqlConnection(connectionString))

            {

                SqlCommand cmd = new SqlCommand(SQLString, connection);

                System.Data.SqlClient.SqlParameter myParameter = new System.Data.SqlClient.SqlParameter("@content", SqlDbType.NText);

                myParameter.Value = content;

                cmd.Parameters.Add(myParameter);

                try

                {

                    connection.Open();

                    object obj = cmd.ExecuteScalar();

                    if ((Object.Equals(obj, null)) || (Object.Equals(obj, System.DBNull.Value)))

                    {

                        return null;

                    }

                    else

                    {

                        return obj;

                    }

                }

                catch (System.Data.SqlClient.SqlException e)

                {

                    throw e;

                }

                finally

                {

                    cmd.Dispose();

                    connection.Close();

                }

            }

        }

        /// <summary>

        /// 向数据库里插入图像格式的字段(和上面状况相似的另外一种实例)

        /// </summary>

        /// <param name="strSQL">SQL语句</param>

        /// <param name="fs">图像字节,数据库的字段类型为image的状况</param>

        /// <returns>影响的记录数</returns>

        public static int ExecuteSqlInsertImg(string strSQL, byte[] fs)

        {

            using (SqlConnection connection = new SqlConnection(connectionString))

            {

                SqlCommand cmd = new SqlCommand(strSQL, connection);

                System.Data.SqlClient.SqlParameter myParameter = new System.Data.SqlClient.SqlParameter("@fs", SqlDbType.Image);

                myParameter.Value = fs;

                cmd.Parameters.Add(myParameter);

                try

                {

                    connection.Open();

                    int rows = cmd.ExecuteNonQuery();

                    return rows;

                }

                catch (System.Data.SqlClient.SqlException e)

                {

                    throw e;

                }

                finally

                {

                    cmd.Dispose();

                    connection.Close();

                }

            }

        }

 

        /// <summary>

        /// 执行一条计算查询结果语句,返回查询结果(object)。

        /// </summary>

        /// <param name="SQLString">计算查询结果语句</param>

        /// <returns>查询结果(object)</returns>

        public static object GetSingle(string SQLString)

        {

            using (SqlConnection connection = new SqlConnection(connectionString))

            {

                using (SqlCommand cmd = new SqlCommand(SQLString, connection))

                {

                    try

                    {

                        connection.Open();

                        object obj = cmd.ExecuteScalar();

                        if ((Object.Equals(obj, null)) || (Object.Equals(obj, System.DBNull.Value)))

                        {

                            return null;

                        }

                        else

                        {

                            return obj;

                        }

                    }

                    catch (System.Data.SqlClient.SqlException e)

                    {

                        connection.Close();

                        throw e;

                    }

                }

            }

        }

        public static object GetSingle(string SQLString, int Times)

        {

            using (SqlConnection connection = new SqlConnection(connectionString))

            {

                using (SqlCommand cmd = new SqlCommand(SQLString, connection))

                {

                    try

                    {

                        connection.Open();

                        cmd.CommandTimeout = Times;

                        object obj = cmd.ExecuteScalar();

                        if ((Object.Equals(obj, null)) || (Object.Equals(obj, System.DBNull.Value)))

                        {

                            return null;

                        }

                        else

                        {

                            return obj;

                        }

                    }

                    catch (System.Data.SqlClient.SqlException e)

                    {

                        connection.Close();

                        throw e;

                    }

                }

            }

        }

        /// <summary>

        /// 执行查询语句,返回SqlDataReader ( 注意:调用该方法后,必定要对SqlDataReader进行Close )

        /// </summary>

        /// <param name="strSQL">查询语句</param>

        /// <returns>SqlDataReader</returns>

        public static SqlDataReader ExecuteReader(string strSQL)

        {

            SqlConnection connection = new SqlConnection(connectionString);

            SqlCommand cmd = new SqlCommand(strSQL, connection);

            try

            {

                connection.Open();

                SqlDataReader myReader = cmd.ExecuteReader(CommandBehavior.CloseConnection);

                return myReader;

            }

            catch (System.Data.SqlClient.SqlException e)

            {

                throw e;

            }  

 

        }

        /// <summary>

        /// 执行查询语句,返回DataSet

        /// </summary>

        /// <param name="SQLString">查询语句</param>

        /// <returns>DataSet</returns>

        public static DataSet Query(string SQLString)

        {

            using (SqlConnection connection = new SqlConnection(connectionString))

            {

                DataSet ds = new DataSet();

                try

                {

                    connection.Open();

                    SqlDataAdapter command = new SqlDataAdapter(SQLString, connection);

                    command.Fill(ds, "ds");

                }

                catch (System.Data.SqlClient.SqlException ex)

                {

                    throw new Exception(ex.Message);

                }

                return ds;

            }

        }

        public static DataSet Query(string SQLString, int Times)

        {

            using (SqlConnection connection = new SqlConnection(connectionString))

            {

                DataSet ds = new DataSet();

                try

                {

                    connection.Open();

                    SqlDataAdapter command = new SqlDataAdapter(SQLString, connection);

                    command.SelectCommand.CommandTimeout = Times;

                    command.Fill(ds, "ds");

                }

                catch (System.Data.SqlClient.SqlException ex)

                {

                    throw new Exception(ex.Message);

                }

                return ds;

            }

        }

 

 

 

        #endregion

 

        #region 执行带参数的SQL语句

 

        /// <summary>

        /// 执行SQL语句,返回影响的记录数

        /// </summary>

        /// <param name="SQLString">SQL语句</param>

        /// <returns>影响的记录数</returns>

        public static int ExecuteSql(string SQLString, params SqlParameter[] cmdParms)

        {

            using (SqlConnection connection = new SqlConnection(connectionString))

            {

                using (SqlCommand cmd = new SqlCommand())

                {

                    try

                    {

                        PrepareCommand(cmd, connection, null, SQLString, cmdParms);

                        int rows = cmd.ExecuteNonQuery();

                        cmd.Parameters.Clear();

                        return rows;

                    }

                    catch (System.Data.SqlClient.SqlException e)

                    {

                        throw e;

                    }

                }

            }

        }

        /// <summary>

        /// 执行多条SQL语句,实现数据库事务。

        /// </summary>

        /// <param name="SQLStringList">SQL语句的哈希表(key为sql语句,value是该语句的SqlParameter[])</param>

        public static void ExecuteSqlTran(Hashtable SQLStringList)

        {

            using (SqlConnection conn = new SqlConnection(connectionString))

            {

                conn.Open();

                using (SqlTransaction trans = conn.BeginTransaction())

                {

                    SqlCommand cmd = new SqlCommand();

                    try

                    {

                        //循环

                        foreach (DictionaryEntry myDE in SQLStringList)

                        {

                            string cmdText = myDE.Key.ToString();

                            SqlParameter[] cmdParms = (SqlParameter[])myDE.Value;

                            PrepareCommand(cmd, conn, trans, cmdText, cmdParms);

                            int val = cmd.ExecuteNonQuery();

                            cmd.Parameters.Clear();

                        }

                        trans.Commit();

                    }

                    catch

                    {

                        trans.Rollback();

                        throw;

                    }

                }

            }

        }

        /// <summary>

        /// 执行多条SQL语句,实现数据库事务。

        /// </summary>

        /// <param name="SQLStringList">SQL语句的哈希表(key为sql语句,value是该语句的SqlParameter[])</param>

        public static int ExecuteSqlTran(System.Collections.Generic.List<CommandInfo> cmdList)

        {

            using (SqlConnection conn = new SqlConnection(connectionString))

            {

                conn.Open();

                using (SqlTransaction trans = conn.BeginTransaction())

                {

                    SqlCommand cmd = new SqlCommand();

                    try

                    { int count = 0;

                        //循环

                        foreach (CommandInfo myDE in cmdList)

                        {

                            string cmdText = myDE.CommandText;

                            SqlParameter[] cmdParms = (SqlParameter[])myDE.Parameters;

                            PrepareCommand(cmd, conn, trans, cmdText, cmdParms);

                          

                            if (myDE.EffentNextType == EffentNextType.WhenHaveContine || myDE.EffentNextType == EffentNextType.WhenNoHaveContine)

                            {

                                if (myDE.CommandText.ToLower().IndexOf("count(") == -1)

                                {

                                    trans.Rollback();

                                    return 0;

                                }

 

                                object obj = cmd.ExecuteScalar();

                                bool isHave = false;

                                if (obj == null && obj == DBNull.Value)

                                {

                                    isHave = false;

                                }

                                isHave = Convert.ToInt32(obj) > 0;

 

                                if (myDE.EffentNextType == EffentNextType.WhenHaveContine && !isHave)

                                {

                                    trans.Rollback();

                                    return 0;

                                }

                                if (myDE.EffentNextType == EffentNextType.WhenNoHaveContine && isHave)

                                {

                                    trans.Rollback();

                                    return 0;

                                }

                                continue;

                            }

                            int val = cmd.ExecuteNonQuery();

                            count += val;

                            if (myDE.EffentNextType == EffentNextType.ExcuteEffectRows && val == 0)

                            {

                                trans.Rollback();

                                return 0;

                            }

                            cmd.Parameters.Clear();

                        }

                        trans.Commit();

                        return count;

                    }

                    catch

                    {

                        trans.Rollback();

                        throw;

                    }

                }

            }

        }

        /// <summary>

        /// 执行多条SQL语句,实现数据库事务。

        /// </summary>

        /// <param name="SQLStringList">SQL语句的哈希表(key为sql语句,value是该语句的SqlParameter[])</param>

        public static void ExecuteSqlTranWithIndentity(System.Collections.Generic.List<CommandInfo> SQLStringList)

        {

            using (SqlConnection conn = new SqlConnection(connectionString))

            {

                conn.Open();

                using (SqlTransaction trans = conn.BeginTransaction())

                {

                    SqlCommand cmd = new SqlCommand();

                    try

                    {

                        int indentity = 0;

                        //循环

                        foreach (CommandInfo myDE in SQLStringList)

                        {

                            string cmdText = myDE.CommandText;

                            SqlParameter[] cmdParms = (SqlParameter[])myDE.Parameters;

                            foreach (SqlParameter q in cmdParms)

                            {

                                if (q.Direction == ParameterDirection.InputOutput)

                                {

                                    q.Value = indentity;

                                }

                            }

                            PrepareCommand(cmd, conn, trans, cmdText, cmdParms);

                            int val = cmd.ExecuteNonQuery();

                            foreach (SqlParameter q in cmdParms)

                            {

                                if (q.Direction == ParameterDirection.Output)

                                {

                                    indentity = Convert.ToInt32(q.Value);

                                }

                            }

                            cmd.Parameters.Clear();

                        }

                        trans.Commit();

                    }

                    catch

                    {

                        trans.Rollback();

                        throw;

                    }

                }

            }

        }

        /// <summary>

        /// 执行多条SQL语句,实现数据库事务。

        /// </summary>

        /// <param name="SQLStringList">SQL语句的哈希表(key为sql语句,value是该语句的SqlParameter[])</param>

        public static void ExecuteSqlTranWithIndentity(Hashtable SQLStringList)

        {

            using (SqlConnection conn = new SqlConnection(connectionString))

            {

                conn.Open();

                using (SqlTransaction trans = conn.BeginTransaction())

                {

                    SqlCommand cmd = new SqlCommand();

                    try

                    {

                        int indentity = 0;

                        //循环

                        foreach (DictionaryEntry myDE in SQLStringList)

                        {

                            string cmdText = myDE.Key.ToString();

                            SqlParameter[] cmdParms = (SqlParameter[])myDE.Value;

                            foreach (SqlParameter q in cmdParms)

                            {

                                if (q.Direction == ParameterDirection.InputOutput)

                                {

                                    q.Value = indentity;

                                }

                            }

                            PrepareCommand(cmd, conn, trans, cmdText, cmdParms);

                            int val = cmd.ExecuteNonQuery();

                            foreach (SqlParameter q in cmdParms)

                            {

                                if (q.Direction == ParameterDirection.Output)

                                {

                                    indentity = Convert.ToInt32(q.Value);

                                }

                            }

                            cmd.Parameters.Clear();

                        }

                        trans.Commit();

                    }

                    catch

                    {

                        trans.Rollback();

                        throw;

                    }

                }

            }

        }

        /// <summary>

        /// 执行一条计算查询结果语句,返回查询结果(object)。

        /// </summary>

        /// <param name="SQLString">计算查询结果语句</param>

        /// <returns>查询结果(object)</returns>

        public static object GetSingle(string SQLString, params SqlParameter[] cmdParms)

        {

            using (SqlConnection connection = new SqlConnection(connectionString))

            {

                using (SqlCommand cmd = new SqlCommand())

                {

                    try

                    {

                        PrepareCommand(cmd, connection, null, SQLString, cmdParms);

                        object obj = cmd.ExecuteScalar();

                        cmd.Parameters.Clear();

                        if ((Object.Equals(obj, null)) || (Object.Equals(obj, System.DBNull.Value)))

                        {

                            return null;

                        }

                        else

                        {

                            return obj;

                        }

                    }

                    catch (System.Data.SqlClient.SqlException e)

                    {

                        throw e;

                    }

                }

            }

        }

 

        /// <summary>

        /// 执行查询语句,返回SqlDataReader ( 注意:调用该方法后,必定要对SqlDataReader进行Close )

        /// </summary>

        /// <param name="strSQL">查询语句</param>

        /// <returns>SqlDataReader</returns>

        public static SqlDataReader ExecuteReader(string SQLString, params SqlParameter[] cmdParms)

        {

            SqlConnection connection = new SqlConnection(connectionString);

            SqlCommand cmd = new SqlCommand();

            try

            {

                PrepareCommand(cmd, connection, null, SQLString, cmdParms);

                SqlDataReader myReader = cmd.ExecuteReader(CommandBehavior.CloseConnection);

                cmd.Parameters.Clear();

                return myReader;

            }

            catch (System.Data.SqlClient.SqlException e)

            {

                throw e;

            }

            //                         finally

            //                         {

            //                                  cmd.Dispose();

            //                                  connection.Close();

            //                         }       

 

        }

 

        /// <summary>

        /// 执行查询语句,返回DataSet

        /// </summary>

        /// <param name="SQLString">查询语句</param>

        /// <returns>DataSet</returns>

        public static DataSet Query(string SQLString, params SqlParameter[] cmdParms)

        {

            using (SqlConnection connection = new SqlConnection(connectionString))

            {

                SqlCommand cmd = new SqlCommand();

                PrepareCommand(cmd, connection, null, SQLString, cmdParms);

                using (SqlDataAdapter da = new SqlDataAdapter(cmd))

                {

                    DataSet ds = new DataSet();

                    try

                    {

                        da.Fill(ds, "ds");

                        cmd.Parameters.Clear();

                    }

                    catch (System.Data.SqlClient.SqlException ex)

                    {

                        throw new Exception(ex.Message);

                    }

                    return ds;

                }

            }

        }

 

 

        private static void PrepareCommand(SqlCommand cmd, SqlConnection conn, SqlTransaction trans, string cmdText, SqlParameter[] cmdParms)

        {

            if (conn.State != ConnectionState.Open)

                conn.Open();

            cmd.Connection = conn;

            cmd.CommandText = cmdText;

            if (trans != null)

                cmd.Transaction = trans;

            cmd.CommandType = CommandType.Text;//cmdType;

            if (cmdParms != null)

            {

 

 

                foreach (SqlParameter parameter in cmdParms)

                {

                    if ((parameter.Direction == ParameterDirection.InputOutput || parameter.Direction == ParameterDirection.Input) &&

                        (parameter.Value == null))

                    {

                        parameter.Value = DBNull.Value;

                    }

                    cmd.Parameters.Add(parameter);

                }

            }

        }

 

        #endregion

 

        #region 存储过程操做

 

        /// <summary>

        /// 执行存储过程,返回SqlDataReader ( 注意:调用该方法后,必定要对SqlDataReader进行Close )

        /// </summary>

        /// <param name="storedProcName">存储过程名</param>

        /// <param name="parameters">存储过程参数</param>

        /// <returns>SqlDataReader</returns>

        public static SqlDataReader RunProcedure(string storedProcName, IDataParameter[] parameters)

        {

            SqlConnection connection = new SqlConnection(connectionString);

            SqlDataReader returnReader;

            connection.Open();

            SqlCommand command = BuildQueryCommand(connection, storedProcName, parameters);

            command.CommandType = CommandType.StoredProcedure;

            returnReader = command.ExecuteReader(CommandBehavior.CloseConnection);

            return returnReader;

           

        }

 

 

        /// <summary>

        /// 执行存储过程

        /// </summary>

        /// <param name="storedProcName">存储过程名</param>

        /// <param name="parameters">存储过程参数</param>

        /// <param name="tableName">DataSet结果中的表名</param>

        /// <returns>DataSet</returns>

        public static DataSet RunProcedure(string storedProcName, IDataParameter[] parameters, string tableName)

        {

            using (SqlConnection connection = new SqlConnection(connectionString))

            {

                DataSet dataSet = new DataSet();

                connection.Open();

                SqlDataAdapter sqlDA = new SqlDataAdapter();

                sqlDA.SelectCommand = BuildQueryCommand(connection, storedProcName, parameters);

                sqlDA.Fill(dataSet, tableName);

                connection.Close();

                return dataSet;

            }

        }

        public static DataSet RunProcedure(string storedProcName, IDataParameter[] parameters, string tableName, int Times)

        {

            using (SqlConnection connection = new SqlConnection(connectionString))

            {

                DataSet dataSet = new DataSet();

                connection.Open();

                SqlDataAdapter sqlDA = new SqlDataAdapter();

                sqlDA.SelectCommand = BuildQueryCommand(connection, storedProcName, parameters);

                sqlDA.SelectCommand.CommandTimeout = Times;

                sqlDA.Fill(dataSet, tableName);

                connection.Close();

                return dataSet;

            }

        }

 

 

        /// <summary>

        /// 构建 SqlCommand 对象(用来返回一个结果集,而不是一个整数值)

        /// </summary>

        /// <param name="connection">数据库链接</param>

        /// <param name="storedProcName">存储过程名</param>

        /// <param name="parameters">存储过程参数</param>

        /// <returns>SqlCommand</returns>

        private static SqlCommand BuildQueryCommand(SqlConnection connection, string storedProcName, IDataParameter[] parameters)

        {

            SqlCommand command = new SqlCommand(storedProcName, connection);

            command.CommandType = CommandType.StoredProcedure;

            foreach (SqlParameter parameter in parameters)

            {

                if (parameter != null)

                {

                    // 检查未分配值的输出参数,将其分配以DBNull.Value.

                    if ((parameter.Direction == ParameterDirection.InputOutput || parameter.Direction == ParameterDirection.Input) &&

                        (parameter.Value == null))

                    {

                        parameter.Value = DBNull.Value;

                    }

                    command.Parameters.Add(parameter);

                }

            }

 

            return command;

        }

 

        /// <summary>

        /// 执行存储过程,返回影响的行数          

        /// </summary>

        /// <param name="storedProcName">存储过程名</param>

        /// <param name="parameters">存储过程参数</param>

        /// <param name="rowsAffected">影响的行数</param>

        /// <returns></returns>

        public static int RunProcedure(string storedProcName, IDataParameter[] parameters, out int rowsAffected)

        {

            using (SqlConnection connection = new SqlConnection(connectionString))

            {

                int result;

                connection.Open();

                SqlCommand command = BuildIntCommand(connection, storedProcName, parameters);

                rowsAffected = command.ExecuteNonQuery();

                result = (int)command.Parameters["ReturnValue"].Value;

                //Connection.Close();

                return result;

            }

        }

 

        /// <summary>

        /// 建立 SqlCommand 对象实例(用来返回一个整数值)  

        /// </summary>

        /// <param name="storedProcName">存储过程名</param>

        /// <param name="parameters">存储过程参数</param>

        /// <returns>SqlCommand 对象实例</returns>

        private static SqlCommand BuildIntCommand(SqlConnection connection, string storedProcName, IDataParameter[] parameters)

        {

            SqlCommand command = BuildQueryCommand(connection, storedProcName, parameters);

            command.Parameters.Add(new SqlParameter("ReturnValue",

                SqlDbType.Int, 4, ParameterDirection.ReturnValue,

                false, 0, 0, string.Empty, DataRowVersion.Default, null));

            return command;

        }

        #endregion

 

    }

 

}

-----------------边框;

   <fieldset class="changePassword">

                    <legend>账户信息</legend>

----------------------------------------------------动软的缓存类

using System;

using System.Web;

 

namespace Maticsoft.Common

{

         /// <summary>

         /// 缓存相关的操做类

    /// Copyright (C) Maticsoft

         /// </summary>

         public class DataCache

         {

                   /// <summary>

                   /// 获取当前应用程序指定CacheKey的Cache值

                   /// </summary>

                   /// <param name="CacheKey"></param>

                   /// <returns></returns>

        public static object GetCache(string CacheKey)

        {

            System.Web.Caching.Cache objCache = HttpRuntime.Cache;

            return objCache[CacheKey];

        }

                   /// <summary>

                   /// 设置当前应用程序指定CacheKey的Cache值

                   /// </summary>

                   /// <param name="CacheKey"></param>

                   /// <param name="objObject"></param>

                   public static void SetCache(string CacheKey, object objObject)

                   {

                            System.Web.Caching.Cache objCache = HttpRuntime.Cache;

                            objCache.Insert(CacheKey, objObject);

                   }

 

                   /// <summary>

                   /// 设置当前应用程序指定CacheKey的Cache值

                   /// </summary>

                   /// <param name="CacheKey"></param>

                   /// <param name="objObject"></param>

                   public static void SetCache(string CacheKey, object objObject, DateTime absoluteExpiration,TimeSpan slidingExpiration )

                   {

                            System.Web.Caching.Cache objCache = HttpRuntime.Cache;

                            objCache.Insert(CacheKey, objObject,null,absoluteExpiration,slidingExpiration);

                   }

         }

}

-----------------------------------删除最后一个逗号

 return str.Substring(0, str.LastIndexOf(","));

-----------------------生成查询条件案例

   /// <summary>

        /// 生成查询条件

        /// </summary>

        /// <param name="model"></param>

        /// <param name="paramters"></param>

        /// <returns></returns>

        public static string CreateSqlStr(WorkersModel model,List<SqlParameter> paramters)

        {

            StringBuilder sql = new StringBuilder();

            if (model != null)

            {

                if (!string.IsNullOrEmpty(model.Name))

                {

                    sql.Append(" and Name like @Name");

                    paramters.Add(new SqlParameter("@Name","%"+model.Name+"%"));

                }

                if (!string.IsNullOrEmpty(model.IdCard))

                {

                    sql.Append(" and IdCard like @IdCard");

                    paramters.Add(new SqlParameter("@IdCard", "%" + model.IdCard + "%"));

                }

            }

            return sql.ToString();

        }

    }

--------------------------enabled=fase;不会保存视图状态;

 document.getElementById("txtName").disabled=true;这种也不会保存视图状态,只能手动保存了,记住奥;

固然也能够用js控制hildfiled部分;

--------------------------------------弹出提示框进行选择!!!

  function ChooseDele()

    {

       if(confirm("是否同时删除供应商复核与供应商复评与供应商调查里的数据?"))

          {

            document.getElementById("hidCommon").value="allDel";

            document.getElementById("hidXtBH").value=bh;

           

          }else

          {

            document.getElementById("hidCommon").value="Only";

            document.getElementById("hidXtBH").value=bh;

          }

//          __doPostBack("UpdatePanel1","");

         document.form1.submit();

    }

-----------------------------------------数据库中判断字段是否为空

IF @d is null

-----------------------------------------------------引觉得豪的sql拼接:最复杂的sql拼接:经典之做

  public static DataTable GetStatistics(WorkRecordsModel model)

       {

           //因为无必要新创实体,返回datatable类型

           List<SqlParameter> list = new List<SqlParameter>();

           StringBuilder strSql = new StringBuilder();

           strSql.Append("SELECT Workers.[Name],Workers.IdCard,sum(WR.WorkDays)as sumdays,sum(WR.Wages)as sumwages,");

           strSql.Append("sum(PW1.AllWages)as sumallwages0,sum(PW2.AllWages) as sumallwages1 FROM Workers where 1=1");

           if (model.Name != "" || model.Name != null)

           {

               strSql.Append(" and Name like @Name");

               list.Add(new SqlParameter("@Name", "%" + model.Name + "%"));

           }

           strSql.Append("  LEFT join (select * from WorkRecords where [Date]>=@begindate and [Date]<=@enddate");

           if (model.XMId != null || model.XMId != 0)

           {

               strSql.Append("  and XMId=@XMId");

               list.Add(new SqlParameter("@XMId",model.XMId));

           }

           strSql.Append("  )as WR on Workers.IdCard=WR.IdCard");

           strSql.Append("  LEFT JOIN  (SELECT * FROM PayWages WHERE [Date]>=@begindate and [Date]<=@enddate AND Type=0) as PW1 ON Workers.IdCard=PW1.IdCard");

           strSql.Append("  LEFT JOIN  (SELECT * FROM PayWages WHERE [Date]>=@begindate and [Date]<=@enddate AND Type=1) as PW2 ON Workers.IdCard=PW2.IdCard");

           strSql.Append(" GROUP BY Workers.[Name],Workers.IdCard");

           list.Add(new SqlParameter("@begindate",model.BeginTime));

           list.Add(new SqlParameter("@enddate",model.EndTime));

           DataTable table=new DataTable();//ui只需判断rows.count即可

           table= DBHelperXT.GetDataSet(strSql.ToString(),list.ToArray());

           return table;

       }

------------------------获取本月第一天,本周第一天;

namespace MyOffice.Framework

{

    public class DateProvider

    {

        /// <summary>

        /// 本周的第一天

        /// </summary>

        /// <returns></returns>

        public static DateTime CurrentWeekStartDay()

        {

            int spanDays=0;

            switch (DateTime.Now.DayOfWeek)

            {

                case DayOfWeek.Monday: spanDays = 0;

 

                    break;

 

                case DayOfWeek.Tuesday: spanDays = 1;

 

                    break;

 

                case DayOfWeek.Wednesday: spanDays = 2;

 

                    break;

 

                case DayOfWeek.Thursday: spanDays = 3;

 

                    break;

 

                case DayOfWeek.Friday: spanDays = 4;

 

                    break;

 

                case DayOfWeek.Saturday: spanDays = 5;

 

                    break;

 

                case DayOfWeek.Sunday: spanDays = 6;

 

                    break;

 

            }

            DateTime start = DateTime.Today.AddDays(-spanDays);

            return start;

        }

    /// <summary>

    /// 本月的第一天

    /// </summary>

    /// <returns></returns>

        public static DateTime CurrentMonthStartDay()

        {

            DateTime start = DateTime.Today.AddDays(-DateTime.Today.Day + 1);

            return start;

        }

         

    }

}

-------------------------经典sql拼接;

  //因为无必要新创实体,返回datatable类型

           List<SqlParameter> list = new List<SqlParameter>();

           StringBuilder strSql = new StringBuilder();

           page.TotalRow = GetStatisticsCount(model);

           strSql.Append("select * from (SELECT Workers.[Name],Workers.IdCard,WR.sumdays,WR.sumwages,");

           strSql.Append(" PW1.sumallwages0,PW2.sumallwages1,row_number() over(order by Workers.Name) as rowId FROM Workers");

           strSql.Append(" LEFT join (select WR1.IdCard,sum(WR1.WorkDays) as sumdays,sum(WR1.Wages) as sumwages");

           strSql.Append(" from (select * from WorkRecords where [Date]>=@begindate and [Date]<=@enddate");

           if (model.XMId != 0)

           {

               strSql.Append(" and XMId=@XMId");

               list.Add(new SqlParameter("@XMId", model.XMId));

           }

           strSql.Append(" ) as WR1 group by WR1.IdCard");

           strSql.Append(" )as WR on Workers.IdCard=WR.IdCard");

           strSql.Append(" LEFT JOIN  (SELECT PW11.IdCard,sum(PW11.AllWages) as sumallwages0 FROM");

           strSql.Append(" (select * from PayWages WHERE [Date]>=@begindate and [Date]<=@enddate AND Type=0) as PW11");

           strSql.Append(" group by PW11.IdCard) as PW1 ON Workers.IdCard=PW1.IdCard");

           strSql.Append(" LEFT JOIN  (SELECT PW22.IdCard,sum(PW22.AllWages) as sumallwages1 FROM");

           strSql.Append(" (select * from PayWages WHERE [Date]>=@begindate and [Date]<=@enddate AND Type=1) as PW22 ");

           strSql.Append(" group by PW22.IdCard) as PW2 ON Workers.IdCard=PW2.IdCard");

           if (model.Name != "" || model.Name != null)

           {

               strSql.Append("  where Workers.[Name] like @name");

               list.Add(new SqlParameter("@Name", "%" + model.Name + "%"));

           }

           strSql.Append(" ) as T where T.rowId between ").Append(page.Begin).Append(" and ").Append(page.End);

           list.Add(new SqlParameter("@begindate", model.BeginTime));

           list.Add(new SqlParameter("@enddate", model.EndTime));

           DataTable table = new DataTable();//ui只需判断rows.count即可

           table = DBHelperXT.GetDataSet(strSql.ToString(), list.ToArray());

------------------------------------

            txtBeginTime.Text = DateTime.Today.AddDays(-DateTime.Today.Day + 1).ToString("yyyy-MM-dd");

            txtEndTime.Text = DateTime.Now.ToString("yyyy-MM-dd");

-----------------------------------------------------------------------cube grouping rollup的使用;

SELECT CASE WHEN grouping(Name)=1 THEN '合计' ELSE Name END as 姓名,

CASE WHEN grouping(Sex)=1 THEN '合计' ELSE sex END as 性别

,sum(Score) as 总成绩

from Score

GROUP BY name,Sex WITH CUBE

--当出现with rollup 根据by后面第一个字段分组进行汇总,聚合性别;

--若group by sex,Name WITH rollup则根据性别分组,聚合姓名;(男的有多少,女的有多少)

---若with cube,则以group by 后面的多列进行分组,多个维度分组;by后的第一个字段;(顺序为:根据性别聚合,总聚合,根据名称聚合)

------------count(1)和count(*)是等效的,都会返回本列的行数;

-------------------------------------------------------------------统计报表(合计、小计:cube rollup grouping的用法)

create table #t(a int,b int,c int,d int,e int)

insert into #t values(1,2,3,4,5)

insert into #t values(1,2,3,4,6)

insert into #t values(1,2,3,4,7)

insert into #t values(1,2,3,4,8)

insert into #t values(1,3,3,4,5)

insert into #t values(1,3,3,4,6)

insert into #t values(1,3,3,4,8)

insert into #t values(1,3,3,4,7)

 

insert into #t values(2,2,2,4,5)

insert into #t values(2,2,3,4,6)

insert into #t values(2,2,4,4,7)

insert into #t values(2,2,5,4,8)

insert into #t values(2,3,6,4,5)

insert into #t values(2,3,3,4,6)

insert into #t values(2,3,3,4,8)

insert into #t values(2,3,3,4,7)

状况一:只有一个分类汇总列时,只须要一个合计。只须要增长with rollup便可。(一个维度的)

select case when grouping(a)=1 then '合计' else cast(a as varchar) end a,

sum(b),sum(c),sum(d),sum(e) from #t group by a with rollup

状况二:有多个分类汇总列,只须要一个合计.增长rollup以后,须要增长判断。

select case when grouping(a)=1 then '合计' else cast(a as varchar) end a,

    b,

sum(c),sum(d),sum(e) from #t

group by a,b with rollup

having grouping(b)=0 or grouping(a)=1

 

select case when grouping(a)=1 then '合计' else cast(a as varchar) end a,

    b,

    c,

sum(d),sum(e) from #t

group by a,b,c with rollup

having grouping(c)=0 or grouping(a)=1

状况三:有多个分类汇总列,须要所有的小计和合计

select case when grouping(a)=1 then '合计' else cast(a as varchar) end a,

    case when grouping(b)=1 and grouping(a)=0 then '小计' else cast(b as varchar) end b,

    case when grouping(c)=1 and grouping(b)=0 then '小计' else cast(c as varchar) end c,

sum(d),sum(e) from #t

group by a,b,c with rollup

另一种显示小计的方式

select case when grouping(a)=1 then '合计'

    when grouping(b)=1 then cast(a as varchar)+'小计'

    else cast(a as varchar) end a,

    case when grouping(b)=0 and grouping(c)=1

    then cast(b as varchar)+'小计' else cast(b as varchar) end b,

    case when grouping(c)=1 and grouping(b)=0

    then '' else cast(c as varchar) end c,

sum(d),sum(e) from #t

group by a,b,c with rollup

状况四:有多个分类汇总列,须要部分的小计和合计

select case when grouping(a)=1 then '合计' else cast(a as varchar) end a,

    b,

    case when grouping(c)=1 and grouping(b)=0 then '小计' else cast(c as varchar) end c,

sum(d),sum(e) from #t

group by a,b,c with rollup

having grouping(a)=1 or grouping(b)=0

---

select case when grouping(a)=1 then '合计' else cast(a as varchar) end a,

    case when grouping(b)=1 and grouping(a)=0 then '小计' else cast(b as varchar) end b,

    c,

sum(d),sum(e) from #t

group by a,b,c with rollup

having grouping(a)=1 or grouping(b)=1 or grouping(c)=0

--

select case when grouping(a)=1 then '合计' else cast(a as varchar) end a,

    b,

    case when grouping(c)=1 and grouping(b)=0 then '小计' else cast(c as varchar) end c,

sum(d),sum(e) from #t

group by a,b,c with rollup

having grouping(a)=1 or grouping(b)=0

--------------------------------------------递归遍历节点案例

  /// <summary>

        /// //根据施工部id遍历全部子节点id

        /// </summary>

        /// <param name="sgbId"></param>

        /// <returns></returns>

        public static string GetSgbIds(string sgbId)

        {

            StringBuilder strB = new StringBuilder();

            StringBuilder sb = new StringBuilder();

            sb.Append("select BH from ShiGongBuWei where SJ=@SJ");

            SqlParameter[] paras ={

               new SqlParameter("@SJ",sgbId)

            };

            DataTable ta = DBHelper.GetDataSet(sb.ToString(),paras);

            strB.Append(sgbId).Append(",");

            if (ta.Rows.Count != 0)

            {

                foreach (DataRow row in ta.Rows)

                {

                  strB.Append(GetSgbIds(row["BH"].ToString()));

                }

            }

            return strB.ToString();

        }

---------------------------------------------对于存储过程当中in(@str),这样是很差用的解决方案有两个

1.经语句赋值个字符串,再exec();:::in ('+@sgbids+')

2.利用逗号分割函数进行

--------------------------padding能够扩展元素的空间,好比《a> href>背景范围比较小,因此须要扩展一下;这样背景就变大了;

----------------页面布局时候:

行级元素经过padding来扩展空间:

块级元素经过 line-height:100px; padding:8px 12px;二者来扩充空间,由于块状不能自动调节行高,二行级能够。

----------------------------------16乘16小图标显示

8)收藏夹小图标 例如:首先制做一个16x16的icon图标,命名为favicon.ico,放在根目录下。而后将下面的代码嵌入head区:

<link rel="icon" href="/favicon.ico" type="image/x-icon" />

<link rel="shortcut icon" href="/favicon.ico" type="image/x-icon" />

---------------------------搜索引擎设置(至于title下面)

为搜索引擎准备的内容

代码以下,替换成你本身站点的内容就能够:

? 容许搜索机器人搜索站内全部连接。若是你想某些页面不被搜索,推荐采用robots.txt方法

<meta content="all" name="robots" />

? 设置站点做者信息

<meta name="author" content="ajie@netease.com,阿捷" />

? 设置站点版权信息

<meta name="Copyright" content="www.w3cn.org,自由版权,任意转载" />

? 站点的简要介绍(推荐)

<meta name="description" content="新网页设计师。web标准的教程站点,推进web标准在中国的应用" />

? 站点的关键词(推荐)

<meta content="designing, with, web, standards

, xhtml, css, graphic, design, layout, usability, cces

sibility, w3c, w3, w3cn, ajie" name="keywords" /> 先介

绍这么多。补充说明,前面花了5节都是讲head区的代码,实际页面

内容还一字未提,呵呵,不要急,其实head区是很是重要的,看一个页面

的head的代码就能够知道设计师是否够专业。

-------------------------------------------------js获取身份证号年龄(根据身份证获取年龄)

 if(idCard.length==15)

    {

        year="19" + idCard.substring(6,8);

        document.getElementById("txtAge").value=dates.getFullYear()-parseInt(year);

    }

    else if(idCard.length==18)

    {

         year=idCard.substring(6,10);

         document.getElementById("txtAge").value=dates.getFullYear()-parseInt(year);

    }

-----------------------------------------------------

9:sql中全部的索引都从1开始;charindex,substring()等;

SET @a=charindex('o',@a)o在@a的位置从1开始;

SET @a=substring(@a,2,2)2:起始,2:长度;

js中s.substring();开始和结束索引

js中s.substr();索引+长度;

------------------------------------------------------------------正则表达式:

//郭泽峰总结:||备注:当 regu是字符串时应示例对象RegExp,不然的话 var emailReg =/在此加上正则/

//验证邮箱

 function CheckEmail(strEmail) {

            var emailReg = /^[\w-]+(\.[\w-]+)*@[\w-]+(\.[\w-]+)+$/;

            if (emailReg.test(strEmail)) {

                return true;

            }

            else {

                return false;

            }

        };

//验证是否是数字

 function IsNum(str) {

            //前提是str不为空!

            //能够是小数

            if (isNaN(str)) {

                return false;

            }

            else {

                return true;

            }

         };

//验证是否是整数格式

function IsInteger(str) {

            var regu = /^[-]{0,1}[0-9]{1,}$/;

            return regu.test(str);

        };

 

//验证是否是为空(包括空或者是空格!)

 function IsNull(str) {

            if (str == "") {

                return true;

            }

            var regu = "^[ ]+$";

            var re = new RegExp(regu);

            return re.test(str);

        };

//检查输入字符串是否只由英文字母和数字和下划线组成 

 function IsNumberOr_Letter(s) {

            //判断是不是数字或字母 

            var regu = "^[0-9a-zA-Z\_]+$";

            var re = new RegExp(regu);

            if (re.test(s)) {

                return true;

            }

            else {

                return false;

            }

        };

//判断是不是汉字、字母、数字或下划线组成 

function IsChinaOrNumbOrLett(s) {

             //没必要验证为空

            var regu = "^[0-9a-zA-Z\u4e00-\u9fa5\_]+$";

            var re = new RegExp(regu);

            if (re.test(s)) {

                return true;

            }

            else {

                return false;

            }

        };

//去除字符串空格

function Trim(str){ //删除左右两端的空格   

return str.replace(/(^\s*)|(\s*$)/g, "");   

}   

function Ltrim(str){ //删除左边的空格   

return str.replace(/(^\s*)/g,"");   

}   

function Rtrim(str){ //删除右边的空格   

return str.replace(/(\s*$)/g,"");   

}   

//验证身份证号

 function IsIdCard(str) {

            var reg = /(^\d{15}$)|(^\d{18}$)|(^\d{17}(\d|X|x)$)/;

            return reg.test(str);

        }

//验证日期(全部格式均可以)

  function IsDateWithAllForm(str) {

            var reg =/^((\d{2}(([02468][048])|([13579][26]))[\-\/\s]?((((0?[13578])|(1[02]))[\-\/\s]((0?[1-9])|([1-2][0-9])|(3[01])))|(((0?[469])|(11))[\-\/\s]?((0?[1-9])|([1-2][0-9])|(30)))|(0?2[\-\/\s]?((0?[1-9])|([1-2][0-9])))))|(\d{2}(([02468][1235679])|([13579][01345789]))[\-\/\s]?((((0?[13578])|(1[02]))[\-\/\s]?((0?[1-9])|([1-2][0-9])|(3[01])))|(((0?[469])|(11))[\-\/\s]?((0?[1-9])|([1-2][0-9])|(30)))|(0?2[\-\/\s]?((0?[1-9])|(1[0-9])|(2[0-8]))))))(\s(((0?[1-9])|(1[0-2]))\:([0-5][0-9])((\s)|(\:([0-5][0-9])\s))([AM|PM|am|pm]{2,2})))?$/;

            return reg.test(str);

        }

//验证日期+格式:格式必须为:2012-12-12这种的; 

function IsDateWithOneForm(str) {

            var reg = /^((((1[6-9]|[2-9]\d)\d{2})-(0?[13578]|1[02])-(0?[1-9]|[12]\d|3[01]))|(((1[6-9]|[2-9]\d)\d{2})-(0?[13456789]|1[012])-(0?[1-9]|[12]\d|30))|(((1[6-9]|[2-9]\d)\d{2})-0?2-(0?[1-9]|1\d|2[0-8]))|(((1[6-9]|[2-9]\d)(0[48]|[2468][048]|[13579][26])|((16|[2468][048]|[3579][26])00))-0?2-29-))$/;

            return reg.test(str);

        }

//验证位数:/^\d{3}$/:必须为三位,/^\d{3,6}$/:为3-6位

 function IsRight(str) {

            var reg = /^\d{3,6}$/;

            return reg.test(str);

        }

//------------------------------------------杂记

数据库的完整性=可靠性+准确性。

SELECT NEWID()(html中newid()),至关于new guid(),其类型为uniqueidentifier

数据库中双精度用real,单精度:float

-----黑客常常攻破IIS去为一些html页面加上iframe;

<iframe src="page1.aspx" style=" display:none"></iframe>

隐藏了可是有;

-----------

var father = window.parent;若三层窗口:var father = window.parent.parent;若:var father = window.Top;top指的是最顶层;

document.getElementById("result").innerHTML = str;//在页面显示文字。

-----------

if(typeof(father.accept)=="function")//判断是否是自定义函数类型

------new Date()获取新的日期;

 --------------<%=DateTime.Now.ToLocalTime() %>

--------------get参数传递方式会在ie页面进行缓存,可是post不会。

----javascript是区分大小写的;

===========================================================================================================

ajax中503mistakes 指的是服务未提供,404错误指的是未找到;12007错误:跨域名错误提示

if(x.readyState==4&&x.status==200){}

else{alert(x.status)}//提示错误;

-------------///<reference name="MicrosoftAjax.js"/>

 

 

javascript脚本

///<reference name="MicrosoftAjax.js"/>

/// <reference path="JScript2.js" />

/// <reference path="jquery-1.4.1-vsdoc.js" />

 

window.onload= function () {

   

    var s =String.format("hellow:{0}", "abc");

    alert(s);

    var i = addint(1,2);

    alert(i);

     $("#a").html(s); //应用jquery作法

    $get("a").value = s;//这两行至关于document.getelementbyid();查找元素;

----------------------

 

}

--------------scriptmanage一个页面只能应用一次;若调用web服务应该命名为scriptmamageProxy(代理)

--------------ajaxcontroltookit官方下载网址:ajax.aspx.net;

----updatepanel笔记:

有个属性:updatemode,若选择conditional则被人不会影响我,不然(aways)全部panel回发;

2)若一个界面有两个panel则一个(不会发)控制另外一个则设置childrenAStriggers为false;同时设updatemodles属性为conditionals(若为aways则矛盾)

3)fileupload不支持异步操做

-------------javascript

1)eval函数:用于计算字符串表达式的值;如3+3,var a=eval("3+4")->a=7;

2)isnan函数:用于验证参数是否为nan;

3)indexOf("a",0):查找字符串中存在a的位置,不存在返回-1;

4)toLowerCase();转化小写;

5)toUpperCase();转化成大写;

6)round(y)四舍五入取整;

7)sqrt(y)返回y的平方根;

8)     var da = new Date();

          //        da.setFullYear(2014,1,14);//自定义日期

          //        da.setHours(13,25,32,900);

8)定时:settimeout:一次;setinterval;每隔几秒一次

9)javascript:var a=[1,2,3,4,5];声明一个数组(array)

------------------------------选择器:

1):$("#id")

2):$("元素标签")

3)$(".css")//内填写.+样式名

//迭代:$("#id")返回的是一个数组(自动遍历);var a=$("#id");if(a.length<=0)alert("没有此元素")

$(function () {

        $("p").click(function () { $.each($(this).nextAll("p"), function () { $(this).css("background-color", "red"); } )});

    })//阶级选择器

-------------------------------彩色照片变黑白照片:

 <style type="text/css">

        .b

        {  filter:Gray;    

                 }

    </style>

function guo() {

//            $(document.body).toggleClass("b");

//        }

----------------------------------:图片注册事件

<img src="img/010610201722.jpg" style="height: 204px; width: 189px" onmouseover="this.src='img/zf-走方格游戏软件.PNG'" onmouseout="this.src='img/010610201722.jpg'"/>

 

 

 

----------------------------上级目录嗲下级目录则~/;下级目录调用上级目录则:../;

 

---------------------------href="read.aspx?id={blogid}#coment实现自动定位:在第二个页面中加上《a name="coment"></a>

--------------再用repeater时,应删除selectitem块中的type="object"才能按id显示数据。

------------------javas获取却string【“id”】-- var blogid = '<%=Request["id"] %>';

 

------------------ $("#ab").toggle("slow");使div其实就开始隐藏

 

--------------------------

<%if (this.xianshi)//xianshi 是在后台中的属性

          { %>

        <span class="permalink"><a href='<%# "~/Edite.aspx?blogid="+Eval("blogid") %>' runat="server">编辑</a>

        <a href="#">删除</a></span>

        <%} %>

}

-------------------new Guid(blogid):blogid 是guid的string("string")形式的,要想转化为新的guid 类型则new guid(blogdi)

----------------- <a href="#" df="<%# Eval("blogid") %>" onclick="shan(this.df)">删除</a></span>

 

------- window.location.reload();卸载jiavascript脚本中,从新加载(刷新)

------window.location.href="default.aspx",从新加载到另外一界面

 

--------------------$(".[tag='delete']").hide() ;取属性

----------------window.location.href("Default.aspx?uid='"+result.d+"'");

 

-----------------绑定日期

<%# Eval("Datetime","{0:d}")%>

Text='<%# Bind("OnDutyTime1","{0:hh:mm}") %>' />绑定时间部分12

Text='<%# Bind("OnDutyTime1","{0:H:mm}") %>' />24制

-----------------

a.[Order]当order为关键字,因此为此,不为[a.order]

一个表能够有多个列做为主键,担有且只有一个;

 

----------------

byte[]   by=你读出来的的图片的字节

Response.ContentType   =   "image/bmp ";

Response.BinaryWrite(by);

----------------------

protected,类外不能调用,可是继承类能够;

-----------------------------------------------------数据库

isex char(4) check(isex='男' or isex='女'),

 date datetime default '2011-6-6'

----------

drop trigger tr_sd

create trigger tr_sd

on score

after  insert

as

  select * from inserted

  print '你插入了'

---------------

--(7)查询班级某科科目平均分数

select avg(math) as avg_sco from score

-----------------------

select * from (SELECT Id,Name,Price  from Wuzi) as dd

------------------------

select t1.productid,t1.unitprice

from [order details] as t1 join [order details]

on t1.productid=t2.productid

group by ti.productid,t1.unitprice

having t1.unitprice<avg(t2.unitprice)

------------------------

--可将学生表中的数据导入老师表中

insert teacher

select id,name from student

--------------五种约束;

1.主键约束、外键约束、检查约束、默认约束、惟一约束

-sql是structured Query Language 结构化查询语句

---------T-Sql与sql

t_sql是sql的增强版

对功能进行了补充:变量说明、流程控制、功能函数

-----------

like 'c_'必须是2个字符

单引号表示字符串,与c#不一样;

like 'c_%'至少两个,多了不限

lide 'as[1-3]'1-3的数字'%[1-4]'    [1,2,3,4]任选

--------like可放在check中约束:通配符:%、—【】

----------------逻辑表达式:not 1=0;not(a='a')===<>

select 3%2  结果是1;

一张表只能有一个自增列

-------insert into biao(1,2)values(default,'12');

默认插入defalut,或不插

----------union合并数据

select 1 union select 2

-------------truncate table a 全都删除:自增重置为1;

delete from table a:一条一条删

-----------

select aa+'.'+bb from stu;aa bb是列名

-------------

123 as b getdate() as c均可以;

 

address is null ;放于where后面

条件不是空值:

where (not(address is null))

 

 

------select top 20 percent name from student;

 

 

语句能够出现表达式:如:(aa*30)as b或where (a*23)>30

------------------------------------

SELECT  CASE WHEN number<5 THEN 'z' ELSE 'x' END as 'lllll'

from xin

---------------------------------union的用法,并在下面下面结果只有一列而且必须保证类型一致1,2必须是字符类型

USE xinwen

SELECT  CASE WHEN number<5 THEN '1' ELSE '2' END as 'lllll'

from xin

UNION

SELECT title as cc from xin

--------------------order by后面能够跟表达式子

as 后面的名称不能出如今where后,但能够出如今order by后面

------------------字符串:

SELECT charindex('a','sda',1);返回3,第二个字符串从1开始,和c#不同

select len('123')返回3;

select ltrim('                 123')//消除左侧空格。rtrim消除右侧空格

select left('1234',2)//取左侧两位

select right('1234',2)

select replace('abcdef','ab','00')

------------结果是00cdef

--------------------

select stuff('abcde',2,3,'11111'):从第2个字符截取3个再塞入最后的字符:a1111e

------------

select dateadd(yy,4,getdate())//加年限yy,改成mm,改成dd获取天数

SELECT datediff(mm,getdate(),'2012-9-2')

select datename(dw,getdate())//返回日期的周几切记返回的是字符串

sign(@A)若符号是-,返回-1,+返回1,0返回0

sqrt(16),平方根4;

round();近似值

power(2,4);2sup4;

floor(a):小于等于a的最小整数;

ceiling:大于或等与最大整数值;

60-100的随机数:rand()*40+60便可;

select convert(INT,'123') 或 select cast('123' as int)

select 1+'2'//返回3;

datalength();返回字节数,一个汉字两个字节,可是len()返回个数

system_user登录名;

select isnull(mess,'哈哈') from xin:若是为空的话改成哈哈输出

 set @str2=substring(@str1,0,@num)、

--------

min,max,avg,count,;

----------分组查询:多列分组;

group by id,iid,但二二对应,顺序不变

select distinct GTime from Grade

param[4].Value!=DBNull.Value

 

 set @stuid=rtrim(@bubianid)+convert(char(10),@beginstuid)

----------内联:左右两个表都存在才显示

select identity(1,1) as t;表示列的行数;

SQL Server判断对象是否存在 (if exists (select * from sysobjects )(转)

 

 

1 判断数据库是否存在

Sql代码

if exists (select * from sys.databases where name = ’数据库名’) 

  drop database [数据库名]  if exists (select * from sys.databases where name = ’数据库名’)

  drop database [数据库名]

2 判断表是否存在

Sql代码

if exists (select * from sysobjects where id = object_id(N’[表名]’) and OBJECTPROPERTY(id, N’IsUserTable’) = 1) 

  drop table [表名]  if exists (select * from sysobjects where id = object_id(N’[表名]’) and OBJECTPROPERTY(id, N’IsUserTable’) = 1)

  drop table [表名]

3 判断存储过程是否存在

Sql代码

if exists (select * from sysobjects where id = object_id(N’[存储过程名]’) and OBJECTPROPERTY(id, N’IsProcedure’) = 1) 

  drop procedure [存储过程名]  if exists (select * from sysobjects where id = object_id(N’[存储过程名]’) and OBJECTPROPERTY(id, N’IsProcedure’) = 1)

  drop procedure [存储过程名]

4 判断临时表是否存在

Sql代码

if object_id(’tempdb..#临时表名’) is not null   

  drop table #临时表名  if object_id(’tempdb..#临时表名’) is not null 

  drop table #临时表名

5 判断视图是否存在

Sql代码

--SQL Server 2000  

IF EXISTS (SELECT * FROM sysviews WHERE object_id = ’[dbo].[视图名]’ 

--SQL Server 2005  

IF EXISTS (SELECT * FROM sys.views WHERE object_id = ’[dbo].[视图名]’  --SQL Server 2000

IF EXISTS (SELECT * FROM sysviews WHERE object_id = ’[dbo].[视图名]’

--SQL Server 2005

IF EXISTS (SELECT * FROM sys.views WHERE object_id = ’[dbo].[视图名]’

6 判断函数是否存在

Sql代码

--  判断要建立的函数名是否存在   

  if exists (select * from dbo.sysobjects where id = object_id(N’[dbo].[函数名]’) and xtype in (N’FN’, N’IF’, N’TF’))   

  drop function [dbo].[函数名]    --  判断要建立的函数名是否存在 

  if exists (select * from dbo.sysobjects where id = object_id(N’[dbo].[函数名]’) and xtype in (N’FN’, N’IF’, N’TF’)) 

  drop function [dbo].[函数名] 

7 获取用户建立的对象信息

Sql代码

SELECT [name],[id],crdate FROM sysobjects where xtype=’U’ 

 

/* 

xtype 的表示参数类型,一般包括以下这些 

C = CHECK 约束 

D = 默认值或 DEFAULT 约束 

F = FOREIGN KEY 约束 

L = 日志 

FN = 标量函数 

IF = 内嵌表函数 

P = 存储过程 

PK = PRIMARY KEY 约束(类型是 K) 

RF = 复制筛选存储过程 

S = 系统表 

TF = 表函数 

TR = 触发器 

U = 用户表 

UQ = UNIQUE 约束(类型是 K) 

V = 视图 

X = 扩展存储过程 

*/  SELECT [name],[id],crdate FROM sysobjects where xtype=’U’

/*

xtype 的表示参数类型,一般包括以下这些

C = CHECK 约束

D = 默认值或 DEFAULT 约束

F = FOREIGN KEY 约束

L = 日志

FN = 标量函数

IF = 内嵌表函数

P = 存储过程

PK = PRIMARY KEY 约束(类型是 K)

RF = 复制筛选存储过程

S = 系统表

TF = 表函数

TR = 触发器

U = 用户表

UQ = UNIQUE 约束(类型是 K)

V = 视图

X = 扩展存储过程

*/

8 判断列是否存在

Sql代码

if exists(select * from syscolumns where id=object_id(’表名’) and name=’列名’) 

  alter table 表名 drop column 列名  if exists(select * from syscolumns where id=object_id(’表名’) and name=’列名’)

  alter table 表名 drop column 列名

9 判断列是否自增列

Sql代码

if columnproperty(object_id(’table’),’col’,’IsIdentity’)=1 

  print ’自增列’ 

else 

  print ’不是自增列’ 

 

SELECT * FROM sys.columns WHERE object_id=OBJECT_ID(’表名’) 

AND is_identity=1  if columnproperty(object_id(’table’),’col’,’IsIdentity’)=1

  print ’自增列’

else

  print ’不是自增列’

SELECT * FROM sys.columns WHERE object_id=OBJECT_ID(’表名’)

AND is_identity=1

10 判断表中是否存在索引

Sql代码

if exists(select * from sysindexes where id=object_id(’表名’) and name=’索引名’)   

  print  ’存在’   

else   

  print  ’不存在  if exists(select * from sysindexes where id=object_id(’表名’) and name=’索引名’) 

  print  ’存在’ 

else 

  print  ’不存在

11 查看数据库中对象

Sql代码

SELECT * FROM sys.sysobjects WHERE name=’对象名’  SELECT * FROM sys.sysobjects WHERE name=’对象名’

//sql语句优化:

1.尽可能使用存储过程

2.使用存储过程创建表外链是最好全部的存储过程锁定表的顺序最好同样,不然会出现死锁现象;

3.避免类型转换;

4.在一个存储过程当中使用的结果尽可能保存到一个变量中去,这样减小运算;

5.尽可能少使用count的函数,消耗内存;

6.存储过程可进行复杂运算减小网络传输;

--------------------------------------------like里面放入变量

SELECT * FROM Info

 WHERE

   Name

   LIKE '%'+@a+'%'

---------------------------------------------多重选择!判断

!第一种用法;select CASE WHEN id=1 THEN 'sdfsdf' WHEN id=2 THEN 'rrsdfs' END as 'asdad'

FROM Info

!第二种用法:

------------------------------------------------------

三范式是一我的根据数学函数提出的:是一种具备最小冗余的表结构

1.第一范式:确保每列的原子行;每一个列不可再分割,固然也不要分割的太死;

2.凡是多对多关系,都转为两个一对多关系,从而增添一个关联表;

3.第二范式要求每个表只作一件事情;重要:表中除了主键列之外的其余列

都要依赖于主键列;(强调依赖关系)

4第三范式:在一个表中消除间接依赖;好比有用户ID就不须要有用用用户姓名了;我勒个去

如何保证表中不能插入相同数据行;(强调直接依赖关系;)

a 1 2 3

a 1 2 4

不能有a 1 2 3,a 1 3 不能再出现;

-----------------------------------------子查询时,当在多个结果中划等号能够用in

select ----where id in (select id from ----)

----------------

if(select Id from b where id>80)//是错误的,if只识别一个返回值,因此改成

if(select Max(id) from b where id>80)便可;

if exists()//能够判断返回多个返回值;

----------------事务

begin transaction

 

若是没问题的话提交事务;

commit transaction

回滚事务

rollback transaction;

-----------------------------------------------------------------------------------

===不仅是数值相等,数据类型也要相同

 

虽然JS是弱类型,不用明确的定义数据类型,并且JS会根据状况自动转化类型.可是仍是有数据类型的

isex char(4) check(isex='男' or isex='女'),

  univer char(30) default '沈阳理工大学应用技术学院' 

--计算时间差,运动会倒计时

--datediff(获取的时间部分,减得时间,被减的时间)

select datediff(day,getdate(),'2011-5-27')

select datediff(year,'1991-03-03',getdate())--后面的减去中间的就是生日

select id,upper(name) as lname from stu

select id,lower(name) as lname from stu

标量函数

create function fn_newRegion(@input nvarchar(30))

returns nvarchar(30)--指明返回值的数据类型returns记住要加s

as

  begin

  if @input is null

  set @input='not know'

  return @input

  end

 

 

select * from authors

select count(distinct city) from authors

回滚事务

begin

      raiserror('score is between0 and 100',16,1)

      rollback transaction--回滚事物,取消操做

end

 

 

ALTER FUNCTION [dbo].[funGenerateBillCode](@name varchar(10),@time datetime,@time1 datetime)

         RETURNS varCHAR(20)

         AS

          BEGIN

         declare @e varchar(20)

         declare @a int

         declare @b int

         declare @c varchar(20)

         SELECT @a=DATEPART(year,@time)

         SELECT @b=DATEPART(month,@time1)

         set @c=convert(varchar(20),@a*100+@b)

         set @e=@c+@name

             return @e

         END

 

 

 

         command.Parameters.Add(

                                     new SqlParameter("ReturnValue", SqlDbType.Int, 4,

                                     ParameterDirection.ReturnValue, false, 0, 0,

                                     string.Empty, DataRowVersion.Default, null));

 

------存储过程“、

CREATE PROCEDURE [dbo].[uspCreateBillDispense]

         (

         @billType                                      VARCHAR(50),          --票据类型

    @billStartCode                           VARCHAR(50),     --票据开始时间

         @billEndCode                    VARCHAR(50),             --票据结束时间

         @receiveBillperson     VARCHAR(50),        --领票人

         @acceptStation          VARCHAR(50),        --接货点

         @receiveBillTime        DATETIME,           --领票时间

         @releaseperson          VARCHAR(50),        --分发人

         @PKID                   INT OUTPUT          --票据ID

                  

)

 

 

 

CREATE FUNCTION [dbo].[funGenerateBillCode](@billType,@billCode,@receiveBillTime)

         RETURNS CHAR(11)

         AS

          BEGIN

         DECLARE @code     CHAR(11)

            IF @billType='运货单'

            SET @code=@code+'C'

         ELSE

         SET @code=@code+'R'

         END

 

 

 

/*********************************************************************************

*过程名称 : uspCreateBillDispense

*功能描述 : 根据登陆ID, 获取一条用户的信息

*输入参数 :

          @billCode   VARCHAR(50),       ---票据开始号或票据结束号

           @billType   VARCHAR(50),       ---票据类型

           @receiveBillTime DATETIME      ---领票时间

*输出参数 :

         无

*返 回 值 :

         0 - 不存在

          1-存在

*做     者 : 郭泽峰

*建立日期 : 2011-12-27    

***********************************************************************************/

 

CREATE PROCEDURE [dbo].[uspExistBillDispense]

         (

           @billCode   VARCHAR(50),       ---票据开始号或票据结束号

           @billType   VARCHAR(50),       ---票据类型

           @receiveBillTime DATETIME      ---领票时间

         )

AS

         /* SET NOCOUNT ON */

         RETURN

 

 

-----------------

CREATE PROCEDURE IsFocus     @a INT,     @b INTASBEGIN    SET NOCOUNT ON;       DECLARE @res bit      IF EXISTS(SELECT * FROM dbo.foucs WHERE [user1]=@a AND [user2]=@b)         SET @res=1     ELSE        SET @res=0     SELECT @res AS res ENDGO

 

---------------------数据库分页效果

CREATE   PROC   sp_PageView

@tbname           sysname,                       --要分页显示的表名

@FieldKey       nvarchar(1000),     --用于定位记录的主键(唯一键)字段,能够是逗号分隔的多个字段

@PageCurrent   int=1,                       --要显示的页码

@PageSize       int=10,                         --每页的大小(记录数)

@FieldShow   nvarchar(1000)= ' ',     --以逗号分隔的要显示的字段列表,若是不指定,则显示全部字段

@FieldOrder   nvarchar(1000)= ' ',     --以逗号分隔的排序字段列表,能够指定在字段后面指定DESC/ASC

                                                                                    用于指定排序顺序

@Where         nvarchar(1000)= ' ',   --查询条件

@PageCount   int   OUTPUT                   --总页数

AS

SET   NOCOUNT   ON

--检查对象是否有效

IF   OBJECT_ID(@tbname)   IS   NULL

BEGIN

RAISERROR(N '对象 "%s "不存在 ',1,16,@tbname)

RETURN

END

IF   OBJECTPROPERTY(OBJECT_ID(@tbname),N 'IsTable ')=0

AND   OBJECTPROPERTY(OBJECT_ID(@tbname),N 'IsView ')=0

AND   OBJECTPROPERTY(OBJECT_ID(@tbname),N 'IsTableFunction ')=0

BEGIN

RAISERROR(N ' "%s "不是表、视图或者表值函数 ',1,16,@tbname)

RETURN

END

 

--分页字段检查

IF   ISNULL(@FieldKey,N ' ')= ' '

BEGIN

RAISERROR(N '分页处理须要主键(或者唯一键) ',1,16)

RETURN

END

 

--其余参数检查及规范

IF   ISNULL(@PageCurrent,0) <1   SET   @PageCurrent=1

IF   ISNULL(@PageSize,0) <1   SET   @PageSize=10

IF   ISNULL(@FieldShow,N ' ')=N ' '   SET   @FieldShow=N '* '

IF   ISNULL(@FieldOrder,N ' ')=N ' '

SET   @FieldOrder=N ' '

ELSE

SET   @FieldOrder=N 'ORDER   BY   '+LTRIM(@FieldOrder)

IF   ISNULL(@Where,N ' ')=N ' '

SET   @Where=N ' '

ELSE

SET   @Where=N 'WHERE   ( '+@Where+N ') '

 

--若是@PageCount为NULL值,则计算总页数(这样设计能够只在第一次计算总页数,之后调用时,把总页数传回给存储过程,避免再次计算总页数,对于不想计算总页数的处理而言,能够给@PageCount赋值)

IF   @PageCount   IS   NULL

BEGIN

DECLARE   @sql   nvarchar(4000)

SET   @sql=N 'SELECT   @PageCount=COUNT(*) '

+N '   FROM   '+@tbname

+N '   '+@Where

EXEC   sp_executesql   @sql,N '@PageCount   int   OUTPUT ',@PageCount   OUTPUT

SET   @PageCount=(@PageCount+@PageSize-1)/@PageSize

END

 

--计算分页显示的TOPN值

DECLARE   @TopN   varchar(20),@TopN1   varchar(20)

SELECT   @TopN=@PageSize,

@TopN1=(@PageCurrent-1)*@PageSize

 

--第一页直接显示

IF   @PageCurrent=1

EXEC(N 'SELECT   TOP   '+@TopN

+N '   '+@FieldShow

+N '   FROM   '+@tbname

+N '   '+@Where

+N '   '+@FieldOrder)

ELSE

BEGIN

--处理别名

IF   @FieldShow=N '* '

SET   @FieldShow=N 'a.* '

 

--生成主键(唯一键)处理条件

DECLARE   @Where1   nvarchar(4000),@Where2   nvarchar(4000),

@s   nvarchar(1000),@Field   sysname

SELECT   @Where1=N ' ',@Where2=N ' ',@s=@FieldKey

WHILE   CHARINDEX(N ', ',@s)> 0

SELECT   @Field=LEFT(@s,CHARINDEX(N ', ',@s)-1),

@s=STUFF(@s,1,CHARINDEX(N ', ',@s),N ' '),

@Where1=@Where1+N '   AND   a. '+@Field+N '=b. '+@Field,

@Where2=@Where2+N '   AND   b. '+@Field+N '   IS   NULL ',

@Where=REPLACE(@Where,@Field,N 'a. '+@Field),

@FieldOrder=REPLACE(@FieldOrder,@Field,N 'a. '+@Field),

@FieldShow=REPLACE(@FieldShow,@Field,N 'a. '+@Field)

SELECT   @Where=REPLACE(@Where,@s,N 'a. '+@s),

@FieldOrder=REPLACE(@FieldOrder,@s,N 'a. '+@s),

@FieldShow=REPLACE(@FieldShow,@s,N 'a. '+@s),

@Where1=STUFF(@Where1+N '   AND   a. '+@s+N '=b. '+@s,1,5,N ' '),

@Where2=CASE

WHEN   @Where= ' '   THEN   N 'WHERE   ( '

ELSE   @Where+N '   AND   ( '

END+N 'b. '+@s+N '   IS   NULL '+@Where2+N ') '

 

--执行查询

EXEC(N 'SELECT   TOP   '+@TopN

+N '   '+@FieldShow

+N '   FROM   '+@tbname

+N '   a   LEFT   JOIN(SELECT   TOP   '+@TopN1

+N '   '+@FieldKey

+N '   FROM   '+@tbname

+N '   a   '+@Where

+N '   '+@FieldOrder

+N ')b   ON   '+@Where1

+N '   '+@Where2

+N '   '+@FieldOrder)

END

----------------------------------数据库时间函数的调用

1. 当前系统日期、时间

select getdate()

2. dateadd 在向指定日期加上一段时间的基础上,返回新的 datetime 值

例如:向日期加上2天

select dateadd(day,2,'2004-10-15') --返回:2004-10-17 00:00:00.000

 

3. datediff 返回跨两个指定日期的日期和时间边界数。

select datediff(day,'2004-09-01','2004-09-18') --返回:17

 

4. datepart 返回表明指定日期的指定日期部分的整数。

SELECT DATEPART(month, '2004-10-15') --返回 10

 

5. datename 返回表明指定日期的指定日期部分的字符串

SELECT datename(weekday, '2004-10-15') --返回:星期五

 

6. day(), month(),year() --能够与datepart对照一下

 

select 当前日期=convert(varchar(10),getdate(),120)

,当前时间=convert(varchar(8),getdate(),114)

 

select datename(dw,'2004-10-15')

 

select 本年第多少周=datename(week,'2004-10-15')

,今天是周几=datename(weekday,'2004-10-15')

 

函数 参数/功能

GetDate( ) 返回系统目前的日期与时间

DateDiff (interval,date1,date2) 以interval 指定的方式,返回date2 与date1两个日期之间的差值 date2-date1

DateAdd (interval,number,date) 以interval指定的方式,加上number以后的日期

DatePart (interval,date) 返回日期date中,interval指定部分所对应的整数值

DateName (interval,date) 返回日期date中,interval指定部分所对应的字符串名称

 

参数 interval的设定值以下:

 

值 缩 写(Sql Server) Access 和 ASP 说明

Year Yy yyyy 年 1753 ~ 9999

Quarter Qq q 季 1 ~ 4

Month Mm m 月1 ~ 12

Day of year Dy y 一年的日数,一年中的第几日 1-366

Day Dd d 日,1-31

Weekday Dw w 一周的日数,一周中的第几日 1-7

Week Wk ww 周,一年中的第几周 0 ~ 51

Hour Hh h 时0 ~ 23

Minute Mi n 分钟0 ~ 59

Second Ss s 秒 0 ~ 59

Millisecond Ms - 毫秒 0 ~ 999

 

access 和 asp 中用date()和now()取得系统日期时间;其中DateDiff,DateAdd,DatePart也同是能用于Access和asp中,这些函数的用法也相似

 

举例:

1.GetDate() 用于sql server :select GetDate()

 

2.DateDiff('s','2005-07-20','2005-7-25 22:56:32')返回值为 514592 秒

DateDiff('d','2005-07-20','2005-7-25 22:56:32')返回值为 5 天

 

3.DatePart('w','2005-7-25 22:56:32')返回值为 2 即星期一(周日为1,周六为7)

DatePart('d','2005-7-25 22:56:32')返回值为 25即25号

DatePart('y','2005-7-25 22:56:32')返回值为 206即这一年中第206天

DatePart('yyyy','2005-7-25 22:56:32')返回值为 2005即2005年

 

SQL Server DATEPART() 函数返回 SQLServer datetime 字段的一部分。

 

SQL Server DATEPART() 函数的语法是:

DATEPART(portion, datetime)

其中 datetime 是 SQLServer datetime 字段和部分的名称是下列之一: Ms for Milliseconds

Yy for Year

Qq for Quarter of the Year

Mm for Month

Dy for the Day of the Year

Dd for Day of the Month

Wk for Week

Dw for the Day of the Week

Hh for Hour

Mi for Minute

Ss for Second

 

详细的说明:

 

一般,你须要得到当前日期和计算一些其余的日期,例如,你的程序可能须要判断一个月的第一天或者最后一天。大家大部分人大概都知道怎样把日期进行分割(年、月、日等),而后仅仅用分割出来的年、月、日等放在几个函数中计算出本身所须要的日期!在这篇文章里,我将告诉你如何使用DATEADD和DATEDIFF函数来计算出在你的程序中可能你要用到的一些不一样日期。

在使用本文中的例子以前,你必须注意如下的问题。大部分可能不是全部例子在不一样的机器上执行的结果可能不同,这彻底由哪一天是一个星期的第一天这个设置决定。第一天(DATEFIRST)设定决定了你的系统使用哪一天做为一周的第一天。全部如下的例子都是以星期天做为一周的第一天来创建,也就是第一天设置为7。假如你的第一天设置不同,你可能须要调整这些例子,使它和不一样的第一天设置相符合。你能够经过@@DATEFIRST函数来检查第一天设置。

 

为了理解这些例子,咱们先复习一下DATEDIFF和DATEADD函数。DATEDIFF函数计算两个日期之间的小时、天、周、月、年等时间间隔总数。DATEADD函数计算一个日期经过给时间间隔加减来得到一个新的日期。要了解更多的DATEDIFF和DATEADD函数以及时间间隔能够阅读微软联机帮助。

 

使用DATEDIFF和DATEADD函数来计算日期,和原本从当前日期转换到你须要的日期的考虑方法有点不一样。你必须从时间间隔这个方面来考虑。好比,从当前日期到你要获得的日期之间有多少时间间隔,或者,从今天到某一天(好比1900-1-1)之间有多少时间间隔,等等。理解怎样着眼于时间间隔有助于你轻松的理解个人不一样的日期计算例子。

 

一个月的第一天

 

第一个例子,我将告诉你如何从当前日期去这个月的最后一天。请注意:这个例子以及这篇文章中的其余例子都将只使用DATEDIFF和DATEADD函数来计算咱们想要的日期。每个例子都将经过计算但前的时间间隔,而后进行加减来获得想要计算的日期。

 

这是计算一个月第一天的SQL 脚本:

SELECT DATEADD(mm, DATEDIFF(mm,0,getdate()), 0)

 

咱们把这个语句分开来看看它是如何工做的。最核心的函数是getdate(),大部分人都知道这个是返回当前的日期和时间的函数。下一个执行的函数DATEDIFF(mm,0,getdate())是计算当前日期和“1900-01-01 00:00:00.000”这个日期之间的月数。记住:时期和时间变量和毫秒同样是从“1900-01-01 00:00:00.000”开始计算的。这就是为何你能够在DATEDIFF函数中指定第一个时间表达式为“0”。下一个函数是DATEADD,增长当前日期到“1900-01-01”的月数。经过增长预约义的日期“1900-01-01”和当前日期的月数,咱们能够得到这个月的第一天。另外,计算出来的日期的时间部分将会是“00:00:00.000”。

 

这个计算的技巧是先计算当前日期到“1900-01-01”的时间间隔数,而后把它加到“1900-01-01”上来得到特殊的日期,这个技巧能够用来计算不少不一样的日期。下一个例子也是用这个技巧从当前日期来产生不一样的日期。

 

本周的星期一

 

这里我是用周(wk)的时间间隔来计算哪一天是本周的星期一。

 

SELECT DATEADD(wk, DATEDIFF(wk,0,getdate()), 0)

 

一年的第一天

 

如今用年(yy)的时间间隔来显示这一年的第一天。

 

SELECT DATEADD(yy, DATEDIFF(yy,0,getdate()), 0)

 

季度的第一天

 

假如你要计算这个季度的第一天,这个例子告诉你该如何作。

 

SELECT DATEADD(qq, DATEDIFF(qq,0,getdate()), 0)

 

当天的半夜

 

曾经须要经过getdate()函数为了返回时间值截掉时间部分,就会考虑到当前日期是否是在半夜。假如这样,这个例子使用DATEDIFF和DATEADD函数来得到半夜的时间点。

 

SELECT DATEADD(dd, DATEDIFF(dd,0,getdate()), 0)

 

深刻DATEDIFF和DATEADD函数计算

 

你能够明白,经过使用简单的DATEDIFF和DATEADD函数计算,你能够发现不少不一样的可能有意义的日期。

 

目前为止的全部例子只是仅仅计算当前的时间和“1900-01-01”之间的时间间隔数量,而后把它加到“1900-01-01”的时间间隔上来计算出日期。假定你修改时间间隔的数量,或者使用不一样的时间间隔来调用DATEADD函数,或者减去时间间隔而不是增长,那么经过这些小的调整你能够发现和多不一样的日期。

 

这里有四个例子使用另一个DATEADD函数来计算最后一天来分别替换DATEADD函数先后两个时间间隔。

 

上个月的最后一天

 

这是一个计算上个月最后一天的例子。它经过从一个月的最后一天这个例子上减去3毫秒来得到。有一点要记住,在Sql Server中时间是精确到3毫秒。这就是为何我须要减去3毫秒来得到我要的日期和时间。

 

SELECT dateadd(ms,-3,DATEADD(mm, DATEDIFF(mm,0,getdate()), 0))

 

计算出来的日期的时间部分包含了一个Sql Server能够记录的一天的最后时刻(“23:59:59:997”)的时间。

 

去年的最后一天

 

链接上面的例子,为了要获得去年的最后一天,你须要在今年的第一天上减去3毫秒。

 

SELECT dateadd(ms,-3,DATEADD(yy, DATEDIFF(yy,0,getdate()), 0))

 

本月的最后一天

 

如今,为了得到本月的最后一天,我须要稍微修改一下得到上个月的最后一天的语句。修改须要给用DATEDIFF比较当前日期和“1900-01-01”返回的时间间隔上加1。经过加1个月,我计算出下个月的第一天,而后减去3毫秒,这样就计算出了这个月的最后一天。这是计算本月最后一天的SQL脚本。

 

SELECT dateadd(ms,-3,DATEADD(mm, DATEDIFF(m,0,getdate())+1, 0))

 

本年的最后一天

 

你如今应该掌握这个的作法,这是计算本年最后一天脚本

 

SELECT dateadd(ms,-3,DATEADD(yy, DATEDIFF(yy,0,getdate())+1, 0))

 

本月的第一个星期一

 

好了,如今是最后一个例子。这里我要计算这个月的第一个星期一。这是计算的脚本。

 

select DATEADD(wk, DATEDIFF(wk,0,

dateadd(dd,6-datepart(day,getdate()),getdate())), 0)

-------------------------------------------------------------sql中根据字段不一样sum统计

sum(case LeiBie when '阶段计划' then SL else 0 end) as 'JDSL',

------------------在某字段后面加字符是没有问题的

use cc

SELECT Name+'hhh',Sex,sum(Score) as 'ddd' from Score

GROUP BY Name,sex WITH ROLLUP

-----------------------------js依次打印文字;

it=0;

function typeit() {

    var word = mytext.charAt(it, idstr);

    if (it < mytext.length - 1) {

        it++

        t = setTimeout("typeit()", Math.random() * 10);

    }

    else {

        clearTimeout(t);

        it = 0;

        i++;

        start();

    }

------------------------------js若在页面已加载就开始调用服务器端控件,对报关于对象的错!

解决方案,经过后台注册脚本方法间接调用前台方法;

 

-----js向标记中添加标记

累加$("#content").append("<img src='../img/bg2.jpg'/>");不累加:.html();

或者是js:.innerHTML=;累加:+=innerHTML;

----------------要让出连接以外的有北京颜色显示须要

  $("li").mouseenter(function () {

        $(this).attr("background-color", "#ccff66");

    });

li:hover

{

         /*background-image: url(img/menu2.gif);*/

         cursor: pointer;

         background-color:#ccff66;

}同时使用才有效果;

------------------------------frame去掉边框:

<iframe frameborder="0" >

---------------------------------------------------------:

decimal(18,6);

-----------------------------虚拟表:#表名;

---timestamp:时间戳,二进制数据;

----WAITFOR delay '00:00:005':数据库时间延迟

---SELECT @@rowcount;返回上一操做所影响的行数,若是大于0,可判断操做是否成功;

处理并发:悲观:(事务+锁);乐观(时间戳)

悲观处理方式是 采用SQLSERVER数据库中“事务+锁”!(隔离级别总共四种默认level1)会产生脏读;

 

  先上伪代码再解释:

 

  1.先解释2个要用到的锁

 

  SELECT * FROM table WITH (HOLDLOCK) 其余事务能够读取表,但不能更新删除 (避免不可重复读),避免统一事务屡次读取结果一致防止他人修改;

  SELECT * FROM table WITH (TABLOCKX) 其余事务不能读取表,更新和删除

   SELECT * FROM table WITH (updLOCK) 其余事务能读取表,但不能更新

 

 

  PS:这2个是表级锁,要锁行加上SQL过滤条件便可。数据库的默认隔离级别是readcommit,(更改的事务未完成,其它不能读取)

    也就是level1;,可读:能够查询+with(holdlock),若想不可读,with(tablockx)

  2.乐观:事务+时间戳;

 

------------------如何避免死锁 1 使用事务时,尽可能缩短事务的逻辑处理过程,及早提交或回滚事务;

 2 设置死锁超时参数为合理范围,如:3分钟-10分种;超过期间,自动放弃本次操做,避免进程悬挂;

3 优化程序,检查并避免死锁现象出现; 4 .对全部的脚本和SP都要仔细测试,在正是版本以前。

 5 全部的SP都要有错误处理(经过@error) 6 通常不要修改SQL SERVER事务的默认级别。

不推荐强行加锁

------------------------------------时间戳:(微软建议用rowversion)

convert(bigint,time),对应c#int64进行比较便可;

--------------------别面内存泄露的方法,在一个类中建立另外一个类的实例时,当不用了,赋值null,这样就告诉系统,能够回收了;

------恢复数据库:

restore database guo from disk='路径备份' with recovery

------------------经典的dispose();垃圾回收gc(回收时将对象赋值为null),告诉回收器,我已经不被引用了,随时清理;

    class A:IDisposable

    {

        private bool isDisposed = false;

        public void Dispose()

        {

            Dispose(true);

            GC.SuppressFinalize(this);//告诉回收器清理已完成,无需调用析构函数;

        }

        protected virtual void Dispose(bool disposing)

        {

            if (!isDisposed)

            {

                if (disposing)

                {

                    //释放托管资源

                }

                //释放非托管资源

            }

            isDisposed = true;

        }

        ~A()//有回收期调用,不固定;

        {

            Dispose(false);

            //主要清理非托管;

        }

    }

-------------------------------------文件流,数据库的链接,系统的窗口句柄,打印机资源等等网络链接,这些是非托管资源;

-----产生内存泄露的缘由:

文件流,数据库的链接,系统的窗口句柄,打印机资源等等

------------

1.内存泄露的缘由:

!使用静态引用;

!为退订的事件;

!为调用的Dispose方法;

!使用不完全的Dispose方法;

等等;

内存泄露:Fabrice称,内存泄漏发生在一块内存不 再被使用,但却依然被程序所引用时

使用静态引用

未退订的事件-做者认为这是最多见的内存泄漏缘由

未退订的静态事件

未调用Dispose方法

使用不完全的Dispose方法

在Windows Forms中对BindingSource的误用

未在WorkItem/CAB上调用Remove

------------

对象的建立者或拥有者负责销毁对象,而不是使用者

当再也不须要一个事件订阅者时退订此事件,为确保安全能够在Dispose方法中退订

当对象再也不触发事件时,应该将对象设为null来移除全部的事件订阅者

当模型和视图引用同一个对象时,推荐给视图传递一个此对象的克隆,以防止没法追踪谁在使用哪一个对象

对系统资源的访问应该包装在using块中,这将在代码执行后强制执行Dispose

---------------------------

用上面的SQL语句还原备份数据库时,数据库的状态老是“正在还原”,使得不能对它进行其余操做。

 

解决方案:“RESTORE DATABASE " + dbName + " From disk='" + filePath + "' WITH REPLACE,RECOVERY ";

-----------通常还原数据库的话是 with replace;

----------------备份知识

一、SQL数据库恢复模型

----------------------------------------------------------------------

1)彻底恢复模型

-----------------

(1)备份时要备份数据库的数据文件和日志文件

(2)还原时使用数据库的备份的数据文件副本和所有日志信息来恢复数据库。

(3)能还原所有数据,并能够将数据库恢复到任意指定的时刻。

(4)为保证明现即时点恢复,对数据库的全部*做都将完整地记入日志,这样,日志占用空间较大,对性能也有所影响。

------------------

(2)大容量日志记录恢复模型

------------------

(1)备份时要备份数据库的数据文件和日志文件

(2)还原时使用数据库的备份的数据文件副本和所有日志信息来恢复数据库。

(3)日志中不记录*做细节(如select into、create index等),而只记录*做的最终结果,所以占用日志空间小。

(4)只支持将数据库还原到事务日志备份的时刻,而不支持即时点恢复,所以可能产生数据丢失。

-------------------

(3)简单恢复模型

-------------------

(1)备份时只备份数据文件,还原时也用备份的数据文件恢复数据库。

(2)只能将数据恢复到数据文件备份的时刻,可能产生最多的数据丢失。

(3)不适于生产系统和大规模*做环境下选用。

-----------------------------------------

alter database d1 set recovery simple     --设置数据库恢复模型

alter database d1 set recovery bulk_logged

alter database d1 set recovery full

----------------------------------------------------------------------

二、备份设备

----------------------------------------------------------------------

1)物理设备

---------------------------

disk:支持本地磁盘或者网络备份

tape:支持磁带机备份

name pipe:支持第三方备份软件

---------------------------

2)逻辑设备

---------------------------

永久备份文件:能够重复使用,应该在备份前建立。

临时备份文件:用于一次性备份,在备份时建立。

-------------------------------------------------

exec sp_addumpdevice 'disk','bak2','e:\back_device\bak2.bak' --建立永久磁盘备份设备

exec sp_addumpdevice 'disk','bak3','e:\back_device\bak3.bak'

----------------------------------------------------------------------

exec sp_addumpdevice 'disk','bak4','\\sv2\backup\bak4.bak' --建立网络永久磁盘备份设备

exec sp_addumpdevice 'disk','bak5','\\sv2\backup\bak5.bak'

----------------------------------------------------------------------

exec sp_dropdevice 'bak5'              --删除备份设备

----------------------------------------------------------------------

backup database d3 to bak3      --将数据库备份到备份设备

backup database d4 to bak4

----------------------------------------------------------------------

restore headeronly from bak2    --查看备份设备中的内容

----------------------------------------------------------------------

backup database d3 to disk='e:\back_file\d3.bak'    --将数据库备份到临时备份文件

backup database d4 to disk='e:\back_file\d4.bak'

----------------------------------------------------------------------

restore database d3 from bak3           --从备份设备还原数据库      

restore database d4 from disk='e:\back_file\d4.bak' --从备份文件还原数据库

----------------------------------------------------------------------

三、使用多个备份文件存储备份

----------------------------------------------------------------------

1)SQL可同时向多个备份文件进行写*做。若是把这些文件放到多个磁带机或磁盘中,则可提升备份速度。

2)这多个备份文件必须用同业型的媒体,并放到一个媒体集中。

3)媒体集中的文件必须同时使用,而不能单独使用。

4)能够经过format命令将媒体集从新划分,但原备份集中的数据不能再使用。

--------------------------------------------------------------------

backup database d4 to bak4,bak5,bak6 with medianame='bak456',format --备份D4并造成Media Set

backup database d3 to bak4      --失败,因Media set中文件必须同时使用

backup database d3 to bak4,bak5,bak6    --成功,将D3也备份到Media Set中

restore headeronly from bak4,bak5,bak6--查看Media Set中的备分内容

----------------------------------------------------------------------

backup database d4 to bak4 with medianame='bak4',format     --从新划分Media Set

backup database d3 to bak5,bak6 with medianame='bak56',format

----------------------------------------------------------------------

backup database d1 to bak1 with init     --with init重写备份设备中内容

backup database d2 to bak1 with noinit --with noinit将内容追加到备份设备中

restore headeronly from bak1

----------------------------------------------------------------------

四、备份的方法

----------------------------------------------------------------------

1)彻底备份

-------------------------------------------

(1)是备份的基准。在作备份时第一次备份都建议使用彻底备份。

(2)彻底备份会备份数据库的全部数据文件、数据对象和数据。

(3)会备份事务日志中任何未提交的事务。由于已提交的事务已经写入数据文件中。

--------------------------------------------

backup database d1 to bak1 with init     --彻底备份

backup database d1 to bak1 with noinit

----------------------------------------------------------------------

2)差别备份

---------------------------------------------

(1)基于彻底备份。

(2)备份自最近一次彻底备份以来的全部数据库改变。

(3)恢复时,只应用最近一次彻底备份和最新的差别备份。

-----------------------------------------------

backup database d2 to bak2 with init,name='d2_full' --差别备份,第一次备份时应作彻底备份

create table b1(c1 int not null,c2 char(10) not null)

backup database d2 to bak2 with differential,name='d2_diff1'

insert b1 values(1,'a')

backup database d2 to bak2 with differential,name='d2_diff2'

insert b1 values(2,'b')

backup database d2 to bak2 with differential,name='d2_diff3'

insert b1 values(3,'c')

backup database d2 to bak2 with differential,name='d2_diff4'

restore headeronly from bak2

----------------------------------------------------------------------

3)事务日志备份

-------------------------------------------------------------

(1)基于彻底备份。

(2)为递增备份,即备份从上一次备份以来到备份时所写的事务日志。

(3)容许恢复到故障时刻或者一个强制时间点。

(4)恢复时,须要应用彻底备份和彻底备份后的每第二天志备份。

-------------------------------------------------------------

backup database d3 to bak3 with init,name='d3_full' --日志备份,第一次备份时应作彻底备份

create table b1(c1 int not null,c2 char(10) not null)

backup log d3 to bak3 with

insert b1 values(1,'a')

backup log d3 to bak3 with

insert b1 values(2,'b')

backup log d3 to bak3 with

insert b1 values(3,'c')

backup log d3 to bak3 with

restore headeronly from bak3

----------------------------------------------------------------------

create table b1(c1 int not null,c2 char(10) not null)    --Full+Log+Diff

backup log d4 to bak4 with

insert b1 values(1,'a')

backup log d4 to bak4 with

insert b1 values(2,'b')

backup database d4 to bak4 with differential,name='d4_diff1'

insert b1 values(3,'c')

backup log d4 to bak4 with

insert b1 values(4,'d')

backup log d4 to bak4 with

insert b1 values(5,'d')

backup database d4 to bak4 with differential,name='d4_diff2'

restore headeronly from bak4

----------------------------------------------------------------------

日志清除

-----------------------------------------

1)若是日志空间被填满,数据库将不能记录修改。

2)数据库在作彻底备份时日志被截断。

3)若是将'Trans log on checkpoint'选项设为TRUE,则结果为不保存日志,即没有日志记录,不建议使用。

4)with truncate_only和with no_log设置日志满时清除日志

5)with no_truncate则能够完整保存日志,不清除,即便在数据文件已经损坏状况下。主要用于数据库出问题后在恢复前使用。能够将数据还原到出故障的那一时刻。

-------------------------------------------

exec sp_dboption d3

exec sp_dboption

sp_dboption 'd3','trunc. log on chkpt.','true'     --设置自动清除数据库日志

sp_dboption 'd3','trunc. log on chkpt.','false'    --将自动清除数据库日志的选项去除

----------------------------------------------------------------------

backup log d4 with truncate_only    --设置D4日志满时清除日志,并作清除记录

----------------------------------------------------------------------

backup log d4 with no_log       --设置D4日志满时清除日志,但不作清除记录

----------------------------------------------------------------------

backup log d4 to bak4 with no_truncate--在D4数据库损坏时立刻备份当前数据库日志(DEMO)

--------

使用no_truncate

彻底+修改1+差别+修改2+差别+修改3+中止SQL,删除数据库数据文件+重启SQL

backup log no_truncate

再还原,可还原到修改3

-

-----------------------------数据库恢复顺序;

恢复数据库中的数据,因此一般恢复的时间较长;先恢复最后一次全库备份,再恢复最后一次差别备份,

再顺序恢复最后一次差别备份之后进行的全部事务日志备份

 

------------------数据库四种备份;

1)彻底数据库备份

   彻底数据库备份是备份数据库的全部表的数据及模式,以及对应的文件结构,包括对事务日志中的事务进行备份。它能够用做系统出现故障时恢复数据库的基础,也可用于在另一台计算机上生成数据库的副本。

  

(2)差别数据库备份

   差别数据库备份只记录自上次彻底数据库备份后发生变化的数据。差别备份的数据量比彻底备份的数据量小并且备份速度快,所以能够更常常地备份。

   

(3)事务日志备份

   事务日志包含了自上次进行彻底数据库备份、差别数据库备份或事务日志备份以来所完成的事务。可使用事务日志备份将数据库恢复到特定的即时点或恢复到故障点。

  

(4)数据库文件和文件组备份

   只备份特定的文件或文件组,经常使用于超大型数据库的备份。

---------------------------------------------------------数据并发,其多个用户修改其它用户正在使用的资源,并产生了必定的影响;

level0:(read uncommitted);修改未提交时,即可以读取;---致使脏读;解决方案:SET tran isolation level read uncommitted

个事务读到另一个事务尚未提交的数据,咱们称之为脏读

level1(read committed):(sql默认,(修改的过程当中不容许读和修改)修改时(修改的进程还没结束),另外一进程不能读取)read committed;---致使不可重复读:解决方案:读取的事务中设置SET tran isolation level repeatable read;

一个事务前后读取同一条记录,但两次读取的数据不一样,咱们称之为不可重复读。读取的过程当中(5秒钟内),有其它事务修改了数据;

level2:(repeatable read),{原理:进行了s锁,做用(小于with(holdlock),由于,le2不容许修改,因此不会出现不可重复读,但出现幻读,能够插入,而holdlock不容许,这就是区别)

}解决方案:set tran isolation level serializable;:串行化(我的认为是holdlock原理):

一个事务前后读取一个范围的记录,但两次读取的纪录数不一样,咱们称之为幻象读;(幻读,读的时候有数据插入,不可重复读,读的时候有数据修改)

level3:(serializable)串行化:避免了幻读;

 

-------更改隔离类别;

BEGIN transaction

   SET tran isolation level read uncommitted

   update -----

IF @@error=0

  COMMIT transaction

else

ROLLBACK transaction

-------------------------------默认的level1:在修改中不容许修改和查询,单容许插入;(插入不会引发不一致和完整性)

----------with(holdlock):查询时,不容许修改和插入操做,容许查询;

----------with(tablockx):查询时什么都不容许;

-------------------这两个锁只能应用在查询上;

总结

事务隔离级别是经过数据库的锁机制来控制的,在不一样的应用场景须要应用不一样的事务隔离级别,

SQL Server默认的事务隔离级别是READ COMMITTED,默认的隔离级别,已经能够知足咱们大部分应用的需求。

--------------------------行级锁:锁的粒度小;不想表级锁,updlock,告诉你们,标记我整个事务将要更改,大家不要进行操做;

----------------------------------------------

--判断是否数据库存在某存储过程

use master

select * from sysobjects where id = object_id(N'[killspid]') and OBJECTPROPERTY(id, N'IsProcedure') = 1

--判断是否存在某表

use cc

DECLARE

select * from sysobjects where id = object_id(N'[AA]') and OBJECTPROPERTY(id, N'IsUserTable') = 1

--判断数据库是否存在

select * from sys.databases where name ='CC'

--判断是否存在临时表,若存在删除

CREATE table #a

(

  id int,

  name char(10)

)

SELECT * FROM #a

if object_id('tempdb..#a') is not null   

  drop table #a

--判断表中某列是否存在

USE CC

select * from syscolumns where id=object_id('AA') and name='A'

-------------------------------------------------

 

 

-----------------------结束某数据库的所有进程;(结束进程)游标,查询全部的数据库链接进程;

USE master

DECLARE @dbname varchar(20)

SET @dbname='CC'

declare @sql   nvarchar(500)

declare @spid  int

set @sql='declare getspid cursor for select spid from sysprocesses where dbid=db_id('''+@dbname+''')'

EXEC(@sql)

open getspid

fetch next from getspid into @spid

while @@fetch_status =0

begin

   exec('kill '+@spid)

   fetch next from getspid into @spid

end

   close getspid

   deallocate getspid

--------------------------------------------获取表中的列名;

dr.GetName(1);sqldatareader;

---------------------------缓存:cache;

public static object GetCache(string CacheKey)

                   {

                            System.Web.Caching.Cache objCache = HttpRuntime.Cache;

                            return objCache[CacheKey];

                   }

 

                   /// <summary>

                   /// 设置当前应用程序指定CacheKey的Cache值

                   /// </summary>

                   /// <param name="CacheKey"></param>

                   /// <param name="objObject"></param>

                   public static void SetCache(string CacheKey, object objObject)

                  {

                            System.Web.Caching.Cache objCache = HttpRuntime.Cache;

                            objCache.Insert(CacheKey, objObject);

                   }

----------------------------将对象序列化;

  User u = new User() {  Age=1,Name="郭泽峰"};

        var str = new  System.Web.Script.Serialization.JavaScriptSerializer();

        var ff=str.Serialize(u);//字符串形式的json对象;

        TextBox1.Text = ff;

------------------------------ ScriptManager.RegisterStartupScript的命名空间:web.extension;中;

---------------------加入收藏夹;

  <li class="h_text"><a href="javascript:save();">加入收藏</a></li>

 window.external.addFavorite('http://zfsoftware.tk', '麦兜网')

----------设为首页;

<li class="h_text"><a href="#" onClick="this.style.behavior='url(#default#homepage)';this.setHomePage('http://zfsoftware.tk')">设为首页</a></li>

-------------------------------------------------------ajax测试服务webjison

(1)调用web服务的user对象;提取方法guo千万不要加();success:guo;

            $.ajax({

                type: "Post",

                url: "WebService.asmx/getuser",

                contentType: "application/json; charset=utf-8",

                dataType: "json",

                success: function (obj) {

                    alert(obj.d.Name);

                },

                error: function (err) {

                    alert(err);

                }

            });

        -----------自带的方法;(没有d),

        WebService.getuser(function (result) {

                alert(result.Name);

             },null,null)

(2)--------------调用list<int>,数组

               alert(obj.d[0]);

------------------

               alert(result[1]);

(3)----------调用idictionary集合;

                 alert(obj.d[“a”].Name);

------------------

               alert(result["a"].Name);

(4)调用list<user>对象;

             alert(obj.d[0].Name);

            for (var s in obj.d) {

                $("#guo").append("<tr><td>"+obj.d[s].Name+"</td></tr>");

            }

----------------------------------序列化;(json)

   var str = new System.Web.Script.Serialization.JavaScriptSerializer();

   TextBox1.Text =str.Serialize(u);

-------------js反序列化;

 success: function (result) {

                    var json = JSON.decode(result.d);

                    alert(json.Name);

--------------------当webservice出现方法重载时;

 [WebMethod( MessageName="guo")]在上面添加这个,一味着此方法的名字变为了guo,客户端只要调用guo就好了;

----------

 

------------------js调用后台方法;

function Button1_onclick() {

    var a = " <% =getstr()%>";

    alert(a);

}

-------------------------------sql事务现成的案例:

 StringBuilder strSql = new StringBuilder();

            strSql.Append("begin transaction");

            strSql.Append(" DECLARE @inwages  decimal SET @inwages=0.0 ");

            strSql.Append(" DECLARE @outwages decimal set @outwages=0.0");

            strSql.Append(" select @inwages=sum(Wages)from GroupWages where IdCard=@idcard");

            strSql.Append(" SELECT @outwages=sum(AllWages) FROM PayWages WHERE IdCard=@idcard");

            strSql.Append(" SELECT @inwages-@outwages");

            strSql.Append(" IF @@error=0 commit transaction else rollback transaction ");

            SqlParameter[] parameters ={

             new SqlParameter("@idCard",idCard)

           };

------------------------------返回本月的第一天

txtBeginTime.Text = DateTime.Today.AddDays(-DateTime.Today.Day + 1).ToString("yyyy-MM-dd");

-----------------用户自定义控件

用户控件调用父页面的方法:

 

 

//得到父页面

Page p = this.Parent.Page;

Type pageType = p.GetType();

//父页面的方法名

  //System.Reflection:要添加此命名空间;

MethodInfo mi = pageType.GetMethod("Loading");

//执行

mi.Invoke(p, new object[] { "参数1","参数2" });

用户控件与用户控件之间调用:

 

//得到父页面

Page p = this.Parent.Page;

//得到父页面的子控件

UserControl uc = p.FindControl("tj_ReceiptList2") as UserControl;

Type pageType = uc.GetType();

//父类方法名

MethodInfo mi = pageType.GetMethod("Loading");

//参数

mi.Invoke(uc, new object[] { "参数1", "参数2" });

 

 

用户控件与用户控件之间设置属性:

 

 

//得到父页面

Page p = this.Parent.Page;

//得到父页面的子控件

UserControl uc = p.FindControl("aabb1") as UserControl;

Type pageType = uc.GetType();

//父类方法名

PropertyInfo mi = pageType.GetProperty("属性名称");

 

//mi.Invoke(uc, new object[] {});

mi.SetValue(uc,属性值,null);

--------------------------------------------身份验证登录;(这两种形式均可以;)

  System.Web.Security.FormsAuthentication.SetAuthCookie("a", false);

//System.Web.Security.FormsAuthentication.RedirectFromLoginPage("a",false);

 

System.Web.Security.FormsAuthentication.SignOut();

 

User.Identity.IsAuthenticated

 

--------------------------------------------mysql案例:

   MySqlConnection cn = new MySqlConnection("data source=localhost;initial catalog=gzf;uid=root;pwd=sa;persist security info=True;");

           // "server=localhost;user id=root;password=;database=guestbook"

            //MySqlConnection cn = new MySqlConnection("server=localhost;user id=root;password=sa;database=gzf");

            MySqlDataAdapter da = new MySqlDataAdapter(" select * from users", cn);

            DataSet ds = new DataSet();

            da.Fill(ds);

            this.dataGridView1.DataSource =ds.Tables[0];

--------------------------------返回上一页

ViewState["preurl"]= Request.UrlReferrer.ToString();

 Response.Redirect(ViewState["preurl"].ToString());

---------------------------------------------------------实体中的datetime类型的默认值不为空,而是datetime.minvalue;(时间)

-------------------------sqlin拼接:

存储过程当中:1.转化,2,用exec进行拼接;在c#直接拼接不能用软绑定;

-----------------------路径转换

  protected static string Transfer(string str)

    {

        string[] strs = str.Split('/');

        if (str != "" && strs[strs.Length - 1].Length >= 7)

        {

            return strs[strs.Length - 1].Substring(0, 7);//得到路径下文件的名称

        }

        else

            return strs[strs.Length - 1];

    }

    protected static string TransferPath(string str)

    {

 

        return ("." + str.Replace('~', '.'));//转换成下载路径

    }

---------------------------复制表()

 DataTable dt2 = new DataTable();

            dt2 = dt.Copy();

            dt2.Rows.Clear();

            dt2.ImportRow(dt.Rows[0]);//这是加入的是第一行

------------------------------------------------------------------序列化与反序列化

 JavaScriptSerializer Serializer = new JavaScriptSerializer();

       Dictionary<string,string> objs = Serializer.Deserialize<Dictionary<string,string>>("{a:'guo',b:'ze'}");

 

 

   //List<aa> s = new List<aa>();

        //s = JSONStringToList<aa>("[{name:'guo'},{name:'ze'}]");

        //TextBox1.Text = s[1].name

    }

    public static List<T> JSONStringToList<T>(string JsonStr)

    {

        JavaScriptSerializer Serializer = new JavaScriptSerializer();

        List<T> objs = Serializer.Deserialize<List<T>>(JsonStr);

        return objs;

    }

 

 

 

    public static List<T> JSONStringToList<T>(string JsonStr)

    {

        JavaScriptSerializer Serializer = new JavaScriptSerializer();

        List<T> objs = Serializer.Deserialize<List<T>>(JsonStr);

        return objs;

    }

--------------------缓存依赖

using System;

using System.Collections.Generic;

using System.Linq;

using System.Web;

using System.Web.UI;

using System.Web.UI.WebControls;

 

public partial class Default4 : System.Web.UI.Page

{

    /// <summary>

    /// 获取当前应用程序指定CacheKey的Cache对象值

    /// </summary>

    /// <param name="CacheKey">索引键值</param>

    /// <returns>返回缓存对象</returns>

    public static object GetCache(string CacheKey)

    {   

        System.Web.Caching.Cache objCache = HttpRuntime.Cache;   

        return objCache[CacheKey];

    }

 

 

    /// <summary>

    /// 设置以缓存依赖的方式缓存数据

    /// </summary>

    /// <param name="CacheKey">索引键值</param>

    /// <param name="objObject">缓存对象</param>

    /// <param name="cacheDepen">依赖对象</param>

    public static void SetCache(string CacheKey, object objObject, System.Web.Caching.CacheDependency dep)

    {   

        System.Web.Caching.Cache objCache = HttpRuntime.Cache;   

        objCache.Insert(       

            CacheKey,       

            objObject,       

            dep,       

            System.Web.Caching.Cache.NoAbsoluteExpiration, //从不过时       

            System.Web.Caching.Cache.NoSlidingExpiration, //禁用可调过时       

            System.Web.Caching.CacheItemPriority.Default,       

            null);

    }

    protected void Page_Load(object sender, EventArgs e)

    {

        string CacheKey = "cachetest";

        object objModel = GetCache(CacheKey);

        //从缓存中获取   

 

SELECT * FROM QualityCheck WHERE len(replace(Ensure,' ',''))>0        if (objModel == null) //缓存里没有   

        {       

            objModel = DateTime.Now;//把当前时间进行缓存        

            if (objModel != null)       

            {           

                //依赖 C:\\test.txt 文件的变化来更新缓存           

                System.Web.Caching.CacheDependency dep = new System.Web.Caching.CacheDependency("C:\\test.txt");           

                SetCache(CacheKey, objModel, dep);//写入缓存       

            }   

        }   

        Label1.Text = objModel.ToString();

    }

}

 

-----------------------判断字段是否有值且不为空;

 

SELECT * FROM QualityCheck WHERE len(replace(Ensure,' ',''))>0

---------------------------------------------------------------------------------------------------------js总结

1.  ---------------

-var aa = new Array();

            aa.push(1);

            alert(aa[0]);

var aa=[];也表示一个数组;

--------------------------

  var a = "sdfsfs";

            if (typeof (a) == "string")

                alert("shfidfodsf");

            else if (typeof (a) == "undefined")

                alert("未定义");

-----------------经过构造函数属性来判断类型;分割字符串

  var gg = "gu,oze,ng";

            var aa = gg.split(",");

            if(aa.constructor==Array)

                alert(aa[2]);

-------------------归并字符串;

 var aa = new Array(1, 2, 3, 4);

            var b = aa.join("-");

            alert(b);

--------------------------

  $(document.body).css("background-color","Red");

---------------------:切记没有分号,px后面,不然无效果;

  $("li").each(function () {

                $(this).css("background-color", "green");

                $(this).css("font-size","20px");

            });

--------------

 $("li:eq(3)").css("background-color", "red");匹配第四个li;

------------

 $("li:contains('b')").css("background-color",
"red");内容含有b的标签;

---------------

 //$("ul").css("background-color","red");

            //$("ul").attr("style", "background-color:red; font-size:20px;");

            //$("ul").attr({ style: "background-color:red;",style: "background-color:red;"});

            $("ul").attr("class", "lii");

            $("ul").removeAttr("class");

-------------------------

$("p").addClass("selected highlight");

------------------得到索引:

.index();从0开始,返回一个数字;

-----------有的话,删除,没有的话添加;

  $("ul").click(function () {

                $(this).toggleClass("lii");

            });

--------------not:除此以外的;

  $("li").not($("li:last")).css("background-color", "red");

-------------2,3只选择第三个,2,4只选择第三和第四个,索引从0开始;当slice(2),表示从第三个到最后一个;

  $("li").slice(2,3).css("background-color", "red");

---------------------lt:前四个;

      $("li:gt(4)").css("background-color", "red");

-------全部的li;

   $("ul").children().css("background-color", "red");

--------class为dd的类;

  $("ul").children(".dd").css("background-color", "red");

-------------全部的同级元素;

 $("#f").nextAll().css("background-color", "red");

-----------挨着的第一个同级元素;

 $("#f").next().css("background-color", "red");

-----------同级直到table标记之间的同级标记,不包括table;

 $("#f").nextUntil("table").css("background-color", "red");

-------------找到全部父级的标记;

   $("#nei").parents().css("background-color","red");

-------------应该只有上一级;

  $("#nei").parent().css("background-color","red");

-------------

siblings:除此以外的所同级元素;

---------至关于累加;

 $("#nei").add("table").add("#f").css("background-color","red");

-----------并把本身也加上;

$("div").find("p").andSelf().addClass("border");

--------------将全部元素添加到b标签中;

   $("#nei").contents().wrap("<b/>");

-------------在p标签的前面添加标记;append是后面;

$("p").prepend("<b>Hello</b>");

--------------.after,.before,insertafter,insertbefore;

------------将元素包含到另外一元素中;

$("p").wrap(document.getElementById('content'));

------------

将全部匹配的元素用单个元素包裹起来时使用wrapall();

---------------------------:在p的内部添加b;(将b的内容用b抱起来)

$("p").wrapInner("<b></b>");

-----------变换标记;

  $("p").click(function () {

                $(this).replaceWith("<img src='../img/_8-1.png'></img>");

-----------

            });

---------------------复制一份添加到标记中

$("b").clone().prependTo("p");

---------------------

将全部段落的字体颜色设为红色而且背景为蓝色。

 

jQuery 代码:

$("p").css({ color: "#ff0011", background: "blue" });描述:

若是属性名包含 "-"的话,必须使用引号:

jQuery 代码:

$("p").css({ "margin-left": "10px", "background-color": "blue" });

-----------------------无论怎么样:键值都加双引号;

$("#f").css({"color":"red","background":"blue"});

----------------------------------------------------------offset相对document的位置;

-----------设定移量;

  $("#xuan").offset({top:200,left:400});

-------------获得相对位置

   var a = $("#xuan").offset();

            alert(a.left+"----"+a.top);

--------------------------------------------------------------position(),相对于父元素的偏移量;用法和offset同样;

------blur():失去焦点触发的事件;

-----change()事件:当内容改变且失去焦点时触发;

-------------滚动条滚动

  $(window).scroll(function () {

                setTimeout();

               8

            });

-----------序列化操做:

   var a = $.parseJSON('{ "name": "guozeng" }');

            alert(a.name);

---------------------

------------------------textbox下拉框案例

  $(function () {

            $("#Text1").focus(function () {

                //$("#gg").attr("display","block");

                $("#gg").css("display", "block");

                $("#gg").offset({ top: $("#Text1").offset().top + $("#Text1").height() + 5, left: $("#Text1").offset().left });

            });

            $("li").click(function () {

                $("#Text1").val($(this).text());

                $("#gg").css("display", "none");

            });

        })

-------------------pannel案例:

 $(function () {

            $("img[alt='a']").click(function () {

                if ($(this).attr("src") == "../img/_8-1.png") {

                    $(this).attr("src", "../img/_8-2.png")

                    $("#gg").slideUp(500);

                }

                else {

                    $(this).attr("src", "../img/_8-1.png")

                    $("#gg").slideDown(500);

                }

            });

        })

------------------------------------------------------------------------------------------------------------------

1.new 父类方法:至关于复制了父类的方法,经过比对,不是重写,因此没有记录到方法表的重写表上。当父类引用指向子类实例时,调用该方法先去重写表上找,若是没找到,说明没被重写,因此继续调用父类的方法;

2.继承,其实是:先将父类复制一份分配内存,在和子类比对,将重写的方法写在loader heap的方法表上,当父类指向子类实例,先检查方法表是否存在重写方法,没有的话,继续调用父

类的。

3,栈:从高位到低位,控件有限,堆,从低位到高位,回收时,不管栈仍是堆,都从低位开始回收,全部就有的先进先出,先进后出之分;

4.进程栈,托管堆:gc堆,存储属性,loader heap:存储方法表、静态变量;生命周期:appdomain结束(应用程序域结束),当>85K时,存在loh上(large object heap)

5.类的静态放在loader heap上,先于实例建立。属性,不管引用仍是值都建立在堆上。方法里的值建立在进程栈上。值类型中的引用对象的建立,还保持原来同样,引用在栈,建立在堆上。

-----------------------------------------------

1:无论是重写仍是覆盖都不会影响父类自身的功能(废话,确定的嘛,除非代码被改)。

 

2:当用子类建立父类的时候,如 C1 c3 = new C2(),重写会改变父类的功能,即调用子类的功能;而覆盖不会,仍然调用父类功能。

 

3:虚方法、实方法均可以被覆盖(new),抽象方法,接口 不能够。

 

4:抽象方法,接口,标记为virtual的方法能够被重写(override),实方法不能够。

 

5:重写使用的频率比较高,实现多态;覆盖用的频率比较低,用于对之前没法修改的类进行继承的时候。

------------------------------------------soap序列化;

class Program

    {

        static void Main(string[] args)

        {

            //与二进制同样

            Company com = new Company();

            com.CompanyName = "软件开发公司";

            com.CompanyID = "1234";

            com.Office = "沈阳";

            XmlTypeMapping map = (new SoapReflectionImporter().ImportTypeMapping(typeof(Company)));

            XmlTextWriter writer = new XmlTextWriter(@"C:\Users\dell\Desktop\123\aa.soap",Encoding.UTF8);

            writer.Formatting = Formatting.Indented;

            XmlSerializer xs = new XmlSerializer(map);

            writer.WriteStartElement("公司信息");

            xs.Serialize(writer, com);

            writer.WriteEndElement();

            writer.Close();

 

           

            XmlTextReader reader = new XmlTextReader(@"C:\Users\dell\Desktop\123\aa.soap");

            reader.ReadStartElement();

            Company ccom;

            ccom =(Company)xs.Deserialize(reader);

            reader.ReadEndElement();

            reader.Close();

            Console.WriteLine(ccom.ToString());

            Console.Read();

        }

    }

}

------------------

using System.Xml.Serialization;

namespace Soap协议

{

   public  class Company//必须是共有的;

    {

        [SoapAttribute(AttributeName="名称")]

        public string CompanyName;

        [SoapElement]//默认名称

        public string Office;

        [SoapIgnore]

        public string CompanyID;

        public override string ToString()

        {

            string m;

            m = "公司名称:" + CompanyName + "\n";

            m += "公司地址:" + Office + "\n";

            m += "公司编号:" + CompanyID;

            return m;

        }

 

    }

}

------------------------------xml序列化

{

    class Program

    {

        static void Main(string[] args)

        {

            //条件:对象必须执行一次不带残的构造函数且必须共有的

            Meetion m = new Meetion("ATA");

            Meetion mm;

            m.roomNum = 505;

            m.invitees = new string[] {"smith","john" };

            XmlSerializer xs = new XmlSerializer(typeof(Meetion));

            StreamWriter sw = new StreamWriter(@"C:\Users\dell\Desktop\123\xml.txt");

            xs.Serialize(sw,m);

            sw.Close();

            StreamReader sr = new StreamReader(@"C:\Users\dell\Desktop\123\xml.txt");

            mm=(Meetion)xs.Deserialize(sr);

            Console.WriteLine(mm.roomNum);

        }

    }

    [XmlRoot(ElementName="会议")]

   public  class Meetion

    {

        private string title;

        [XmlAttribute(AttributeName="房间号")]

        public int roomNum;

        [XmlIgnore]

        public string[] invitees;

        public Meetion()

        {

 

        }

        public Meetion(string t)

        {

            title = t;

        }

    }

}

---------------------------二进制序列化:

using System.Runtime.Serialization.Formatters.Binary;//二进制序列化命名空间

using System.Collections;

using System.IO;

namespace 二进制序列化

{

    class Program

    {

        static void Serialize()

        {

            Hashtable t = new Hashtable();

            //反序列化进行自动排序int升序,字符串降序;

            t.Add(1, "沈阳");

            t.Add(4, "抚顺");

            t.Add(3, "北京");

            BinaryFormatter f = new BinaryFormatter();

            FileStream fs = new FileStream(@"C:\Users\dell\Desktop\123\as.txt", FileMode.Create);

            f.Serialize(fs, t);

            fs.Close();

        }

        /// <summary>

        /// 反序列化

        /// </summary>

        static void DeSerialize()

        {

            Hashtable ht = null;

            BinaryFormatter f = new BinaryFormatter();

            FileStream fs = new FileStream(@"C:\Users\dell\Desktop\123\as.txt", FileMode.Open);

            ht=(Hashtable)f.Deserialize(fs);

            foreach( DictionaryEntry item in ht)

            {

                Console.WriteLine( item.Key.ToString()+item.Value);

            }

           

        }

        static void Main(string[] args)

        {

            Serialize();

            DeSerialize();

            Console.Read();

        }

    }

}

---------------------------------------------打印杨辉三角

  //打印杨辉三角

        static void print(int n)

        {

            int mm = 0;

            Queue<int> q = new Queue<int>();

            Console.Write(space(n));//输出空格

            for (int i = 1; i <= n; i++)

            {

                q.Enqueue(1);

                for (int j = 1; j < i; j++)

                {

                    mm = q.Dequeue();

                    Console.Write(mm + "-");//依次输出每行数字

                    q.Enqueue(mm + q.Peek());

                }

                Console.Write(q.Peek());//输出每行末尾数字  1

                Console.WriteLine();//开始打印下一行

                Console.Write(space(n - i));//输出下一行空格

            }

            Console.Read();

        }

 

---------------------------------------------线程:

using System.Threading;

namespace Thread类

{

    class Program

    {

        //static void Main(string[] args)

        //{

        //    //帮助器委托不带参数

        //    ThreadStart ts = new ThreadStart(DoWork)

        //    for (int i = 1; i <= 3; i++)

        //    {

        //        Thread t = new Thread(ts);

        //        t.Name = "线程"+i.ToString() ;

        //        t.Start();

        //    }

        //    Console.Read();

        //}

        //static void DoWork()

        //{

        //    for (int i = 0; i <= 9; i++)  

        //    {

        //        //不给名字的话,默认为空;

        //        Console.WriteLine(Thread.CurrentThread.Name+"--"+i.ToString());

        //        Thread.Sleep(10);

        //    }

        //}

        //带参数

        static void Main(string[] args)

        {

            //帮助器委托带参数

            ParameterizedThreadStart ts = new ParameterizedThreadStart(DoWork);

            for (int i = 1; i <= 3; i++)

            {

                Thread t = new Thread(ts);

                t.Name = "线程" + i.ToString();

                t.Start(5);//在这里指定参数(隐士转换)

            }

            Console.Read();

        }

        static void DoWork(object obj)

        {

            for (int i = 1; i <=(int)obj; i++)

            {

                //不给名字的话,默认为空;

                Console.WriteLine(Thread.CurrentThread.Name + "--" + i.ToString());

                Thread.Sleep(10);

            }

        }

    }

}

-------------------------------异步:

  class Program

    {

        public delegate int MathDelegate(int x, int y);

        static void Main(string[] args)

        {

           //IAsyncResult

           //异步编程必定要建立委托

            int a = Convert.ToInt32(Console.ReadLine());

            int b = Convert.ToInt32(Console.ReadLine());

            Class1 c1 = new Class1();

            MathDelegate md=new MathDelegate(c1.add);

            IAsyncResult r = md.BeginInvoke(a, b, null, null);

            while (!r.IsCompleted)

            {

                Console.WriteLine("我正在等结果,正在异步操做");

                Console.ReadLine();

            }

            int sum = md.EndInvoke(r);

            Console.WriteLine(su:m);

            Console.ReadLine();

        }

    }

 class Class1

    {

        public int add(int x, int y)

        {

            Thread.Sleep(5000);

            return x+y;

        }

    }

}

--------------------------------回调函数:

  delegate int FDeletate(int n);

        static FDeletate f;

        static void Main(string[] args)

        {

            f = new FDeletate(Fibonacci);

            AsyncCallback callback = new AsyncCallback(Display);//回调委托

            int n = Convert.ToInt32(Console.ReadLine());

            f.BeginInvoke(n, callback,"ggds");

            Console.ReadLine();

        }

        static int Fibonacci(int n)

        {

            if (n <= 1)

            {

                return 0;

            }

            else if (n == 1 || n == 2)

            {

                return n;

            }

            else

                return Fibonacci(n - 1) + Fibonacci(n - 2);

        }

        static void Display(IAsyncResult r)

        {

            int result = f.EndInvoke(r);

            Console.WriteLine("第"+r.AsyncState+"项值是"+result);

            Console.Read();

        }

----------------

Thread类有几个相当重要的方法,描述以下:

Start():启动线程;

Sleep(int):静态方法,暂停当前线程指定的毫秒数;

Abort():一般使用该方法来终止一个线程;

Suspend():该方法并不终止未完成的线程,它仅仅挂起线程,之后还可恢复;

Resume():恢复被Suspend()方法挂起的线程的执行;

------只要是聚合函数就能够用case when;group by 后面能够加t-sql函数;

SELECT count(CASE WHEN CContent>4 THEN NULL ELSE 1 END) FROM DailyCheckRecord GROUP BY datepart(year,CDate)

--------------------------

select count(0):查询结果为1;

----------------------------------------(1):

 [ServiceContract(Name = "name_IUser", Namespace ="http://localhost:3232/wpf/aa")]

-------------------------------------------(2)

  [OperationContract(Name = "name_GetName", Action = "http://localhost:3232/wpf/aa/ServiceContract/GetName")]

--------------------------------(3)

using System.Runtime.Serialization;//datacontract;由此而来;须要添加引用的

--------------------李氏替换;不会剖出异常;

 //[KnownType(typeof(DataItem.SonDataUser))];(体现的是一种多态行处理)

------------------------(4)

  //isrequired:是否必须初始化;order;序列化时顺序;

  [DataMember(Name="name_Name",IsRequired=false,Order=0)]

----------------------------------------------------------

object.Equals("0001/1/1 0:00:00", DateTime.MinValue.ToString()

 

 

-----------------------------------------------------------------------

property与attribute的区别:

property:有getset;button按钮的宽度和高度;

attribute:好比:[serializable]

 

---------------------------------------------------------调用web服务生成成一步操做:必须这样:(异步调用)

 protected void Button1_Click(object sender, EventArgs e)

    {

        ServiceReference1.WebServiceSoapClient a = new ServiceReference1.WebServiceSoapClient();

        a.HellowAsync(new ServiceReference1.HellowRequest(new ServiceReference1.HellowRequestBody(1)));

        a.HellowCompleted += new EventHandler<ServiceReference1.HellowCompletedEventArgs>(a_HellowCompleted);

    }

    public void a_HellowCompleted(object sender, ServiceReference1.HellowCompletedEventArgs e)

    {

        TextBox1.Text ="sff";

    }

------------------同步调用:

   ServiceReference1.WebServiceSoapClient a = new ServiceReference1.WebServiceSoapClient();

            //ServiceReference1.HellowResponse aa = a.Hellow(new ServiceReference1.HellowRequest(new ServiceReference1.HellowRequestBody(2)));

//MessageBox.Show(aa.Body.HellowResult.ToString());

------------------------------------------------------------------------

   if ($("#RadioButton1").attr("checked") ==true) {

                alert("郭泽峰呢个");

            }

------------------------jquery获取dropdownlist的值;

 alert($("#dropProperty").find('option').filter(':selected').text());

var chec kText=$("#select_id").find("option:selected").text();  //获取Select选择的Text

-----------

  if ($("#RadioButton1").attr("checked") == true) {

                isBid = "是";

            }

------------------------js截取字符串;

 var param = hrefStr.substring(hrefStr.indexOf('?') + 1, hrefStr.length);

-------------

 var aa = $("a[href='/AjaxPaging/UpdataModel/" + hdnId + "']").parent().parent().find("td");

                        $(aa).slice(0, 1).text(name);

------------------------进程的Process的命名空间(using System.Diagnostics;)意思是诊断的意思;

 

   var ff = new Function("p1", "alert(p1)");

            ff(2);

---------------------------

  for(var a in arr)

            {

            alert(a);

            }

--------------w3c标准事件;(Ie不支持,其它支持)(注意两个地方不同;)

 document.addEventListener("click", f1);

-------------ie;

  document.attachEvent("onclick",f1);

------------

window.event.clientX,clientY;鼠标在文档的位置;

 

window.event.screenX,screenY;鼠标在浏览器的位置;

window.event.offsetX,offsetY;相对于事件源的位置;

window.event.returnValue=false;取消默认行为;如提交按钮不会提交;

----------------取消事件冒泡:

window.event.cancelBubble=true;

-----------动态建立:

  window.onload = function () {

            var btn = document.createElement("input");

            btn.name = "guo";

            btn.type = "button";

            btn.onclick = function () {

                alert("我去你大爷");

            };

            btn.value = "动态建立";

            var dv = document.getElementById("mm");

            dv.appendChild(btn);

        };

------------document.getelementbyid("").style.background="";

------------

onload与onready的区别:

onload,等documnet和css,js外部文件加载完以后才执行;只能注册一次;

ready:只等document加载完毕以后才执行;可注册多此;能够提升响应速度;

----------

map:对数组遍历;

each:对字典的遍历;

---------------------

  //            $.each(person, function (key, value) {

            //                alert(key+"--"+value);

          > //            }, null);

            $.each(person, function () {alert(this) });//this,指的是值,由于咱们更对值感兴趣;

=--------------\.next("div"):紧邻的第一个;若是没挨着;放回空;

-----。end(),方法返回上一次被破坏的包装集,好比:$("#id").nextall().end(),指的是$("#id")

--

 $("#id").next().andSelf()//报错本身和挨着的;

------去掉第一行:

$("#id tr:not(:first)");去掉第一行;

$("#id tr:not(:first):not(:last):even");各行设置;

-----------------全选;

 $("#checkall").click(function () {

            $(":checkbox[id*=checkbox]").attr("checked", $(this).attr("checked"));

        });

---------------------------05594054   0371

---动态建立子元素;

var a=$("<a  href='sdf'></a>")

a.css();

a.click();

$().append(a);

----------------remove:会移除对象的事件,但不会移除对象的样式;

appendto();就至关于剪切粘贴;

----------$("#id").unbind();移除全部的事件;

.one("click",function(){});注册一次性事件,用完后随即unbind();若是没有参数,就卸载全部的事件;

--------------------------------------------

  $("#Button1").bind("click", function () {

                alert(1);

            });

            $("#Button1").unbind("click");

-----------------------------------------------切换事件;第一次点击显示1,第二次显示2;

  $("#Button1").toggle(function () { alert(1)}, function () { alert(2) });

--------------事件参数能够防止事件冒泡;

$("#id").click(function(e){

  alert("郭");

  e.stopPropagetion();

});

这样在id以外的标签事件就不会触发;

$("#id").click(function(e){

  alert("郭");

  e.preventDefault();//取消控件的默认行为;与return false;不一样的是,后续代码继续执行;好比取消链接的跳转功能;

  alert("则");

});

-------------------

$(document).mousemove(function(e){

 

  $("#di").text(e.pageX+"=="+e.pageY);//获取文档的坐标;

});

----------

$(document).mousemove(function(e){

 

  $("#di").css({"left":e.pageX,"top":e.pageY});//获取文档的坐标;

 

});

 

-----------------扩展方法:

 $.extend({ "max": function (a, b) {

            if (a > b)

                return a;

        }, "min": function () {

            if (a < b)

                return a;

        }

------------------扩展实例方法:

  $.fn.extend({"checked":$(this).attr("checked","true")});

        $(function () {

           alert($.max(55,34));

 

       })

------调用: $("").checked();

----------------------------------

 $(window).width();

 

----------------------cookie:(须要引入cookie.js)

$.cookie("name",value,{expires=10})

----------------------------------frame;

   window.parent.afterEdit();

   var childWindow = $("#frameEdit")[0].contentWindow; //怎么来拿frame标签的一个window对象

                        childWindow.submitEditFrm();

 

---------------------数据绑定;gridview;

DataBinder.Eval(Container.DataItem,"Id")

 

--------------------------------------------------引用样式表;css嵌套引用另外一个css文件;

@import url(cs1.css);

 

-------------------------

 <asp:UpdatePanel ID="UpdatePanel1" runat="server">

            <Triggers>

                <asp:PostBackTrigger ControlID="btnExport" />

            </Triggers>

------------------------------------------必须这样:

 if (!object.Equals(reader["BidDate"], null) && !object.Equals(reader["BidDate"],DBNull.Value))

 if (!object.Equals(reader["BidDate"], null) &&reader["BidDate"].tostring()!="")

 

-------------------------------------------------------------------

1.new 父类方法:至关于复制了父类的方法,经过比对,不是重写,因此没有记录到方法表的重写表上。当父类引用指向子类实例时,调用该方法先去重写表上找,若是没找到,说明没被重写,因此继续调用父类的方法;

2.继承,其实是:先将父类复制一份分配内存,在和子类比对,将重写的方法写在loader heap的方法表上,当父类指向子类实例,先检查方法表是否存在重写方法,没有的话,继续调用父

类的。

3,栈:从高位到低位,控件有限,堆,从低位到高位,回收时,不管栈仍是堆,都从低位开始回收,全部就有的先进先出,先进后出之分;

4.进程栈,托管堆:gc堆,存储属性,loader heap:存储方法表、静态变量;生命周期:appdomain结束(应用程序域结束),当>85K时,存在loh上(large object heap)

5.类的静态放在loader heap上,先于实例建立。属性,不管引用仍是值都建立在堆上。方法里的值建立在进程栈上。值类型中的引用对象的建立,还保持原来同样,引用在栈,建立在堆上。

---------------

----------------导入excel:

using System;

using System.Collections.Generic;

using System.Linq;

using System.Text;

using System.Data;

using Excel;

namespace PM.Frame

{

    public class DataFromExcel

    {

        public static System.Data.DataTable DataTableforExcel(string strExcelFileName, string strSheetName)

        {

            System.Data.DataTable dt = new System.Data.DataTable();

            for (int i = 0; i < 19; i++)

            {

                dt.Columns.Add(new DataColumn());

            }

            Excel.Application excel = new Excel.Application();

            Excel.Workbook m_objBook = (Excel.Workbook)(excel.Workbooks.Add(strExcelFileName));

            Worksheet sheet = null;

            foreach (Worksheet wsheet in m_objBook.Worksheets)

            {

                if (wsheet.Name == strSheetName)

                {

                    sheet = wsheet;

                    break;

                }

            }

            if (sheet != null)

            {

                int row = 2;

                while (true)

                {

                    Range rName = sheet.Cells[row, 1] as Range;

                    if (rName.Text.ToString().Trim().Length == 0)

                    {

                        break;

                    }

                    DataRow dr = dt.NewRow();

                    for (int i = 0; i < 19; i++)

                    {

                        Range rContent = sheet.Cells[row, i + 1] as Range;

                        dr[i] = rContent.Text;

                    }

                    dt.Rows.Add(dr);

                    row += 1;

                }

            }

            excel.Quit();

            return dt;

        }

    }

}

 

//---======================================显示网页图表icon

   <link rel="icon" href="a.ico"  type="image/ico" />

 

 

 

-------------------------------------------------------------------------------------

 //是否选中

 if ($("#CheckBox1").attr("checked"))

 {

    

 }

---------------------------------------------------------------pm导出excel:

 

 

 

//导出报表

    protected void btnExport_Click(object sender, EventArgs e)

    {

        //查询条件得到数据集合;

        System.Data.DataTable ta = qm.GetAllTable(ViewState["queryModel"] as PCardBorrow);

 

        if (ta == null || ta.Rows.Count== 0)

        {

            Messabox.ShowError(this, "无记录导出");

            return;

        }

        string name = "~/File/ExcelFile/证件借阅台帐" + Session.SessionID + ".xls";

        string savePath = Server.MapPath(name);

        bool f = ExportExcel(name,ta, savePath);

        FileInfo DownloadFile = new FileInfo(savePath); //设置要下载的文件

        Response.Clear(); //清除缓冲区流中的全部内容输出

        Response.ClearHeaders(); //清除缓冲区流中的全部头

        Response.Buffer = false; //设置缓冲输出为false

        //设置输出流的 HTTP MIME 类型为application/octet-stream

        Response.ContentType = "application/octet-stream";//将 HTTP 头添加到输出流

        Response.AppendHeader("Content-Disposition", "attachment;filename=" + HttpUtility.UrlEncode("证件借阅台帐.xls", System.Text.Encoding.UTF8));

        //Response.AppendHeader("Content-Length", DownloadFile.Length.ToString());//将指定的文件直接写入 HTTP 内容输出流。

        //Response.WriteFile(DownloadFile.FullName);

        Response.WriteFile(savePath);

        Response.Flush(); //向客户端发送当前全部缓冲的输出

        File.Delete(savePath);//删除文件

        Response.End(); //将当前全部缓冲的输出发送到客户端

    }

    //导出报表

    public bool ExportExcel(string reportName,System.Data.DataTable ta, string saveFileName)

    {

        if (ta == null)

        {

            return false;

        }

        bool fileSaved = false;

        Excel.Application m_objExcel = new Excel.Application();

        if (m_objExcel == null)

        {

            return false;

        }

        Excel.Workbooks m_objBooks = (Excel.Workbooks)m_objExcel.Workbooks;

        Excel.Workbook m_objBook = (Excel.Workbook)(m_objBooks.Add(Excel.XlWBATemplate.xlWBATWorksheet));

        Excel.Sheets m_objSheets = (Excel.Sheets)m_objBook.Worksheets;

        Excel._Worksheet m_objSheet = (Excel._Worksheet)(m_objSheets.get_Item(1));

        m_objSheet.Name = "Sheet1";

        Excel.Range range = null;

        long totalCount =ta.Rows.Count+ 2;

        long colnum = 11;//有12列;

        ((Excel.Range)m_objSheet.Cells).NumberFormatLocal = "@";//修改excel为文本形式

        m_objSheet.get_Range(m_objSheet.Cells[1, 1], m_objSheet.Cells[totalCount, colnum]).Borders.LineStyle = XlLineStyle.xlContinuous;//设置全部表格线;

        ////第一行设置

        m_objExcel.get_Range(m_objSheet.Cells[1, 1], m_objSheet.Cells[1, colnum]).MergeCells = true;//合并单元格

        m_objExcel.get_Range(m_objSheet.Cells[1, 1], m_objSheet.Cells[1, colnum]).HorizontalAlignment = XlHAlign.xlHAlignCenter;//水平对齐方式

        m_objExcel.get_Range(m_objSheet.Cells[1, 1], m_objSheet.Cells[1, colnum]).VerticalAlignment = XlVAlign.xlVAlignCenter;//垂直对齐方式

        m_objExcel.get_Range(m_objSheet.Cells[1, 1], m_objSheet.Cells[1, colnum]).Font.Size = 14;

        m_objSheet.Cells[1, 1] = "证件借阅台帐";

        m_objExcel.get_Range(m_objSheet.Cells[2, 1], m_objSheet.Cells[totalCount, colnum]).ColumnWidth = 20;//设置列的宽度;

        m_objExcel.get_Range(m_objSheet.Cells[2, 1], m_objSheet.Cells[2, colnum]).HorizontalAlignment = XlHAlign.xlHAlignCenter;//水平对齐方式

        m_objExcel.get_Range(m_objSheet.Cells[2, 1], m_objSheet.Cells[2, colnum]).VerticalAlignment = XlVAlign.xlVAlignCenter;//垂直对齐方式

       //设置格式

        for (int i = 1; i <= colnum; i++)

        {

            if (i <= 4 || i >= 10)

            {

                m_objExcel.get_Range(m_objSheet.Cells[2, i], m_objSheet.Cells[3, i]).MergeCells = true;//合并单元格

            }

        }

        m_objExcel.get_Range(m_objSheet.Cells[2, 5], m_objSheet.Cells[2, 7]).MergeCells = true;//合并单元格

        m_objExcel.get_Range(m_objSheet.Cells[2, 8], m_objSheet.Cells[2, 9]).MergeCells = true;//合并单元格

            //设置表头:

        m_objSheet.Cells[2, 1] = "姓名";

        m_objSheet.Cells[2, 2] = "性别";

        m_objSheet.Cells[2, 3] = "证件类型";

        m_objSheet.Cells[2, 4] = "证件名称";

        m_objSheet.Cells[2, 5] = "借阅形式";

        m_objSheet.Cells[2, 6] = "借阅部门或工程";

        m_objSheet.Cells[2, 7] = "借阅人";

        m_objSheet.Cells[2, 8] = "联系方式";

        m_objSheet.Cells[2, 9] = "借阅日期";

        m_objSheet.Cells[2, 10] = "是否归还";

        m_objSheet.Cells[2, 11] = "归还日期";

        //保存文件

        if (saveFileName != "")

        {

            try

            {

                m_objBook.Saved = true;

                m_objBook.SaveCopyAs(saveFileName);

                fileSaved = true;

            }

            catch (Exception ex)

            {

                fileSaved = false;

            }

        }

        else

        {

            fileSaved = false;

        }

        //释放Excel对应的对象

        if (range != null)

        {

            System.Runtime.InteropServices.Marshal.ReleaseComObject(range);

            range = null;

        }

        if (m_objSheet != null)

        {

            System.Runtime.InteropServices.Marshal.ReleaseComObject(m_objSheet);

            m_objSheet = null;

        }

        if (m_objBook != null)

        {

            System.Runtime.InteropServices.Marshal.ReleaseComObject(m_objBook);

            m_objBook = null;

        }

        if (m_objBooks != null)

        {

            System.Runtime.InteropServices.Marshal.ReleaseComObject(m_objBooks);

            m_objBooks = null;

        }

        m_objExcel.Quit();

        if (m_objExcel != null)

        {

            System.Runtime.InteropServices.Marshal.ReleaseComObject(m_objExcel);

            m_objExcel = null;

        }

        GC.Collect();

        return fileSaved;

    }

}

--------------------------------存储过程sql拼接

-- ================================================

-- Template generated from Template Explorer using:

-- Create Procedure (New Menu).SQL

--

-- Use the Specify Values for Template Parameters

-- command (Ctrl-Shift-M) to fill in the parameter

-- values below.

--

-- This block of comments will not be included in

-- the definition of the procedure.

-- ================================================

SET ANSI_NULLS ON

GO

SET QUOTED_IDENTIFIER ON

GO

-- =============================================

-- Author:          <Author,,Name>

-- Create date: <Create Date,,>

-- Description: <Description,,>

-- =============================================

CREATE PROCEDURE [dbo].[PWageBT]

            (

          @PName varchar(100),

          @HBName varchar(50),

          @begintime datetime,

          @OverTime datetime

       )

AS

BEGIN

----查询补贴金额技术

declare @workw money

declare @xxw money

declare @valw money

declare @xgdw money

--加班-工做日

select @workw=View_PWageBT.Wages  from View_PWageBT join PBuTieType on View_PWageBT.WageName=PBuTieType.Id

where PBuTieType.HBName='工做日'

--加班-休息日

select @xxw=View_PWageBT.Wages  from View_PWageBT join PBuTieType on View_PWageBT.WageName=PBuTieType.Id

where PBuTieType.HBName='休息日'

--加班-节假日

select @valw=View_PWageBT.Wages  from View_PWageBT join PBuTieType on View_PWageBT.WageName=PBuTieType.Id

where PBuTieType.HBName='节假日'

--下工地

select @xgdw=PWageSet.Wages  from PWageSet join PBuTieType on convert(int,PWageSet.WageName)=PBuTieType.Id

where PBuTieType.HBName='下工地' and PWageSet.WageType='补贴'

--统计加班数据

declare @str nvarchar(1000)

set @str=

'select *,case when HBName=''加班'' then WorkDays*@workw+RestDays*@xxw+ValDays*@valw else when HBName=''下工地'' then WorkDays*@xgdw end as AllMoney from View_PBTChild where 1=1 '

if(@PName<>'')

  set @str=@str+' and PName LIKE ''%'' + REPLACE(''' + @PName + ''', ''%'', ''/%'') + ''%'' ESCAPE ''/'''

if(@HBName<>'')

  set @str=@str+' and HBName LIKE ''%'' + REPLACE(''' + @HBName + ''', ''%'', ''/%'') + ''%'' ESCAPE ''/'''

if(@begintime<>'')

  set @str=@str+' and BDate>='''+@begintime+''''

if(@OverTime<>'')

   set @str=@str+' and BDate<='''+@OverTime+''''

END

GO

 

--------------------------------经典存储过程(注意将变量用三个单引号或一个单引号都行,字符的话两个单引号,若变量不为字符串,必定要转为字符串在比较)好比;

set @str=

'select *,case when HBName=''加班'' then WorkDays*'+convert(varchar(10),@workw)+'+RestDays*'+convert(varchar(10),@xxw)+'+ValDays*'+convert(varchar(10),@valw)+' when HBName=''下工地'' then WorkDays*'+convert(varchar(10),@xgdw)+' end as AllMoney from View_PBTChild where 1=1 '

if(@PName<>'')

  set @str=@str+' and PName LIKE ''%'' + REPLACE(''' + @PName + ''', ''%'', ''/%'') + ''%'' ESCAPE ''/'''

if(@HBName<>'')

  set @str=@str+' and HBName LIKE ''%'' + REPLACE(''' + @HBName + ''', ''%'', ''/%'') + ''%'' ESCAPE ''/'''

if(@begintime<>'')

  set @str=@str+' and BDate>='''+convert(varchar(100),@begintime)+''''

if(@OverTime<>'')

   set @str=@str+' and BDate<='''+convert(varchar(100),@OverTime)+''''

 EXEC (@str)

END

-------------------------------------

---------------------sql顺序:

select PerId,sum(WorkDays) as xdats from View_PBTChild group by PerId with rollup having 1=1 order by PerId

 

 

--------------------汇总案例

USE [SJCL1]

GO

/****** 对象:  StoredProcedure [dbo].[SZCHuiZong]    脚本日期: 07/07/2013 15:46:25 ******/

SET ANSI_NULLS ON

GO

SET QUOTED_IDENTIFIER ON

GO

 

 

 

ALTER PROCEDURE [dbo].[SZCHuiZong]

@ZhongZhiRiQi   VARCHAR(20),

@QiShiRiQi   VARCHAR(20)

AS

set   nocount   on  

CREATE TABLE #ShouZhiCunMingXi(CLBH [varchar] (50) COLLATE Chinese_PRC_CI_AS NULL,SL [float] NULL,JE [float] NULL,Lie [varchar] (50) COLLATE Chinese_PRC_CI_AS NULL )

CREATE TABLE #T(CLBH [varchar] (50) COLLATE Chinese_PRC_CI_AS NULL,SL [float] NULL,JE [float] NULL )

/*上月结存*/

 

/*初始化的*/

INSERT INTO #T(CLBH,SL,JE) SELECT XTBH, SUM(KCSL) AS SJSL, SUM(KCJE) AS SJJE FROM ZhangWuChuShiHua  GROUP BY XTBH

 

/*入库的*/

INSERT INTO #T(CLBH,SL,JE) SELECT RKD_JH.CLXTBH, SUM(RKD_JH.SL) AS SJSL, SUM(RKD_JH.JE) AS SJJE

 FROM RKD_DJ inner join RKD_JH ON RKD_DJ.DJXTBH=RKD_JH.DJXTBH WHERE RKD_DJ.RQ <@QiShiRiQi GROUP BY RKD_JH.CLXTBH

 

/* 入库退货的*/

INSERT INTO #T(CLBH,SL,JE) SELECT RKTHD_JH.CLXTBH, -SUM(RKTHD_JH.SL) AS SJSL, -SUM(RKTHD_JH.JE) AS SJJE

 FROM RKTHD_DJ inner join RKTHD_JH ON RKTHD_DJ.DJXTBH=RKTHD_JH.DJXTBH WHERE RKTHD_DJ.RQ <@QiShiRiQi GROUP BY RKTHD_JH.CLXTBH

 

/*调拨入库的*/

INSERT INTO #T(CLBH,SL,JE) SELECT DBRKD_JH.CLXTBH, SUM(DBRKD_JH.SL) AS SJSL, SUM(DBRKD_JH.JE) AS SJJE

FROM DBRKD_DJ inner join DBRKD_JH ON DBRKD_DJ.DJXTBH=DBRKD_JH.DJXTBH WHERE DBRKD_DJ.RQ <@QiShiRiQi GROUP BY DBRKD_JH.CLXTBH

 

/*调拨入库退货单*/

INSERT INTO #T(CLBH,SL,JE) SELECT DBRKTHD_JH.CLXTBH, -SUM(DBRKTHD_JH.SL) AS SJSL, -SUM(DBRKTHD_JH.JE) AS SJJE

 FROM DBRKTHD_DJ inner join DBRKTHD_JH ON DBRKTHD_DJ.DJXTBH=DBRKTHD_JH.DJXTBH WHERE DBRKTHD_DJ.RQ <@QiShiRiQi

 GROUP BY DBRKTHD_JH.CLXTBH

 

/*调拨出库的*/

INSERT INTO #T(CLBH,SL,JE) SELECT DBCKD_JH.CLXTBH, -SUM(DBCKD_JH.SL) AS SJSL, -SUM(DBCKD_JH.JE) AS SJJE

 FROM DBCKD_DJ inner join DBCKD_JH ON DBCKD_DJ.DJXTBH=DBCKD_JH.DJXTBH WHERE DBCKD_DJ.RQ <@QiShiRiQi GROUP BY DBCKD_JH.CLXTBH

 

/*调拨出库退货单*/

INSERT INTO #T(CLBH,SL,JE) SELECT DBCKTHD_JH.CLXTBH, SUM(DBCKTHD_JH.SL) AS SJSL, SUM(DBCKTHD_JH.JE) AS SJJE

 FROM DBCKTHD_DJ inner join DBCKTHD_JH ON DBCKTHD_DJ.DJXTBH=DBCKTHD_JH.DJXTBH WHERE DBCKTHD_DJ.RQ <@QiShiRiQi

  GROUP BY DBCKTHD_JH.CLXTBH

 

/*发料的*/

INSERT INTO #T(CLBH,SL,JE) SELECT CKD_JH.CLXTBH,  -SUM(CKD_JH.SL) AS SJSL, -SUM(CKD_JH.JE) AS SJJE FROM CKD_DJ

 inner join CKD_JH ON CKD_DJ.DJXTBH=CKD_JH.CKD_DJ_DJXTBH WHERE CKD_DJ.RQ <@QiShiRiQi GROUP BY CKD_JH.CLXTBH

 

/*发料退回的*/

INSERT INTO #T(CLBH,SL,JE)  SELECT CKTHD_JH.CLXTBH, SUM(CKTHD_JH.SL) AS SJSL, SUM(CKTHD_JH.JE) AS SJJE

 FROM CKTHD_DJ inner join CKTHD_JH ON CKTHD_DJ.DJXTBH=CKTHD_JH.DJXTBH WHERE CKTHD_DJ.RQ <@QiShiRiQi GROUP BY CKTHD_JH.CLXTBH

 

/*盘点的量*/

INSERT INTO #T(CLBH,SL,JE) SELECT CLXTBH, SUM(CheckCount) AS SJSL, SUM(CheckJE) AS SJJE

 FROM StorageCheck WHERE CheckDate <@QiShiRiQi   GROUP BY CLXTBH

 

INSERT INTO #ShouZhiCunMingXi(CLBH,SL,JE,Lie) SELECT CLBH,SUM(SL) AS SL,SUM(JE) AS JE,'上月' AS LB FROM #T GROUP BY CLBH

 

DELETE FROM #T

 

/*本月月结存*/

 

/*初始化的*/

INSERT INTO #T(CLBH,SL,JE) SELECT XTBH, SUM(KCSL) AS SJSL, SUM(KCJE) AS SJJE FROM ZhangWuChuShiHua  GROUP BY XTBH

 

/*入库的*/

INSERT INTO #T(CLBH,SL,JE) SELECT RKD_JH.CLXTBH,  SUM(RKD_JH.SL) AS SJSL, SUM(RKD_JH.JE) AS SJJE

 FROM RKD_DJ inner join RKD_JH ON RKD_DJ.DJXTBH=RKD_JH.DJXTBH WHERE RKD_DJ.RQ <= @ZhongZhiRiQi GROUP BY RKD_JH.CLXTBH

 

/* 入库退货的*/

INSERT INTO #T(CLBH,SL,JE) SELECT RKTHD_JH.CLXTBH, -SUM(RKTHD_JH.SL) AS SJSL, -SUM(RKTHD_JH.JE) AS SJJE

 FROM RKTHD_DJ inner join RKTHD_JH ON RKTHD_DJ.DJXTBH=RKTHD_JH.DJXTBH WHERE RKTHD_DJ.RQ <= @ZhongZhiRiQi GROUP BY RKTHD_JH.CLXTBH

 

/*调拨入库的*/

INSERT INTO #T(CLBH,SL,JE) SELECT DBRKD_JH.CLXTBH, SUM(DBRKD_JH.SL) AS SJSL, SUM(DBRKD_JH.JE) AS SJJE

 FROM DBRKD_DJ inner join DBRKD_JH ON DBRKD_DJ.DJXTBH=DBRKD_JH.DJXTBH WHERE DBRKD_DJ.RQ <= @ZhongZhiRiQi

  GROUP BY DBRKD_JH.CLXTBH

 

/*调拨入库退货单*/

INSERT INTO #T(CLBH,SL,JE) SELECT DBRKTHD_JH.CLXTBH, -SUM(DBRKTHD_JH.SL) AS SJSL, -SUM(DBRKTHD_JH.JE) AS SJJE

FROM DBRKTHD_DJ inner join DBRKTHD_JH ON DBRKTHD_DJ.DJXTBH=DBRKTHD_JH.DJXTBH WHERE DBRKTHD_DJ.RQ <= @ZhongZhiRiQi

GROUP BY DBRKTHD_JH.CLXTBH

 

/*调拨出库的*/

INSERT INTO #T(CLBH,SL,JE) SELECT DBCKD_JH.CLXTBH, -SUM(DBCKD_JH.SL) AS SJSL, -SUM(DBCKD_JH.JE) AS SJJE

 FROM DBCKD_DJ inner join DBCKD_JH ON DBCKD_DJ.DJXTBH=DBCKD_JH.DJXTBH WHERE DBCKD_DJ.RQ <= @ZhongZhiRiQi

  GROUP BY DBCKD_JH.CLXTBH

 

/*调拨出库退货单*/

INSERT INTO #T(CLBH,SL,JE) SELECT DBCKTHD_JH.CLXTBH, SUM(DBCKTHD_JH.SL) AS SJSL, SUM(DBCKTHD_JH.JE) AS SJJE

 FROM DBCKTHD_DJ inner join DBCKTHD_JH ON DBCKTHD_DJ.DJXTBH=DBCKTHD_JH.DJXTBH WHERE DBCKTHD_DJ.RQ <= @ZhongZhiRiQi

 GROUP BY DBCKTHD_JH.CLXTBH

 

/*发料的*/

INSERT INTO #T(CLBH,SL,JE) SELECT CKD_JH.CLXTBH, -SUM(CKD_JH.SL) AS SJSL, -SUM(CKD_JH.JE) AS SJJE

 FROM CKD_DJ inner join CKD_JH ON CKD_DJ.DJXTBH=CKD_JH.CKD_DJ_DJXTBH WHERE CKD_DJ.RQ <= @ZhongZhiRiQi

  GROUP BY CKD_JH.CLXTBH

 

/*发料退回的*/

INSERT INTO #T(CLBH,SL,JE)  SELECT CKTHD_JH.CLXTBH, SUM(CKTHD_JH.SL) AS SJSL, SUM(CKTHD_JH.JE) AS SJJE

FROM CKTHD_DJ inner join CKTHD_JH ON CKTHD_DJ.DJXTBH=CKTHD_JH.DJXTBH WHERE CKTHD_DJ.RQ <= @ZhongZhiRiQi

 GROUP BY CKTHD_JH.CLXTBH

 

/*盘点的量*/

INSERT INTO #T(CLBH,SL,JE) SELECT CLXTBH, SUM(CheckCount) AS SJSL, SUM(CheckJE) AS SJJE FROM StorageCheck

WHERE CheckDate <=@ZhongZhiRiQi   GROUP BY CLXTBH

 

INSERT INTO #ShouZhiCunMingXi(CLBH,SL,JE,Lie) SELECT CLBH,SUM(SL) AS SL,SUM(JE) AS JE,'本月' AS LB FROM #T GROUP BY CLBH

 

DELETE FROM #T

 

 

/*本月入库*/

 

/*入库的*/

INSERT INTO #T(CLBH,SL,JE) SELECT RKD_JH.CLXTBH, SUM(RKD_JH.SL) AS SJSL, SUM(RKD_JH.JE) AS SJJE

 FROM RKD_DJ inner join RKD_JH ON RKD_DJ.DJXTBH=RKD_JH.DJXTBH WHERE RKD_DJ.RQ BETWEEN @QiShiRiQi AND @ZhongZhiRiQi

 GROUP BY RKD_JH.CLXTBH

 

/* 入库退货的*/

INSERT INTO #T(CLBH,SL,JE) SELECT RKTHD_JH.CLXTBH, -SUM(RKTHD_JH.SL) AS SJSL, -SUM(RKTHD_JH.JE) AS SJJE

FROM RKTHD_DJ inner join RKTHD_JH ON RKTHD_DJ.DJXTBH=RKTHD_JH.DJXTBH WHERE RKTHD_DJ.RQ BETWEEN @QiShiRiQi AND @ZhongZhiRiQi

GROUP BY RKTHD_JH.CLXTBH

 

/*调拨入库的*/

INSERT INTO #T(CLBH,SL,JE) SELECT DBRKD_JH.CLXTBH, SUM(DBRKD_JH.SL) AS SJSL, SUM(DBRKD_JH.JE) AS SJJE

FROM DBRKD_DJ inner join DBRKD_JH ON DBRKD_DJ.DJXTBH=DBRKD_JH.DJXTBH

 WHERE DBRKD_DJ.RQ BETWEEN @QiShiRiQi AND @ZhongZhiRiQi GROUP BY DBRKD_JH.CLXTBH

 

/*调拨入库退货单*/

INSERT INTO #T(CLBH,SL,JE) SELECT DBRKTHD_JH.CLXTBH, -SUM(DBRKTHD_JH.SL) AS SJSL, -SUM(DBRKTHD_JH.JE) AS SJJE

 FROM DBRKTHD_DJ inner join DBRKTHD_JH ON DBRKTHD_DJ.DJXTBH=DBRKTHD_JH.DJXTBH WHERE DBRKTHD_DJ.RQ

  BETWEEN @QiShiRiQi AND @ZhongZhiRiQi GROUP BY DBRKTHD_JH.CLXTBH

 

INSERT INTO #ShouZhiCunMingXi(CLBH,SL,JE,Lie) SELECT CLBH,SUM(SL) AS SL,SUM(JE) AS JE,'入库' AS LB FROM #T GROUP BY CLBH

 

DELETE FROM #T

 

/*本月出库的*/

 

/*发料的*/

INSERT INTO #T(CLBH,SL,JE) SELECT CKD_JH.CLXTBH, SUM(CKD_JH.SL) AS SJSL, SUM(CKD_JH.JE) AS SJJE

 FROM CKD_DJ inner join CKD_JH ON CKD_DJ.DJXTBH=CKD_JH.CKD_DJ_DJXTBH

 WHERE CKD_DJ.RQ BETWEEN @QiShiRiQi AND @ZhongZhiRiQi GROUP BY CKD_JH.CLXTBH

 

/*发料退回的*/

INSERT INTO #T(CLBH,SL,JE)  SELECT CKTHD_JH.CLXTBH, -SUM(CKTHD_JH.SL) AS SJSL, -SUM(CKTHD_JH.JE) AS SJJE

FROM CKTHD_DJ inner join CKTHD_JH ON CKTHD_DJ.DJXTBH=CKTHD_JH.DJXTBH

 WHERE CKTHD_DJ.RQ BETWEEN @QiShiRiQi AND @ZhongZhiRiQi GROUP BY CKTHD_JH.CLXTBH

 

/*调拨出库的*/

INSERT INTO #T(CLBH,SL,JE) SELECT DBCKD_JH.CLXTBH, SUM(DBCKD_JH.SL) AS SJSL, SUM(DBCKD_JH.JE) AS SJJE

 FROM DBCKD_DJ inner join DBCKD_JH ON DBCKD_DJ.DJXTBH=DBCKD_JH.DJXTBH

  WHERE DBCKD_DJ.RQ BETWEEN @QiShiRiQi AND @ZhongZhiRiQi GROUP BY DBCKD_JH.CLXTBH

 

/*调拨出库退货单*/

INSERT INTO #T(CLBH,SL,JE) SELECT DBCKTHD_JH.CLXTBH, -SUM(DBCKTHD_JH.SL) AS SJSL, -SUM(DBCKTHD_JH.JE) AS SJJE

 FROM DBCKTHD_DJ inner join DBCKTHD_JH ON DBCKTHD_DJ.DJXTBH=DBCKTHD_JH.DJXTBH

  WHERE DBCKTHD_DJ.RQ BETWEEN @QiShiRiQi AND @ZhongZhiRiQi GROUP BY DBCKTHD_JH.CLXTBH

 

INSERT INTO #ShouZhiCunMingXi(CLBH,SL,JE,Lie) SELECT CLBH,SUM(SL) AS SL,SUM(JE) AS JE,'出库' AS LB FROM #T GROUP BY CLBH

 

DELETE FROM #T

 

 

--第一步:根据系统编号、列、单价分组求和

select CLBH,sum(SL) as SL,sum(JE) as JE,Lie

                            into #TempSZCMX

 from #ShouZhiCunMingXi group by Lie, CLBH  order by Lie,CLBH

 

 

 --第二步:列转行,分组求和

SELECT YJ,EJ,

         MoJi=(CASE WHEN grouping(YJ) = 1 THEN '0' 

                            WHEN grouping(EJ) = 1 THEN [YJ]

                            WHEN grouping(MoJi) = 1 THEN [EJ] ELSE MoJi END),

sum(SYSL) SYSL,SUM(SYJE) SYJE,SUM(BYSL) BYSL,SUM(BYJE) BYJE,

SUM(CKSL) CKSL,SUM(CKJE) CKJE,SUM(RKSL) RKSL,SUM(RKJE) RKJE

into SysCl.##TempLastResults

from

(

select CaiLiaoXinxi_1.SJ AS YJ,CaiLiaoXinxi_1.BH AS EJ,CaiLiaoXinxi.BH AS MoJi,

sum(case Lie when '上月' then SL else 0 end) as 'SYSL',

                            sum(case Lie when '上月' then JE else 0 end) as 'SYJE',

                            sum(case Lie when '本月' then SL else 0 end) as 'BYSL',

                            sum(case Lie when '本月' then JE else 0 end) as 'BYJE',

                            sum(case Lie when '出库' then SL else 0 end) as 'CKSL',

                            sum(case Lie when '出库' then JE else 0 end) as 'CKJE',

                            sum(case Lie when '入库' then SL else 0 end) as 'RKSL',

                            sum(case Lie when '入库' then JE else 0 end) as 'RKJE'

                            from #TempSZCMX inner join CaiLiaoXinxi ON #TempSZCMX.CLBH =CaiLiaoXinxi.XTBH

                            INNER JOIN CaiLiaoXinxi  CaiLiaoXinxi_1 ON CaiLiaoXinxi.SJ=CaiLiaoXinxi_1.BH

                            GROUP BY CaiLiaoXinxi.BH ,CaiLiaoXinxi_1.BH,CaiLiaoXinxi_1.SJ ) as MingXi

                            group by YJ,EJ,MoJi with rollup

 

 

set   nocount   off

----------------------------汇总案例(材料)

ALTER PROCEDURE [dbo].[TeShuJiJia] 

@ZhongZhiRiQi   VARCHAR(20),

@QiShiRiQi   VARCHAR(20),

@LeiBie   VARCHAR(100),

@IsYD   bit

 AS

set   nocount   on  

CREATE TABLE #ShouZhiCunMingXi(CLBH [varchar] (50) COLLATE Chinese_PRC_CI_AS NULL,DJ [float] NULL,

SL [float] NULL,JE [float] NULL,Lie [varchar] (50) COLLATE Chinese_PRC_CI_AS NULL )

CREATE TABLE #T(CLBH [varchar] (50) COLLATE Chinese_PRC_CI_AS NULL,DJ [float] NULL,SL [float] NULL,JE [float] NULL )

create table #lastResult(CLBH [varchar] (50) collate Chinese_PRC_CI_AS null,

                                                        SYSL [float] null,

                                                        SYJE [float] null,

                                                        BYSL [float] null,

                                                        BYJE [float] null,

                                                        CKSL [float] null,

                                                        CKJE [float] null,

                                                        RKSL [float] null,

                                                        RKJE [float] null)

create table #TempLastResults(YJ [varchar](50),EJ [varchar](50),MoJi [varchar](50),DJ [FLOAT] DEFAULT 0,

SYSL  [FLOAT] DEFAULT 0,SYJE  [FLOAT] DEFAULT 0,BYSL [FLOAT] DEFAULT 0,BYJE [FLOAT] DEFAULT 0,

CKSL [FLOAT] DEFAULT 0,CKJE [FLOAT] DEFAULT 0,RKSL [FLOAT] DEFAULT 0,RKJE [FLOAT] DEFAULT 0)

/*上月结存*/

 

 

if(@IsYD='true')

begin

/*含预点的入库单*/

INSERT INTO #T(CLBH,DJ,SL,JE) SELECT YDRKD_JH.CLXTBH, YDRKD_JH.DJ, SUM(YDRKD_JH.SL) AS SJSL, SUM(YDRKD_JH.JE) AS SJJE

 FROM YDRKD_DJ inner join YDRKD_JH ON YDRKD_DJ.DJXTBH=YDRKD_JH.DJXTBH

WHERE YDRKD_DJ.RQ <@QiShiRiQi GROUP BY YDRKD_JH.CLXTBH, YDRKD_JH.DJ

 

/*含预点的发料单*/

INSERT INTO #T(CLBH,DJ,SL,JE) SELECT YDCKD_JH.CLXTBH, YDCKD_JH.KCDJ, -SUM(YDCKD_JH.SL) AS SJSL,

 -SUM(YDCKD_JH.JE) AS SJJE FROM YDCKD_DJ inner join YDCKD_JH ON YDCKD_DJ.DJXTBH=YDCKD_JH.CKD_DJ_DJXTBH

  WHERE YDCKD_DJ.RQ <@QiShiRiQi GROUP BY YDCKD_JH.CLXTBH, YDCKD_JH.KCDJ

 

end

 

/*初始化的*/

INSERT INTO #T(CLBH,DJ,SL,JE) SELECT XTBH, KCDJ, SUM(KCSL) AS SJSL, SUM(KCJE) AS SJJE FROM ZhangWuChuShiHua

  GROUP BY XTBH, KCDJ

 

/*入库的*/

INSERT INTO #T(CLBH,DJ,SL,JE) SELECT RKD_JH.CLXTBH, RKD_JH.DJ, SUM(RKD_JH.SL) AS SJSL, SUM(RKD_JH.JE) AS SJJE

 FROM RKD_DJ inner join RKD_JH ON RKD_DJ.DJXTBH=RKD_JH.DJXTBH WHERE RKD_DJ.RQ <@QiShiRiQi GROUP BY RKD_JH.CLXTBH, RKD_JH.DJ

 

/* 入库退货的*/

INSERT INTO #T(CLBH,DJ,SL,JE) SELECT RKTHD_JH.CLXTBH, RKTHD_JH.DJ, -SUM(RKTHD_JH.SL) AS SJSL, -SUM(RKTHD_JH.JE) AS SJJE

FROM RKTHD_DJ inner join RKTHD_JH ON RKTHD_DJ.DJXTBH=RKTHD_JH.DJXTBH WHERE RKTHD_DJ.RQ <@QiShiRiQi

 GROUP BY RKTHD_JH.CLXTBH, RKTHD_JH.DJ

 

/*调拨入库的*/

INSERT INTO #T(CLBH,DJ,SL,JE) SELECT DBRKD_JH.CLXTBH, DBRKD_JH.DJ, SUM(DBRKD_JH.SL) AS SJSL,

 SUM(DBRKD_JH.JE) AS SJJE FROM DBRKD_DJ inner join DBRKD_JH ON DBRKD_DJ.DJXTBH=DBRKD_JH.DJXTBH WHERE DBRKD_DJ.RQ <@QiShiRiQi

  GROUP BY DBRKD_JH.CLXTBH, DBRKD_JH.DJ

 

/*调拨入库退货单*/

INSERT INTO #T(CLBH,DJ,SL,JE) SELECT DBRKTHD_JH.CLXTBH, DBRKTHD_JH.DJ, -SUM(DBRKTHD_JH.SL) AS SJSL,

 -SUM(DBRKTHD_JH.JE) AS SJJE FROM DBRKTHD_DJ inner join DBRKTHD_JH ON DBRKTHD_DJ.DJXTBH=DBRKTHD_JH.DJXTBH

 WHERE DBRKTHD_DJ.RQ <@QiShiRiQi GROUP BY DBRKTHD_JH.CLXTBH, DBRKTHD_JH.DJ

 

/*调拨出库的*/

INSERT INTO #T(CLBH,DJ,SL,JE) SELECT DBCKD_JH.CLXTBH, DBCKD_JH.KCDJ, -SUM(DBCKD_JH.SL) AS SJSL,

 -SUM(DBCKD_JH.JE) AS SJJE FROM DBCKD_DJ inner join DBCKD_JH ON DBCKD_DJ.DJXTBH=DBCKD_JH.DJXTBH

  WHERE DBCKD_DJ.RQ <@QiShiRiQi GROUP BY DBCKD_JH.CLXTBH, DBCKD_JH.KCDJ

 

/*调拨出库退货单*/

INSERT INTO #T(CLBH,DJ,SL,JE) SELECT DBCKTHD_JH.CLXTBH, DBCKTHD_JH.KCDJ, SUM(DBCKTHD_JH.SL) AS SJSL,

 SUM(DBCKTHD_JH.JE) AS SJJE FROM DBCKTHD_DJ inner join DBCKTHD_JH ON DBCKTHD_DJ.DJXTBH=DBCKTHD_JH.DJXTBH

  WHERE DBCKTHD_DJ.RQ <@QiShiRiQi GROUP BY DBCKTHD_JH.CLXTBH, DBCKTHD_JH.KCDJ

 

/*发料的*/

INSERT INTO #T(CLBH,DJ,SL,JE) SELECT CKD_JH.CLXTBH, CKD_JH.KCDJ, -SUM(CKD_JH.SL) AS SJSL,

 -SUM(CKD_JH.JE) AS SJJE FROM CKD_DJ inner join CKD_JH ON CKD_DJ.DJXTBH=CKD_JH.CKD_DJ_DJXTBH

  WHERE CKD_DJ.RQ <@QiShiRiQi GROUP BY CKD_JH.CLXTBH, CKD_JH.KCDJ

 

/*发料退回的*/

INSERT INTO #T(CLBH,DJ,SL,JE)  SELECT CKTHD_JH.CLXTBH, CKTHD_JH.KCDJ, SUM(CKTHD_JH.SL) AS SJSL,

 SUM(CKTHD_JH.JE) AS SJJE FROM CKTHD_DJ inner join CKTHD_JH ON CKTHD_DJ.DJXTBH=CKTHD_JH.DJXTBH

  WHERE CKTHD_DJ.RQ <@QiShiRiQi GROUP BY CKTHD_JH.CLXTBH, CKTHD_JH.KCDJ

 

/*盘点的量*/

INSERT INTO #T(CLBH,DJ,SL,JE) SELECT CLXTBH, KCDJ, SUM(DifferenceCount) AS SJSL, SUM(DifferenceCount*KCDJ) AS SJJE

 FROM StorageCheck WHERE CheckDate <@QiShiRiQi   GROUP BY CLXTBH, KCDJ

 

INSERT INTO #ShouZhiCunMingXi(CLBH,DJ,SL,JE,Lie) SELECT CLBH,DJ,SUM(SL) AS SL,SUM(JE) AS JE,'上月' AS LB

 FROM #T GROUP BY CLBH,DJ

 

DELETE FROM #T

 

/*本月月结存*/

 

 

if(@IsYD='true')

begin

/*含预点的入库单*/

INSERT INTO #T(CLBH,DJ,SL,JE) SELECT YDRKD_JH.CLXTBH, YDRKD_JH.DJ, SUM(YDRKD_JH.SL) AS SJSL, SUM(YDRKD_JH.JE) AS SJJE

 FROM YDRKD_DJ inner join YDRKD_JH ON YDRKD_DJ.DJXTBH=YDRKD_JH.DJXTBH

  WHERE YDRKD_DJ.RQ <= @ZhongZhiRiQi  GROUP BY YDRKD_JH.CLXTBH, YDRKD_JH.DJ

 

/*含预点的发料单*/

INSERT INTO #T(CLBH,DJ,SL,JE) SELECT YDCKD_JH.CLXTBH, YDCKD_JH.KCDJ, -SUM(YDCKD_JH.SL) AS SJSL,

 -SUM(YDCKD_JH.JE) AS SJJE FROM YDCKD_DJ inner join YDCKD_JH ON YDCKD_DJ.DJXTBH=YDCKD_JH.CKD_DJ_DJXTBH

  WHERE YDCKD_DJ.RQ <= @ZhongZhiRiQi  GROUP BY YDCKD_JH.CLXTBH, YDCKD_JH.KCDJ

 

end

 

 

/*初始化的*/

INSERT INTO #T(CLBH,DJ,SL,JE) SELECT XTBH, KCDJ, SUM(KCSL) AS SJSL, SUM(KCJE) AS SJJE

FROM ZhangWuChuShiHua  GROUP BY XTBH, KCDJ

 

/*入库的*/

INSERT INTO #T(CLBH,DJ,SL,JE) SELECT RKD_JH.CLXTBH, RKD_JH.DJ, SUM(RKD_JH.SL) AS SJSL,

 SUM(RKD_JH.JE) AS SJJE FROM RKD_DJ inner join RKD_JH ON RKD_DJ.DJXTBH=RKD_JH.DJXTBH

  WHERE RKD_DJ.RQ <= @ZhongZhiRiQi GROUP BY RKD_JH.CLXTBH, RKD_JH.DJ

 

/* 入库退货的*/

INSERT INTO #T(CLBH,DJ,SL,JE) SELECT RKTHD_JH.CLXTBH, RKTHD_JH.DJ, -SUM(RKTHD_JH.SL) AS SJSL,

-SUM(RKTHD_JH.JE) AS SJJE FROM RKTHD_DJ inner join RKTHD_JH ON RKTHD_DJ.DJXTBH=RKTHD_JH.DJXTBH

WHERE RKTHD_DJ.RQ <= @ZhongZhiRiQi GROUP BY RKTHD_JH.CLXTBH, RKTHD_JH.DJ

 

/*调拨入库的*/

INSERT INTO #T(CLBH,DJ,SL,JE) SELECT DBRKD_JH.CLXTBH, DBRKD_JH.DJ, SUM(DBRKD_JH.SL) AS SJSL,

SUM(DBRKD_JH.JE) AS SJJE FROM DBRKD_DJ inner join DBRKD_JH ON DBRKD_DJ.DJXTBH=DBRKD_JH.DJXTBH

WHERE DBRKD_DJ.RQ <= @ZhongZhiRiQi GROUP BY DBRKD_JH.CLXTBH, DBRKD_JH.DJ

 

/*调拨入库退货单*/

INSERT INTO #T(CLBH,DJ,SL,JE) SELECT DBRKTHD_JH.CLXTBH, DBRKTHD_JH.DJ, -SUM(DBRKTHD_JH.SL) AS SJSL,

 -SUM(DBRKTHD_JH.JE) AS SJJE FROM DBRKTHD_DJ inner join DBRKTHD_JH ON DBRKTHD_DJ.DJXTBH=DBRKTHD_JH.DJXTBH

 WHERE DBRKTHD_DJ.RQ <= @ZhongZhiRiQi GROUP BY DBRKTHD_JH.CLXTBH, DBRKTHD_JH.DJ

 

/*调拨出库的*/

INSERT INTO #T(CLBH,DJ,SL,JE) SELECT DBCKD_JH.CLXTBH, DBCKD_JH.KCDJ, -SUM(DBCKD_JH.SL) AS SJSL,

 -SUM(DBCKD_JH.JE) AS SJJE FROM DBCKD_DJ inner join DBCKD_JH ON DBCKD_DJ.DJXTBH=DBCKD_JH.DJXTBH

  WHERE DBCKD_DJ.RQ <= @ZhongZhiRiQi GROUP BY DBCKD_JH.CLXTBH, DBCKD_JH.KCDJ

 

/*调拨出库退货单*/

INSERT INTO #T(CLBH,DJ,SL,JE) SELECT DBCKTHD_JH.CLXTBH, DBCKTHD_JH.KCDJ, SUM(DBCKTHD_JH.SL) AS SJSL,

 SUM(DBCKTHD_JH.JE) AS SJJE FROM DBCKTHD_DJ inner join DBCKTHD_JH ON DBCKTHD_DJ.DJXTBH=DBCKTHD_JH.DJXTBH

  WHERE DBCKTHD_DJ.RQ <= @ZhongZhiRiQi GROUP BY DBCKTHD_JH.CLXTBH, DBCKTHD_JH.KCDJ

 

/*发料的*/

INSERT INTO #T(CLBH,DJ,SL,JE) SELECT CKD_JH.CLXTBH, CKD_JH.KCDJ, -SUM(CKD_JH.SL) AS SJSL,

-SUM(CKD_JH.JE) AS SJJE FROM CKD_DJ inner join CKD_JH ON CKD_DJ.DJXTBH=CKD_JH.CKD_DJ_DJXTBH

WHERE CKD_DJ.RQ <= @ZhongZhiRiQi GROUP BY CKD_JH.CLXTBH, CKD_JH.KCDJ

 

/*发料退回的*/

INSERT INTO #T(CLBH,DJ,SL,JE)  SELECT CKTHD_JH.CLXTBH, CKTHD_JH.KCDJ, SUM(CKTHD_JH.SL) AS SJSL,

SUM(CKTHD_JH.JE) AS SJJE FROM CKTHD_DJ inner join CKTHD_JH ON CKTHD_DJ.DJXTBH=CKTHD_JH.DJXTBH

WHERE CKTHD_DJ.RQ <= @ZhongZhiRiQi GROUP BY CKTHD_JH.CLXTBH, CKTHD_JH.KCDJ

 

/*盘点的量*/

INSERT INTO #T(CLBH,DJ,SL,JE) SELECT CLXTBH, KCDJ, SUM(DifferenceCount) AS SJSL, SUM(DifferenceCount*KCDJ) AS SJJE

 FROM StorageCheck WHERE CheckDate <=@ZhongZhiRiQi   GROUP BY CLXTBH, KCDJ

 

INSERT INTO #ShouZhiCunMingXi(CLBH,DJ,SL,JE,Lie) SELECT CLBH,DJ,SUM(SL) AS SL,SUM(JE) AS JE,'本月' AS LB

FROM #T GROUP BY CLBH,DJ

 

DELETE FROM #T

 

 

/*本月入库*/

 

 

if(@IsYD='true')

begin

/*含预点的入库单*/

INSERT INTO #T(CLBH,DJ,SL,JE) SELECT YDRKD_JH.CLXTBH, YDRKD_JH.DJ, SUM(YDRKD_JH.SL) AS SJSL, SUM(YDRKD_JH.JE) AS SJJE

 FROM YDRKD_DJ inner join YDRKD_JH ON YDRKD_DJ.DJXTBH=YDRKD_JH.DJXTBH

  WHERE YDRKD_DJ.RQ BETWEEN @QiShiRiQi AND @ZhongZhiRiQi GROUP BY YDRKD_JH.CLXTBH, YDRKD_JH.DJ

/*直进直出入库*/

 INSERT INTO #T(CLBH,DJ,SL,JE) SELECT YDZJZC_JH.CLXTBH,YDZJZC_JH.CGDJ, sum(YDZJZC_JH.SL) as SJSL,sum(YDZJZC_JH.CGJE) as SJJE

FROM  YDRKD_DJ INNER JOIN YDZJZC_JH ON YDRKD_DJ.DJXTBH = YDZJZC_JH.DJXTBH WHERE YDRKD_DJ.RQ BETWEEN @QiShiRiQi AND @ZhongZhiRiQi GROUP BY YDZJZC_JH.CLXTBH,YDZJZC_JH.CGDJ

 

 

end

 

/*入库的*/

INSERT INTO #T(CLBH,DJ,SL,JE) SELECT RKD_JH.CLXTBH, RKD_JH.DJ, SUM(RKD_JH.SL) AS SJSL,

 SUM(RKD_JH.JE) AS SJJE FROM RKD_DJ inner join RKD_JH ON RKD_DJ.DJXTBH=RKD_JH.DJXTBH

  WHERE RKD_DJ.RQ BETWEEN @QiShiRiQi AND @ZhongZhiRiQi GROUP BY RKD_JH.CLXTBH, RKD_JH.DJ

 

/* 入库退货的*/

INSERT INTO #T(CLBH,DJ,SL,JE) SELECT RKTHD_JH.CLXTBH, RKTHD_JH.DJ, -SUM(RKTHD_JH.SL) AS SJSL,

 -SUM(RKTHD_JH.JE) AS SJJE FROM RKTHD_DJ inner join RKTHD_JH ON RKTHD_DJ.DJXTBH=RKTHD_JH.DJXTBH

  WHERE RKTHD_DJ.RQ BETWEEN @QiShiRiQi AND @ZhongZhiRiQi GROUP BY RKTHD_JH.CLXTBH, RKTHD_JH.DJ

 

/*调拨入库的*/

INSERT INTO #T(CLBH,DJ,SL,JE) SELECT DBRKD_JH.CLXTBH, DBRKD_JH.DJ, SUM(DBRKD_JH.SL) AS SJSL,

SUM(DBRKD_JH.JE) AS SJJE FROM DBRKD_DJ inner join DBRKD_JH ON DBRKD_DJ.DJXTBH=DBRKD_JH.DJXTBH

 WHERE DBRKD_DJ.RQ BETWEEN @QiShiRiQi AND @ZhongZhiRiQi GROUP BY DBRKD_JH.CLXTBH, DBRKD_JH.DJ

 

/*调拨入库退货单*/

INSERT INTO #T(CLBH,DJ,SL,JE) SELECT DBRKTHD_JH.CLXTBH, DBRKTHD_JH.DJ, -SUM(DBRKTHD_JH.SL) AS SJSL,

 -SUM(DBRKTHD_JH.JE) AS SJJE FROM DBRKTHD_DJ inner join DBRKTHD_JH ON DBRKTHD_DJ.DJXTBH=DBRKTHD_JH.DJXTBH

  WHERE DBRKTHD_DJ.RQ BETWEEN @QiShiRiQi AND @ZhongZhiRiQi GROUP BY DBRKTHD_JH.CLXTBH, DBRKTHD_JH.DJ

/*直进直出入库*/

 INSERT INTO #T(CLBH,DJ,SL,JE) SELECT ZJZC_JH.CLXTBH,ZJZC_JH.CGDJ, sum(ZJZC_JH.SL) as SJSL,sum(ZJZC_JH.CGJE) as SJJE

FROM  ZJZC_DJ INNER JOIN ZJZC_JH ON ZJZC_DJ.DJXTBH = ZJZC_JH.DJXTBH WHERE ZJZC_DJ.RQ BETWEEN @QiShiRiQi AND @ZhongZhiRiQi GROUP BY ZJZC_JH.CLXTBH,ZJZC_JH.CGDJ

/*直进直出入库退货*/

 INSERT INTO #T(CLBH,DJ,SL,JE) SELECT ZJZCTH_JH.CLXTBH, ZJZCTH_JH.CGTHDJ,-sum(ZJZCTH_JH.SL) as SJSL,-sum(ZJZCTH_JH.CGTHJE) as SJJE

FROM  ZJZCTH_DJ INNER JOIN ZJZCTH_JH ON ZJZCTH_DJ.DJXTBH = ZJZCTH_JH.DJXTBH WHERE ZJZCTH_DJ.RQ BETWEEN @QiShiRiQi AND @ZhongZhiRiQi GROUP BY ZJZCTH_JH.CLXTBH,ZJZCTH_JH.CGTHDJ

 

INSERT INTO #ShouZhiCunMingXi(CLBH,DJ,SL,JE,Lie) SELECT CLBH,DJ,SUM(SL) AS SL,SUM(JE) AS JE,'入库' AS LB

 FROM #T GROUP BY CLBH,DJ

 

DELETE FROM #T

 

/*本月出库的*/

 

 

if(@IsYD='true')

begin

 

/*含预点的发料单*/

INSERT INTO #T(CLBH,DJ,SL,JE) SELECT YDCKD_JH.CLXTBH, YDCKD_JH.KCDJ, SUM(YDCKD_JH.SL) AS SJSL,

 SUM(YDCKD_JH.JE) AS SJJE FROM YDCKD_DJ inner join YDCKD_JH ON YDCKD_DJ.DJXTBH=YDCKD_JH.CKD_DJ_DJXTBH

WHERE YDCKD_DJ.RQ BETWEEN @QiShiRiQi AND @ZhongZhiRiQi  GROUP BY YDCKD_JH.CLXTBH, YDCKD_JH.KCDJ

 

/*直进直出出库*/

 INSERT INTO #T(CLBH,DJ,SL,JE) SELECT YDZJZC_JH.CLXTBH, YDZJZC_JH.CGDJ,sum(YDZJZC_JH.SL) as SJSL,sum(YDZJZC_JH.CKJE) as SJJE

FROM  YDZJZC_DJ INNER JOIN YDZJZC_JH ON YDZJZC_DJ.DJXTBH = YDZJZC_JH.DJXTBH WHERE YDZJZC_DJ.RQ BETWEEN @QiShiRiQi AND @ZhongZhiRiQi GROUP BY YDZJZC_JH.CLXTBH,YDZJZC_JH.CGDJ

 

end

 

 

/*发料的*/

INSERT INTO #T(CLBH,DJ,SL,JE) SELECT CKD_JH.CLXTBH, CKD_JH.KCDJ, SUM(CKD_JH.SL) AS SJSL,

SUM(CKD_JH.JE) AS SJJE FROM CKD_DJ inner join CKD_JH ON CKD_DJ.DJXTBH=CKD_JH.CKD_DJ_DJXTBH

WHERE CKD_DJ.RQ BETWEEN @QiShiRiQi AND @ZhongZhiRiQi GROUP BY CKD_JH.CLXTBH, CKD_JH.KCDJ

 

/*发料退回的*/

INSERT INTO #T(CLBH,DJ,SL,JE)  SELECT CKTHD_JH.CLXTBH, CKTHD_JH.KCDJ, -SUM(CKTHD_JH.SL) AS SJSL,

-SUM(CKTHD_JH.JE) AS SJJE FROM CKTHD_DJ inner join CKTHD_JH ON CKTHD_DJ.DJXTBH=CKTHD_JH.DJXTBH

 WHERE CKTHD_DJ.RQ BETWEEN @QiShiRiQi AND @ZhongZhiRiQi GROUP BY CKTHD_JH.CLXTBH, CKTHD_JH.KCDJ

 

/*调拨出库的*/

INSERT INTO #T(CLBH,DJ,SL,JE) SELECT DBCKD_JH.CLXTBH, DBCKD_JH.KCDJ, SUM(DBCKD_JH.SL) AS SJSL,

SUM(DBCKD_JH.JE) AS SJJE FROM DBCKD_DJ inner join DBCKD_JH ON DBCKD_DJ.DJXTBH=DBCKD_JH.DJXTBH

WHERE DBCKD_DJ.RQ BETWEEN @QiShiRiQi AND @ZhongZhiRiQi GROUP BY DBCKD_JH.CLXTBH, DBCKD_JH.KCDJ

 

/*调拨出库退货单*/

INSERT INTO #T(CLBH,DJ,SL,JE) SELECT DBCKTHD_JH.CLXTBH, DBCKTHD_JH.KCDJ, -SUM(DBCKTHD_JH.SL)

AS SJSL, -SUM(DBCKTHD_JH.JE) AS SJJE FROM DBCKTHD_DJ inner join DBCKTHD_JH ON DBCKTHD_DJ.DJXTBH=DBCKTHD_JH.DJXTBH

WHERE DBCKTHD_DJ.RQ BETWEEN @QiShiRiQi AND @ZhongZhiRiQi GROUP BY DBCKTHD_JH.CLXTBH, DBCKTHD_JH.KCDJ

/*直进直出出库*/

 INSERT INTO #T(CLBH,DJ,SL,JE) SELECT ZJZC_JH.CLXTBH, ZJZC_JH.CGDJ,sum(ZJZC_JH.SL) as SJSL,sum(ZJZC_JH.CKJE) as SJJE

FROM  ZJZC_DJ INNER JOIN ZJZC_JH ON ZJZC_DJ.DJXTBH = ZJZC_JH.DJXTBH WHERE ZJZC_DJ.RQ BETWEEN @QiShiRiQi AND @ZhongZhiRiQi GROUP BY ZJZC_JH.CLXTBH,ZJZC_JH.CGDJ

/*直进直出chu库退货*/

 INSERT INTO #T(CLBH,DJ,SL,JE) SELECT ZJZCTH_JH.CLXTBH,ZJZCTH_JH.CGTHDJ, -sum(ZJZCTH_JH.SL) as SJSL,-sum(ZJZCTH_JH.CKTHJE) as SJJE

FROM  ZJZCTH_DJ INNER JOIN ZJZCTH_JH ON ZJZCTH_DJ.DJXTBH = ZJZCTH_JH.DJXTBH WHERE ZJZCTH_DJ.RQ BETWEEN @QiShiRiQi AND @ZhongZhiRiQi GROUP BY ZJZCTH_JH.CLXTBH,ZJZCTH_JH.CGTHDJ

 

INSERT INTO #ShouZhiCunMingXi(CLBH,DJ,SL,JE,Lie) SELECT CLBH,DJ,SUM(SL) AS SL,SUM(JE) AS JE,'出库' AS LB

 FROM #T GROUP BY CLBH,DJ

 

DELETE FROM #T

 

--第一步:根据系统编号、列、单价分组求和

select CLBH,DJ,sum(SL) as SL,sum(JE) as JE,Lie

                            into #TempSZCMX

 from #ShouZhiCunMingXi group by Lie, CLBH , DJ order by Lie,CLBH

 

 --第二步:列转行,分组求和

 insert into #TempLastResults

SELECT YJ,EJ,

         MoJi=(CASE WHEN grouping(YJ) = 1 THEN '0' 

                            WHEN grouping(EJ) = 1 THEN [YJ]

                            when grouping(MoJi)=1 then [EJ] else MoJi END),

  DJ,

sum(SYSL) SYSL,SUM(SYJE) SYJE,SUM(BYSL) BYSL,SUM(BYJE) BYJE,

SUM(CKSL) CKSL,SUM(CKJE) CKJE,SUM(RKSL) RKSL,SUM(RKJE) RKJE

--into #TempLastResults

from

(

 

select CaiLiaoXinxi_1.SJ AS YJ,CaiLiaoXinxi_1.BH AS EJ,CaiLiaoXinxi.BH AS MoJi,DJ,

sum(case Lie when '上月' then SL else 0 end) as 'SYSL',

                            sum(case Lie when '上月' then JE else 0 end) as 'SYJE',

                            sum(case Lie when '本月' then SL else 0 end) as 'BYSL',

                            sum(case Lie when '本月' then JE else 0 end) as 'BYJE',

                            sum(case Lie when '出库' then SL else 0 end) as 'CKSL',

                            sum(case Lie when '出库' then JE else 0 end) as 'CKJE',

                            sum(case Lie when '入库' then SL else 0 end) as 'RKSL',

                            sum(case Lie when '入库' then JE else 0 end) as 'RKJE'

                            from #TempSZCMX inner join CaiLiaoXinxi ON #TempSZCMX.CLBH =CaiLiaoXinxi.XTBH

                            INNER JOIN CaiLiaoXinxi  CaiLiaoXinxi_1 ON CaiLiaoXinxi.SJ=CaiLiaoXinxi_1.BH

                            GROUP BY CaiLiaoXinxi.BH ,CaiLiaoXinxi_1.BH,CaiLiaoXinxi_1.SJ,DJ

                            ) as MingXi

                            group by YJ,EJ,MoJi,DJ with rollup  having grouping(MoJi) =1 union all       

select CaiLiaoXinxi_1.SJ AS YJ,CaiLiaoXinxi_1.BH AS EJ,CaiLiaoXinxi.BH AS MoJi,DJ,

sum(case Lie when '上月' then SL else 0 end) as 'SYSL',

                            sum(case Lie when '上月' then JE else 0 end) as 'SYJE',

                            sum(case Lie when '本月' then SL else 0 end) as 'BYSL',

                            sum(case Lie when '本月' then JE else 0 end) as 'BYJE',

                            sum(case Lie when '出库' then SL else 0 end) as 'CKSL',

                            sum(case Lie when '出库' then JE else 0 end) as 'CKJE',

                            sum(case Lie when '入库' then SL else 0 end) as 'RKSL',

                            sum(case Lie when '入库' then JE else 0 end) as 'RKJE'

                            --into #TempLastResults

                            from #TempSZCMX inner join CaiLiaoXinxi ON #TempSZCMX.CLBH =CaiLiaoXinxi.XTBH

                            INNER JOIN CaiLiaoXinxi  CaiLiaoXinxi_1 ON CaiLiaoXinxi.SJ=CaiLiaoXinxi_1.BH

                            GROUP BY CaiLiaoXinxi.BH ,CaiLiaoXinxi_1.BH,CaiLiaoXinxi_1.SJ,DJ                     

--第三步:求最终结果

select MC,GG,DW,DJ,SYSL,SYJE,RKSL,RKJE,CKSL,CKJE,BYSL,BYJE

from #TempLastResults inner join

(

 SELECT '0' AS BH,'所有材料总计' AS MC,'' AS GG,'' AS DW

 UNION ALL

 SELECT BH,(MC+'  合计') AS MC,GG,DW FROM CaiLiaoXinxi WHERE SJ='0' and MJ=0

 UNION ALL SELECT BH,(MC+'  小计') AS MC,GG,DW FROM CaiLiaoXinxi WHERE SJ<>'0' AND MJ=0

 UNION ALL SELECT BH, MC,GG,DW FROM CaiLiaoXinxi WHERE MJ=1

 ) AS B on B.BH=#TempLastResults.MoJi and B.BH like @LeiBie order by B.BH

 

-------------------------------------------------------------------------------------------

在SQLServer中real是16位的浮点型,float是32位的,这点和C#的不同

SQLServer中的real和float分别对应C#中的float和double

 

 

------------------------完整的sql存储过程案例,分页;

USE [PM]

GO

/****** 对象:  StoredProcedure [dbo].[PItemPerMoney]    脚本日期: 07/11/2013 15:01:44 ******/

SET ANSI_NULLS ON

GO

SET QUOTED_IDENTIFIER ON

GO

-- =============================================

-- Author:          <Author,,Name>

-- Create date: <Create Date,,>

-- Description: <Description,,>

-- =============================================

ALTER PROCEDURE  [dbo].[PItemPerMoney]

          (

          @PName varchar(100),

          @DName varchar(50),

          @begintime datetime,

          @OverTime datetime,

          @PerName varchar(50),

          @bePage int,

          @edpage int,

          @num int output

       )

as

BEGIN

----查询利率

declare @YL varchar(10)

declare @SY varchar(10)

declare @GJJ varchar(10)

declare @YB varchar(10)

declare @XMGTS varchar(10)

declare @MonCount varchar(10)

declare @str nvarchar(4000)

--给利率赋值

select @YL=cast(YL AS varchar(10)),@SY=cast(SY AS varchar(10)),@GJJ=cast(GJJ AS varchar(10)),@YB=cast(YB AS varchar(10)),@XMGTS=cast(XMGTS AS varchar(10)) from PTaxRatioSet where Id=1

--查询工做月份的月数

select @MonCount=CAST(datediff(mm,@begintime,@OverTime) as varchar(10))

IF @MonCount='0' or @MonCount is null

set @MonCount='1'

----查询总条数

set @str=

'select @num=count(1) from View_PItemPer where 1=1 '

if(@PName<>'')

  set @str=@str+' and PName LIKE ''%'' + REPLACE(''' + @PName + ''', ''%'', ''/%'') + ''%'' ESCAPE ''/'''

if(@PerName<>'')

  set @str=@str+' and PerName LIKE ''%'' + REPLACE(''' + @PerName + ''', ''%'', ''/%'') + ''%'' ESCAPE ''/'''

if(@DName<>'')

  set @str=@str+' and DName LIKE ''%'' + REPLACE(''' + @DName + ''', ''%'', ''/%'') + ''%'' ESCAPE ''/'''

EXEC sp_executesql @str, N'@num INT OUTPUT', @num OUTPUT

----统计

set @str=

' select tt.* from (select row_number() over(order by t.Id) as rowid,t.*,t.Gang-t.Yl-t.Sy-t.Gjj-t.Yb as shuiqian,t.Gang-t.Xmgts as shifa from (select *,PMoney*'+@MonCount+' as Gang,PMoney*'+@MonCount+'*'+@YL+' as Yl, PMoney*'+@MonCount+'*'+@SY+' as Sy, PMoney*'+@MonCount+'*'+@GJJ+' as Gjj, PMoney*'+@MonCount+'*'+@YB+' as Yb, PMoney*'+@MonCount+'*'+@XMGTS+' as Xmgts from View_PItemPer where 1=1 '

if(@PName<>'')

  set @str=@str+' and PName LIKE ''%'' + REPLACE(''' + @PName + ''', ''%'', ''/%'') + ''%'' ESCAPE ''/'''

if(@PerName<>'')

  set @str=@str+' and PerName LIKE ''%'' + REPLACE(''' + @PerName + ''', ''%'', ''/%'') + ''%'' ESCAPE ''/'''

if(@DName<>'')

  set @str=@str+' and DName LIKE ''%'' + REPLACE(''' + @DName + ''', ''%'', ''/%'') + ''%'' ESCAPE ''/'''

SET @str=@str+') as t) as tt where tt.rowid between '+cast(@bePage as varchar(10))+' and '+cast(@edpage as varchar(10))

EXEC (@str)

END

--------------------------存储过程须要注意:

设置拼接字符串变量@str必须是nvarchar类型,否则会报错;

返回数量变量必须是:

EXEC sp_executesql @str, N'@num INT OUTPUT', @num OUTPUT

 

----------------

-----------------

-------------------根据身份证号判断出生年月和工龄

  /// <summary>

        /// 出生日期

        /// </summary>

        public DateTime? Birth

        {

            get

            {

                if (_idcard.Length == 18)

                {

                    string birth = _idcard.Substring(6, 8);

                    string birth1 = birth.Substring(0, 4) + "-" + birth.Substring(4, 2) + "-" + birth.Substring(6, 2);

                    return Convert.ToDateTime(birth1);

                }

                else if (_idcard.Length == 15)

                {

                    string birth = _idcard.Substring(6, 6);

                    string birth1 ="19"+birth.Substring(0, 2) + "-" + birth.Substring(2, 2) + "-" + birth.Substring(4, 2);

                    return Convert.ToDateTime(birth1);

                }

                else

                {

                    return null;

                }

            }

        }

        /// <summary>

        /// 年龄

        /// </summary>

        public int Age

        {

            get

            {

                if (_idcard.Length == 18)

                {

                    string birth = _idcard.Substring(6, 8);

                    return DateTime.Now.Year-Convert.ToInt32(birth.Substring(0,4));

                }

                else if (_idcard.Length == 15)

                {

                    string birth = _idcard.Substring(6, 6);

                    return DateTime.Now.Year - Convert.ToInt32("19" + birth.Substring(0, 2));

                }

                else

                {

                    return 0;

                }

            }

        }

---------------------------------------------存储过程判断某一变量是否为空

if(@PName<>'')

 

当将语句定义为字符串时,应将全部变量转化为varchar类型,要否则会报错;

-------

------------------------------好比:

if(@begintime<>'')

  set @str=@str+' and ApplyDate>='''+convert(varchar(100),@begintime)+''''

if(@OverTime<>'')

   set @str=@str+' and ApplyDate<='''+convert(varchar(100),@OverTime)+''''

---------------------------当有输出参数执行字符串时;

EXEC sp_executesql @str, N'@num INT OUTPUT', @num OUTPUT

-------------行列转换

SUM(CASE WHEN T.ParentName=''休假'' THEN T.alldays ELSE 0 END)

 

 

--------------------------js根据出生日期获取年龄;

  $(function () {

            $("#txtAge").click(function () {

                var dateUser = new Date();

                var nowYear = dateUser.getFullYear();

                var dateUser1 = new Date($("#txtBirthDate").val());

                var birthYear = dateUser1.getFullYear();

                $("#txtAge").val(nowYear - birthYear);

                if ($("#txtAge").val() > 18) {

                    alert("年龄超过18岁,禁止 填写");

                }

            });

        });

 

---------------------汇总模板:

------汇总数据

select a.id,a.PerId,a.allworkm,a.allrestm,a.allvalm,a.workdays,a.restdays,a.valmdays,a.alldays,a.allmoney,

b.Sex,b.IdCard,b.WorkDateQ,b.RestDateQ,b.ValDateQ,

case when ptag='2' then '全部人(汇总)' when ptag='1' then '我的(汇总)' else b.PerName end as PerName

 from(

select id,PerId,sum(workm) as allworkm,sum(restm) as allrestm,sum(valm) as allvalm,

sum(workdays) as workdays,sum(restdays) as restdays,sum(valmdays) as valmdays,

sum(alldays) as alldays,sum(workm+restm+valm) as allmoney,

case when grouping(PerId)=1 and grouping(id)=1  then '2' when grouping(id)=1 and grouping(PerId)=0  then '1' else '' end as Ptag

from #T group by PerId,Id with rollup) as a left join  View_PBTChild as b

on a.id=b.Id

END

------------------------------存储过程模板

USE [PM]

GO

/****** 对象:  StoredProcedure [dbo].[PvalStastics]    脚本日期: 07/15/2013 10:27:40 ******/

SET ANSI_NULLS ON

GO

SET QUOTED_IDENTIFIER ON

GO

-- =============================================

-- Author:          <Author,,Name>

-- Create date: <Create Date,,>

-- Description: <Description,,>

-- =============================================

ALTER PROCEDURE [dbo].[PvalStastics]

 (

          @PName varchar(100),

          @begintime datetime,

          @OverTime datetime,

          @PerName varchar(50),

          @bePage int,

          @edpage int,

          @num int output

  )

as

BEGIN

declare @str nvarchar(4000)

set @str=

'select @num=count(distinct PerId) from View_PvalApply where 1=1 '

if(@PName<>'')

  set @str=@str+' and PName LIKE ''%'' + REPLACE(''' + @PName + ''', ''%'', ''/%'') + ''%'' ESCAPE ''/'''

if(@PerName<>'')

  set @str=@str+' and PerName LIKE ''%'' + REPLACE(''' + @PerName + ''', ''%'', ''/%'') + ''%'' ESCAPE ''/'''

if(@begintime<>'')

  set @str=@str+' and ApplyDate>='''+convert(varchar(100),@begintime)+''''

if(@OverTime<>'')

   set @str=@str+' and ApplyDate<='''+convert(varchar(100),@OverTime)+''''

EXEC sp_executesql @str, N'@num INT OUTPUT', @num OUTPUT

----统计

set @str=

' SELECT * FROM (SELECT ROW_NUMBER() OVER(ORDER BY TT.PerId) as rowid,TT.*,TT.qing+TT.xiu as allvaldays FROM (

SELECT T.PerId,T.PerName,T.PName,SUM(CASE WHEN T.ParentName=''请假'' THEN T.alldays ELSE 0 END) as qing,

SUM(CASE WHEN T.ParentName=''休假'' THEN T.alldays ELSE 0 END) as xiu FROM(SELECT PerId,PerName,PName,ParentName,SUM(ValDays) as alldays FROM View_PvalApply GROUP BY PerId,PerName,PName,ParentName

HAVING 1=1 '

if(@PName<>'')

  set @str=@str+' and PName LIKE ''%'' + REPLACE(''' + @PName + ''', ''%'', ''/%'') + ''%'' ESCAPE ''/'''

if(@PerName<>'')

  set @str=@str+' and PerName LIKE ''%'' + REPLACE(''' + @PerName + ''', ''%'', ''/%'') + ''%'' ESCAPE ''/'''

if(@begintime<>'')

  set @str=@str+' and ApplyDate>='''+convert(varchar(100),@begintime)+''''

if(@OverTime<>'')

   set @str=@str+' and ApplyDate<='''+convert(varchar(100),@OverTime)+''''

SET @str=@str+') as T GROUP BY T.PerId,T.PerName,T.PName) as TT) as TTT WHERE TTT.rowid BETWEEN '+cast(@bePage as varchar(10))+' and '+cast(@edpage as varchar(10))

EXEC (@str)

END

 

--------------------------------查询年月季度的起始日期和结束日期的方法;

   DateTime starttime = wp.BeginTime;

        DateTime endtime = wp.OverTime;

        wp.OverTime = wp.BeginTime;

            while (wp.OverTime <=endtime)

            {

                switch(tag)

                {

                    //1:年2:季度3:月

                    case 1: wp.OverTime =DateProvider.LastDateOfYear(wp.BeginTime);break;

                    case 2:  wp.OverTime =DateProvider.LastDateOfQuarter(wp.BeginTime);break;

                    case 3: wp.OverTime = DateProvider.LastDateOfMonth(wp.BeginTime);break;

                }

                //查询每一个时间间隔的数据

                SafePdLevel sp = GetData(wp);

                sp.dateId = wp.OverTime;

                list.Add(sp);

                wp.BeginTime = wp.OverTime.AddDays(1);

        }

 

----------------------------excel导入所有代码:

  public static System.Data.DataTable DataTableforExcel(string strExcelFileName, string strSheetName,int columnsCount)

        {

            System.Data.DataTable dt = new System.Data.DataTable();

            for (int i = 0; i <columnsCount; i++)

            {

                dt.Columns.Add(new DataColumn());

            }

            Excel.Application excel = new Excel.Application();

            Excel.Workbook m_objBook = (Excel.Workbook)(excel.Workbooks.Add(strExcelFileName));

            Worksheet sheet = null;

            foreach (Worksheet wsheet in m_objBook.Worksheets)

            {

                if (wsheet.Name == strSheetName)

                {

                    sheet = wsheet;

                    break;

                }

            }

            if (sheet != null)

            {

                int row = 2;

                while (true)

                {

                    Range rName = sheet.Cells[row, 1] as Range;

                    if (rName.Text.ToString().Trim().Length == 0)

                    {

                        break;

                    }

                    DataRow dr = dt.NewRow();

                    for (int i = 0; i <columnsCount; i++)

                    {

                        Range rContent = sheet.Cells[row, i + 1] as Range;

                        dr[i] = rContent.Text;

                    }

                    dt.Rows.Add(dr);

                    row += 1;

                }

            }

            excel.Quit();

            return dt;

        }

    }

---开始导入

public partial class Personnel_PPersonImport: System.Web.UI.Page

{

    PPersonMessaManager pmm = new PPersonMessaManager();

    PPartManager ppm = new PPartManager();

    PDutyManager pdm = new PDutyManager();

    protected void btnadd_Click(object sender, EventArgs e)

    {

        if (this.FileUpload1.HasFile)

        {

            //上传文件

            string path = Server.MapPath("../File/PersonImport/");

            FileUpload1.PostedFile.SaveAs(path + FileUpload1.FileName);

            //生成datatable

            string path1 = Server.MapPath("../File/PersonImport/"+FileUpload1.FileName);

            DataTable table = PM.Frame.DataFromExcel.DataTableforExcel(path1, "Sheet1",20);

            if (table != null && table.Rows.Count !=0)

            {

               Improt(table);

               Messabox.ShowError(this,"已成功导入");

            }

            else

            {

                Messabox.ShowError(this, "没有数据要导入");

            }

        }

        else

        {

            Messabox.ShowError(this, "请选择上传的人员文件");

        }

    }

    protected void btnback_Click(object sender, EventArgs e)

    {

 

    }

    protected bool Improt(DataTable table)

    {

      

        for (int i = 0; i < table.Rows.Count; i++)

        {

            PPersonMessa pm = new PPersonMessa();

            pm.Id = pmm.GetMaxId();

            //部门

            PPart pp = new PPart();

            pp.PName = table.Rows[i][1].ToString().Trim();

            pp.SJ = -1;

            List<PPart> list = ppm.GetList(pp);

            if (list != null && list.Count != 0)

            {

                pm.PartId = new PPart {Id=list[0].Id};

            }

            //职位

            PDuty pd = new PDuty();

            pd.DName= table.Rows[i][9].ToString().Trim();

            List<PDuty> list1 = pdm.GetList(pd);

            if (list1 != null && list1.Count != 0)

            {

                pm.GangName = new PDuty { Id = list1[0].Id};

            }

            //其余

            pm.PerName = table.Rows[i][2].ToString().Trim();

            pm.Sex = table.Rows[i][3].ToString().Trim();

            pm.Nation = table.Rows[i][4].ToString().Trim();

            pm.Address = table.Rows[i][5].ToString().Trim();

            pm.BirAddress = table.Rows[i][6].ToString().Trim();

            pm.Face= table.Rows[i][7].ToString().Trim();

            pm.DangTime= table.Rows[i][8].ToString().Trim();

            pm.IdCard = table.Rows[i][10].ToString().Trim();

            try

            {

                pm.WorkTime =Convert.ToDateTime(table.Rows[i][11].ToString().Trim());

            }

            catch { }

            pm.Education= table.Rows[i][12].ToString().Trim();

            pm.EducationTime = table.Rows[i][13].ToString().Trim();

            pm.School = table.Rows[i][14].ToString().Trim();

            pm.Major = table.Rows[i][15].ToString().Trim();

            pm.ZhiCheng = table.Rows[i][16].ToString().Trim();

            pm.ZiGe = table.Rows[i][17].ToString().Trim();

            pm.Phone= table.Rows[i][18].ToString().Trim();

            pm.PerState = table.Rows[i][19].ToString().Trim();

            //插入

            pmm.Add(pm);

        }

            return true;

 

    }

}

---------------------------------查询是否存在某列

USE EF

SELECT COUNT(1) FROM syscolumns WHERE id=object_id('Orders') AND [name]='Name'

------

 public static bool Exists(SqlDataReader reader, string field)

        {

            bool b = false;

            for (int i = 0; i < reader.FieldCount; i++)

            {

                if (reader.GetName(i).Equals(field))

                {

                  

                    if (reader[field] != System.DBNull.Value)

                    {

                        b = true; break;

                    }

                }

            }

            return b;

        }

相关文章
相关标签/搜索