服务器返回json格式集合,客户端js解析


//该博客非正式,因为公司电脑只能进博客园,不能插任何外接设备,有因为公司框架功能太强大,这篇博客只是让自己有时间别忘记基础东西而已

//客户端

 //.POST方式,服务返回的数据格式为Json,客户端解析,一般不介意客户服务器端解析
        $(function () {
         //访问服务,成功后调用func方法,并提示数据为JSON格式的
             $.post("WebService.asmx/GetAllJosn", func, "json");
         })
         //将返回的JSON格式的数据进行解析
         function func(json) {
             var sb="<table border='1'><tbody>";
             sb+="<tr>";
             sb += "<th>编号</th><th>类别</th><th>名称</th><th>价格</th>";
             sb += "</tr>";
             for (var i = 0; i <json.Length; i++) {
             //json格式的数据可以直接通过对象.属性获取值
                 sb += "<tr>";
                 sb += "<td>" + json[i].Id + "</td>";
                 sb += "<td>" + json[i].CategoryId+ "</td>";
                 sb += "<td>" + json[i].Name + "</td>";
                 sb += "<td>" + json[i].Price + "</td>";
                 sb += "</tr>";
             }
             sb += "</tbody></table>";
             //加载到指定页面标签内
             $("div").append(sb);
         }

 

//服务器端

 [WebMethod]
    public void GetAllJosn()
    {
        Class2 pb = new Class2();
        var list = pb.GetAll();
        //将lsit集合转换为Josn格式的返回  [{"TypeId":1,"TypeName":"三室两厅"},{"TypeId":2,"TypeName":"一室一厅"},{"TypeId":3,"TypeName":"两室一厅"}]
        JavaScriptSerializer jss = new JavaScriptSerializer();
        var json = jss.Serialize(list);
        //Context.Response.ContentType="application/json";
        Context.Response.Write(json);
    }
    [WebMethod]
    public List<Product> GetAllXML()
    {
       Class2 pb = new Class2();
        var list = pb.GetAll();
        return list;
    }

 

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

//前端

 //第三种 .aspx  post方式
        $(function () {
            $.post("Default.aspx", func);
        })
        function func(data) {
            $("div").append(data);
        }

//服务器端

public partial class _Default : System.Web.UI.Page
{
    protected void Page_Load(object sender, EventArgs e)
    {
        if (!IsPostBack)
        {
            Class2 cl = new Class2();
            var list = cl.GetAll();
            //开始动态生成表格返回个客户端
            StringBuilder sb = new StringBuilder();
            sb.Append("<table border='1'><tbody>");
            sb.Append("<tr>");
            sb.Append("<th>编号</th><th>类别</th><th>名称</th><th>价格</th>");
            sb.Append("</tr>");
            foreach (var p in list)
            {
                sb.Append("<tr>");
                sb.Append("<td>" + p.Id + "</td><td>" + p.CategoryId+ "</td><td>" + p.Name + "</td><td>" + p.Price + "</td>");
                sb.Append("</tr>");
            }
            sb.Append("</tbody></table>");
            Response.Write(sb.ToString());
            Response.End();
        }
    }
}

 

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

//前端

 //第三种 .ashx  post方式
        $(function () {
            $.post("Handler.ashx", func);
        })
        function func(data) {
            $("div").append(data);
        }

//服务器端

using System; using System.Web;

public class Handler : IHttpHandler

{

        public void ProcessRequest (HttpContext context)

       {

                 context.Response.ContentType = "text/plain";

                Class2 cl = new Class2();

                var list = cl.GetAll();

               //动态生成表格

              System .Text. StringBuilder sb = new System.Text.StringBuilder();

              sb.Append("<table border='1'><tbody>");

              sb.Append("<tr>");

              sb.Append("<th>编号</th><th>类型</th><th>名称</th><th>价格</th>");

              sb.Append("</tr>");

             foreach (var p in list)

           {

              sb.Append("<tr>");

              //<td>{可以用占位符}</td>

              //sb.Append("<td>{0}</td><td>{1}</td><td>{2}</td><td>{3}</td>", p.Id,p.Category.Name,p.Name,p.Price);

              sb.Append("<td>" + p.Id + "</td><td>" + p.CategoryId + "</td><td>" + p.Name + "</td><td>" + p.Price + "</td>");

              sb.Append("</tr>");

           }

           sb.Append("</tbody></table>");

           //告诉客户我们将返回数据格式是HTML格式的

           //context.Response.ContentType = "text/html";

          //返回给客户端

          context.Response.Write(sb.ToString());

    }

      public bool IsReusable

     {

        get

        {

            return false;

        } 

}

}

 

 

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

using System;

using System.Collections.Generic;

using System.Linq;

using System.Web;

using System.Web.UI;

using System.Web.UI.WebControls;

using DAL; using System.Xml;

 public partial class _Default : System.Web.UI.Page

{

    protected void Page_Load(object sender, EventArgs e)

    {

    }

    Class1 c = new Class1();

    protected void Button1_Click(object sender, EventArgs e)

    {

        //方式一:服务返回的是一个具体的对象(xml格式)可以直接获取返回对象的属性值

        //将用户输入的参数变为XML格式并作为String传入到后台

        //string xml = "<table><name>" + this.TextBox1.Text + "</name>";

        //xml += "<pwd>" + this.TextBox2.Text + "</pwd></table>";

        //调后台服务

        //WebService ws = new WebService();

        //得到查询的对象

        //Table_1 t=ws.getAll(xml);

        ////记录原密码

        //string pwd3 = t.Pwd.ToString();

        //取出值

        //this.Label1.Text = t.ID.ToString();

        //this.Label2.Text = t.Name.ToString();

        //显示密码前一位和最后一位,中间的用*号替代

        //string pwd1 = t.Pwd.ToString().Substring(0, 1).ToString();

        //string pwd2 = t.Pwd.ToString().Substring(5, 1).ToString();

        //string pwd = pwd1.PadRight(5, '*').ToString()+pwd2;

        //this.Label3.Text =pwd;

        //方式二:服务器端已经将查询出来的数据对象(默认为XML格式)转换为指定格式的String类型,然后在传回客户端

        //这种String格式为XML模式

        string xml = "<table><name>" + this.TextBox1.Text + "</name>";

        xml += "<pwd>" + this.TextBox2.Text + "</pwd></table>";

        string Fxml = c.GetAll(xml);

        //获得服务器返回数据后,一般分为1.取出每个值显示,或 2.不取值,直接显示

        //1.取值

        //对于String格式的XML模式的数据字符串无法直接向对象一样取出其中的值,但可以加载给字符串后取出对应

        //节点的值

        //加载XML模式数据

        XmlDocument xd = new XmlDocument();

        xd.LoadXml(Fxml);

        string id = xd.GetElementsByTagName("id")[0].InnerText;

        string name = xd.GetElementsByTagName("name")[0].InnerText;

        string pwd = xd.GetElementsByTagName("pwd")[0].InnerText;

        this.Label1.Text = id;

        this.Label2.Text = name;

        this.Label3.Text = pwd;

        //2.不取属性值,直接显示

        this.Label4.Text = Fxml;

    }

}

//服务器端

using System;

using System.Collections.Generic;

using System.Linq;

using System.Web;

using System.Web.Services;

using DAL;

using System.Xml;

using System.IO;

/// <summary> ///WebService 的摘要说明

/// </summary> [WebService(Namespace = "http://tempuri.org/")] [WebServiceBinding(ConformsTo = WsiProfiles.BasicProfile1_1)]

//若要允许使用 ASP.NET AJAX 从脚本中调用此 Web 服务,请取消对下行的注释。

// [System.Web.Script.Services.ScriptService]

public class WebService : System.Web.Services.WebService {

    public WebService () {

        //如果使用设计的组件,请取消注释以下行

        //InitializeComponent();

    }

    [WebMethod]

    public string HelloWorld() {

        return "Hello World";

    }

    [WebMethod(Description="返回一个对象")]

    public Table_1 getAll(string xml)

    {

        DataClassesDataContext db=new DataClassesDataContext();

        //解析参数

        XmlDocument xd=new XmlDocument();

        xd.LoadXml(xml);

        //取出参数对应的值

        string name = xd.GetElementsByTagName("name")[0].InnerText;

        string pwd = xd.GetElementsByTagName("pwd")[0].InnerText;

        var t=db.Table_1.SingleOrDefault(a=>a.Name==name&&a.Pwd==pwd);

        //直接返回一个对象         return t;

    }

    [WebMethod(Description = "返回XML格式的String类型字符串,将对象转换为XML格式")]

    public string GetAll(string xml)     {

        DataClassesDataContext db = new DataClassesDataContext();

        XmlDocument xd = new XmlDocument();

        //由于用户传入的数据进过处理成为了String类型的XML格式的数据

        //在服务器端先加载该字符串

        xd.LoadXml(xml);

        //取出用户的参数值

        string name = xd.GetElementsByTagName("name")[0].InnerText;

        string pwd = xd.GetElementsByTagName("pwd")[0].InnerText;

                   Table_1 t=db.Table_1.SingleOrDefault(a => a.Name == name && a.Pwd == pwd);

            if (t != null)

            {

                //开始将对象模型转换为XML格式再转换为String类型

                using (StringWriter sw = new StringWriter())

                {

                    XmlTextWriter xtw = new XmlTextWriter(sw);

                    xtw.Formatting = Formatting.Indented;

                    xtw.WriteStartDocument();

                    xtw.WriteStartElement("T3");

                    xtw.WriteElementString("id", t.ID.ToString());

                    xtw.WriteElementString("name", t.Name.ToString());

                    xtw.WriteElementString("pwd", t.Pwd.ToString());

                    xtw.WriteEndElement();

                    xtw.WriteEndDocument();

                    xtw.Flush();

                    //将编写的XML格式数据转换为String类型并返回

                    return sw.ToString();

                }

            }

            else

            {

                return "错误哦";

            }

    } 

}

 

---------------------------------json-----------------------------------------------------------------------------------

.........

 //获取用户名和密码并转换为JSON格式
                var name = this.TextBox1.Text.Trim();
                var pwd = this.TextBox2.Text.Trim();
                //获取验证码
                 var code = Session["CheckCode"].ToString();
                //获取用户输入的验证码
                 var usercode = this.TextBox3.Text.Trim();
             if (usercode == code)
             {
                 //向服务方法传入JSON格式数据(参数)
                //手动编写JSON格式数据,可以根据属性自定义一个类对象
                var user = "{'Name':'" + name + "','Pwd':'" + pwd + "'}";
                JavaScriptSerializer jss = new JavaScriptSerializer();
                //将对象(对象可以是自定义的类)转换为json
                //Table_1 tb = new Table_1();
                //tb.Name = name;
                //tb.Pwd = pwd;
                //var user = jss.Serialize(tb);
                Class1 c = new Class1();
                bool b = c.Load(user);//调用服务中的Load方法
                if (b)
                {
                    Response.Redirect("SHOW.aspx");
                }

      //服务器端

        DataClasses1DataContext db = new DataClasses1DataContext();
        [WebMethod(Description = "用户登陆,传入JSON格式数据")]
        public bool Load(string json)
        {
            //解析用户传入的 json格式的数据
            JavaScriptSerializer jss = new JavaScriptSerializer();
            //将其转换为对象(对象可以自己随意定义,但必须包含JSON数据中的属性)
            Table_1 ta = jss.Deserialize<Table_1>(json);
            var t = db.Table_1.SingleOrDefault(a => a.Name == ta.Name &&a.Pwd==ta.Pwd);
            if (t != null)
            {
                return true;
            }
            else
            {
                return false;
            }
        }

     Ajax----------------------------------------------------------------------------

      function GetSysPageCount() {
        $.ajax({
            type: "get",
            dataType: "text",
            url: "SysmanageHandler.ashx",
            data: "getPageCount=1",
            async: false,
            success: function(msg) {
                pageCount = parseInt(msg); //分页总数放到变量pageCount里
                $("#pagecount").attr("value", msg);
            }
        });
        return false;
    }

//服务器取数据

context.Request.Params["pageIndex"]

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

        context.Response.Buffer = true;
        context.Response.ExpiresAbsolute = DateTime.Now.AddDays(-1);
        context.Response.AddHeader("pragma", "no-cache");
        context.Response.AddHeader("cache-control", "");
        context.Response.CacheControl = "no-cache";

 

 

--------------------------------图片上传到服务器----------------------------------------------------------

 protected void Button1_Click(object sender, EventArgs e)
        {
            string filename = FileUpload1.FileName;
            if (filename.Trim().Length <= 0)
            {
                Response.Write("<script>alert('请选择图片')</script>");
                return;
            }
            string ext = filename.Substring(filename.LastIndexOf(".")).ToLower();
            filename = DateTime.Now.ToString("yyyyMMddHHmmss") + ext;
            //限制只能上传图片格式
            if (ext.Contains("jpg") || ext.Contains("gif") || ext.Contains("png") || ext.Contains("bmp"))
            {
                string destname = Server.MapPath("~/Images/") +filename.ToString();
                FileUpload1.SaveAs(destname);
                Image1.ImageUrl = "Images/" + filename.ToString();
            }
        }

-------------------------------文件下载-------------------------------------------------------------------------------------------

<html xmlns="http://www.w3.org/1999/xhtml">
<head runat="server">
    <title></title>
    <script>
        function  openfile()
         {
             //window.open("File/IntelligentPersonClientOuterNet(3).apk");
             //window.open ('File/IntelligentPersonClientOuterNet(3).apk','newwindow','height=100,width=400,top=0,left=0,toolbar=no,menubar=no,scrollbars=no, resizable=no,location=no, status=no') ;
            

                 document.getElementById("ifile").src = "File/IntelligentPersonClientOuterNet(3).apk";
         }
    </script>
</head>
<body>
    <form id="form1" runat="server">
    <div>
   
        <input id="Button1" type="button" value="下载"  onclick="openfile();return(false);"/>&nbsp;&nbsp;&nbsp;&nbsp;
        这种方式与前一种不同的是后缀是正常的,并且通过js实现文件的下载,<br />通过给iframe元素,把他的url通过js写成下载文件的路径,这样可以防止页面跳转<br />
        <br />
        <br />
        <asp:Button ID="Button2" runat="server" onclick="Button2_Click" Text="下载" />
&nbsp;&nbsp; 这个是通过将客户端控件服务器化后,通过浏览器通知服务器下载指定文件,让后服务器修改iframe的src</div>
    </form>
    <iframe id="ifile" style="display:none" runat="server"></iframe>
</body>
</html>

//后台方法

 protected void Button2_Click(object sender, EventArgs e)
    {
        this.ifile.Attributes["src"] = "File/IntelligentPersonClientOuterNet(3).apk";
    }

 

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

2.执行增删改查操作
  1)增加数据
     (1)连接数据库
  SqlConnection conn=new SqlConnection(连接字符串);
  (2)创建Command对象
  SqlCommand cmd=new SqlCommand(Sql语句,连接对象(conn));
  (3)打开连接数据对象
  conn.Open();
  (4)执行增加数据的Sql语句
  cmd.ExecuteNonQuery();
  (5)关闭连接对象
  conn.Close();
2)修改数据
     (1)连接数据库
  SqlConnection conn=new SqlConnection(连接字符串);
  (2)创建Command对象
  SqlCommand cmd=new SqlCommand(Sql语句,连接对象(conn));
  (3)打开连接数据对象
  conn.Open();
  (4)执行修改数据的Sql语句
  cmd.ExecuteNonQuery();
  (5)关闭连接对象
  conn.Close();
 3)删除数据
     (1)连接数据库
  SqlConnection conn=new SqlConnection(连接字符串);
  (2)创建Command对象
  SqlCommand cmd=new SqlCommand(Sql语句,连接对象(conn));
  (3)打开连接数据对象
  conn.Open();
  (4)执行删除数据的Sql语句
  cmd.ExecuteNonQuery();
  (5)关闭连接对象
  conn.Close();
4)查询数据
  (a)使用DataReader
  (1)连接数据库
  SqlConnection conn=new SqlConnection(连接字符串);
  (2)创建Command对象
  SqlCommand cmd=new SqlCommand(Sql语句,连接对象(conn));
  (3)打开连接数据库对象
  conn.Open();
  (4)执行查询的Sql语句
  SqlDataReader reader=cmd.ExecuteReader();
  while(reader.read()){
       //方法一
           Convert.ToInt32(reader["列名"])
    //方法二
          reader.GetInt(0); 
  }
  (5)关闭连接对象
  conn.Close();
  b)使用DataAdapter
  (1)连接数据库
  SqlConnection conn=new SqlConnection(连接字符串);
  (2)创建DataSet对象
  DataSet ds=new DataSet();
  (3)执行查询的Sql语句
  SqlDataAdapter sda=new SqlDataAdapter(Sql语句,conn);
  (4)填充数据集
  sda.Fill(ds,"数据表名");

 

--------------------------------------mvc中文件上传--------------------------------------------------------------

 <div>
           <%using (Html.BeginForm("AddUser1", "User", FormMethod.Post, new { enctype = "multipart/form-data" }))
             {
           %>
               用户名:<input id="username" name="username" type="text" onblur="name1()"/><span id="span1"></span>
               <br />
               密  码:<input id="password" name="password" type="password" onblur="pwd1()"/><span id="span2"></span>
               <br />
               头  像:<input id="imgurl" name="imgurl" type="file" onblur="file1()"/><span id="span3"></span>
               <br />
               邮  箱:<input id="email" name="email" type="text" onblur="email1()"/><span id="span4"></span>
               <br />
               <input id="Submit1" type="submit" value="注册" onclick="return UserAddJS()"/>
           <%
             }
           %>
    </div>

//服务器代码

 //新用户注册
        [HttpPost]
        public ActionResult AddUser1(admin a)
        {
                //取出用户上传的文件的集合
                HttpFileCollectionBase file = Request.Files;
          
                //取出文件名
                string filename = Path.GetFileName(file[0].FileName);
                //产生一个Guid
                string guid = Guid.NewGuid().ToString();
                //唯一标示,保存到数据库中的名字
                filename =guid+=filename;
                //重定义保存路径
                file[0].SaveAs(Server.MapPath("~/Content/Iamges/") + filename);
                a.imgurl = filename;
          
            db.admin.InsertOnSubmit(a);
            db.SubmitChanges();
            return RedirectToAction("Index", "FeedBook");
        }

 

-------------------------------简单文件上传---------------------------------------------------------------------------------

//服务器代码

 protected void Button1_Click(object sender, EventArgs e)
        {
            string filename = this.FileUpload1.FileName;
            //得到文件后缀
            string ext=filename.Substring(filename.LastIndexOf(".")).ToLower();
            filename = "IntelligentPersonClientOuterNet" + ext;
            enFiles(filename);
        }
        public void enFiles(string filename)
        {
           string path=Server.MapPath("~/Admin/llxw/"+filename+"");
           bool b = File.Exists(path);
           if (b)
           {
               File.Delete(path);
               this.FileUpload1.SaveAs(path);
               Page.RegisterStartupScript("abc", "<script>alert('更新成功!')</script>");
           }
           else
           {
               this.FileUpload1.SaveAs(path);
               Page.RegisterStartupScript("abc", "<script>alert('更新成功!')</script>");
           }
        }

//页面代码

<html xmlns="http://www.w3.org/1999/xhtml">
<head runat="server">
    <title></title>
</head>
<body>
    <form id="form1" runat="server">
    <div id="upFiles">
        <asp:FileUpload ID="FileUpload1" runat="server" BackColor="#66FF66"
            BorderStyle="None" />
        <asp:Button ID="Button1" runat="server"
            Text="更新" Height="25px" onclick="Button1_Click" Width="76px" />
    </div>
    </form>
</body>
</html>

 

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

12.<?xml version="1.0" encoding="utf-8" ?>

<configuration>

     //可以再使用的时候这样获取值

 //private readonly string ConnString = ConfigurationManager.ConnectionStrings["conn"].ConnectionString;

<connectionStrings>

         //sql

<add name="conn" connectionString="server=.;database=atm;uid=sa;pwd=xfht"/>

        //Access,在asp.net中什么类型的文件放在什么类型的文件夹下(特指.cs和数据库文件),因为程序在运行时会到默认的文件夹下去寻找文件,.cs放在APP_Code   数据库文件放在APP_Data

         //如下,程序在运行时会到当前项目APP_Data下找Access下的MyAccess.mdb

         <add name="conn" connectionString="Provider=Microsoft.Jet.OleDb.4.0;Data Source=|DataDirectory|Access\\MyAccess.mdb;Persist Security Info=True" />

      //oracle

      <!--方式1的写法-->
    <add name="conn" connectionString="Data Source=JZR;Persist Security Info=True;uid=tt;pwd=jzr"/>
    <!--方式2的写法-->
    <!--<add name="conn" connectionString="Data Source=(DESCRIPTION=(ADDRESS_LIST=(ADDRESS=(PROTOCOL=TCP)(HOST=127.0.0.1)(PORT=1521)))(CONNECT_DATA=(SID=jzr)));User ID=TT;Password=jzr;"/>-->

</connectionStrings>

</configuration>

<appSettings>

        //可以再使用的时候这样获取值

//private readonly string ConnString = ConfigurationManager.AppSettings["ConnectionString"];

    <add key="ConnectionString" value="Data Source=.;Initial Catalog=sz_rfid;User ID=sa;Password=xfht "/>

</appSettings>

 

 

----------------------------------------文件操作-----------------------------------------------------------------------

例子:

 //账号下拉框开始绑定选项
            DirectoryInfo di=new DirectoryInfo(@"D:\QQ2013\user\");
            //List<FileSystemInfo> fi = di.GetFileSystemInfos().ToList();
            //得到指定路径下的文件并包括文件夹,每一个登陆的账号都会有一个唯一的文件夹
            List<FileSystemInfo> fi = di.GetFileSystemInfos().ToList();
            //按照文件夹的最后访问时间倒序排列
            fi=fi.OrderByDescending(f=>f.LastAccessTime).ToList();
            List<FileSystemInfo> listFileInfo=new List<FileSystemInfo>();
            //循环判断每个文件夹下的文件.txt,并添加到集合中
            foreach (FileSystemInfo fsi in fi)
            {
                //得到当前文件夹的路径
                string txtfilepath = fsi.FullName+"\\";
                DirectoryInfo dif = new DirectoryInfo(@"" + txtfilepath + "");
                //得到当前路径文件夹下的第一个文件(每个账号文件夹下有且只有一个文件.txt),并添加到集合中
                listFileInfo.Add(dif.GetFileSystemInfos().ToList()[0]);
            }
            //按照每个文件的最后一个写入时间倒序排列,每次登陆都会重新创建用户文件,并写入登陆账号或密码
            listFileInfo = listFileInfo.OrderByDescending(f => f.LastWriteTime).ToList();

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

 

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

 

public class Corlls
    {
       //控制类
       public static List<string> ReadTest() //读取文件
       {
         FileStream fs = new FileStream("H:\\QQ\\聊天.txt", FileMode.OpenOrCreate, FileAccess.Read);
         StreamReader sr = new StreamReader(fs);
         List<string> list= new List<string>();
         while (sr.EndOfStream == false)
         {
             list.Add(sr.ReadLine());
         }
         sr.Close();
         fs.Close();
         return list;
       }
      public static void WriteTest(string txt) //写入文件
       {
           try
           {

                if (!Directory.Exists(@"D:\QQ2013\user\"))

                {

                    Directory.CreateDirectory(@"D:\QQ2013\user\");

                    //Directory.Delete(path,true);

                }


               FileStream fs = new FileStream("H:\\QQ\\聊天.txt", FileMode.Append, FileAccess.Write, FileShare.Write);
               StreamWriter sr1 = new StreamWriter(fs);
               sr1.Write(txt);
               sr1.Close();
               fs.Close();
           }
           catch (Exception)
           {
               FileStream fs = new FileStream("H:\\QQ\\聊天.txt", FileMode.OpenOrCreate, FileAccess.Write, FileShare.Write);
               StreamWriter sr1 = new StreamWriter(fs);
               sr1.Write(txt);
               sr1.Close();
               fs.Close();
           }
         
       }
    }

 

 

-----------------------sql-------------------------------------------------------------------------------------------------------

【一、基础】 1、说明:创建数据库 CREATE DATABASE database-name CREATE DATABASE 数据库名 [  ON ---指定主文件的属性           (               NAME=' 数据库逻辑名称(随便取)',               FILENAME=' 文件的物理名称即数据库存放的位置 ',               SIZE= 文件的初始大小,               FILEGROWTH= 文件的增长方式           )         LOG ON ---指定日志文件属性           (               NAME= ' 数据库逻辑名_LOG ',               FILENAME=' 文件存放路径 ',               SIZE=' 文件初始大小 ',               FILEGROWTH=' 文件的增长方式 '               ) ] 例: CREATE DATABASE Student [  ON ---指定主文件的属性           (               NAME='Mstanford',               FILENAME='D:\文件名或根目录\Mstanford.mdf',               SIZE=5,               FILEGROWTH=10%           )         LOG ON ---指定日志文件属性           (               NAME=' Mstanford.LOG ',               FILENAME=' D:\文件名或根目录\Mstanford.LDF ',               SIZE=5,               FILEGROWTH=10%               ) ]

 

2、说明:删除数据库 drop database dbname

3、说明:备份sql server --- 创建 备份数据的 device USE master EXEC sp_addumpdevice 'disk', 'testBack', 'c:\mssql7backup\MyNwind_1.dat' --- 开始 备份 BACKUP DATABASE pubs TO testBack

4、说明:创建新表 create table tabname(列名 数据类型 [not null] [primary key],col2 type2 [not null],..)

根据已有的表创建新表: A:create table tab_new like tab_old (使用旧表创建新表) B:create table tab_new as select col1,col2… from tab_old definition only

5、说明:删除新表 drop table tabname

6、说明:增加一个列 Alter table tabname add column col type 注:列增加后将不能删除。DB2中列加上后数据类型也不能改变,唯一能改变的是增加varchar类型的长度。

7、说明:添加主键: Alter table tabname add primary key(col) 说明:删除主键: Alter table tabname drop primary key(col)

8、说明:创建索引:create [unique] index idxname on tabname(col….) 删除索引:drop index idxname 注:索引是不可更改的,想更改必须删除重新建。

9、说明:创建视图:create view viewname as select statement 删除视图:drop view viewname

10、说明:几个简单的基本的sql语句 选择:select * from table1 where 范围

插入:insert into table1(列名1,列名2) values(value1,value2)--如果要插入所用数据则不用写列名

删除:delete from table1 where 范围

更新:update table1 set field1=value1 where 范围

查找:select * from table1 where field1 like ’%value1%’ ---like的语法很精妙,查资料!

排序:select * from table1 order by field1,field2 [desc]

总数:select count as totalcount from table1

求和:select sum(field1) as sumvalue from table1

平均:select avg(field1) as avgvalue from table1

最大:select max(field1) as maxvalue from table1

最小:select min(field1) as minvalue from table1

11、说明:几个高级查询运算词 A: UNION 运算符 UNION 运算符通过组合其他两个结果表(例如 TABLE1 和 TABLE2)并消去表中任何重复行而派生出一个结果表。当 ALL 随 UNION 一起使用时(即 UNION ALL),不消除重复行。两种情况下,派生表的每一行不是来自 TABLE1 就是来自 TABLE2。

B: EXCEPT 运算符 EXCEPT 运算符通过包括所有在 TABLE1 中但不在 TABLE2 中的行并消除所有重复行而派生出一个结果表。当 ALL 随 EXCEPT 一起使用时 (EXCEPT ALL),不消除重复行。

C: INTERSECT 运算符 INTERSECT 运算符通过只包括 TABLE1 和 TABLE2 中都有的行并消除所有重复行而派生出一个结果表。当 ALL 随 INTERSECT 一起使用时 (INTERSECT ALL),不消除重复行。 注:使用运算词的几个查询结果行必须是一致的。

12、说明:使用外连接 A、left (outer) join: 左外连接(左连接):结果集几包括连接表的匹配行,也包括左连接表的所有行。 SQL: select a.a, a.b, a.c, b.c, b.d, b.f from a LEFT OUT JOIN b ON a.a = b.c

B:right (outer) join: 右外连接(右连接):结果集既包括连接表的匹配连接行,也包括右连接表的所有行。

C:full/cross (outer) join: 全外连接:不仅包括符号连接表的匹配行,还包括两个连接表中的所有记录。

12、分组:Group by:   一张表,一旦分组 完成后,查询后只能得到组相关的信息。  组相关的信息:(统计信息) count,sum,max,min,avg  分组的标准)     在SQLServer中分组时:不能以text,ntext,image类型的字段作为分组依据  在selecte统计函数中的字段,不能和普通的字段放在一起;

13、对数据库进行操作:  分离数据库: sp_detach_db; 附加数据库:sp_attach_db 后接表明,附加需要完整的路径名

14.如何修改数据库的名称: sp_renamedb 'old_name', 'new_name'

【二、提升】 1、说明:复制表(只复制结构,源表名:a 新表名:b) (Access可用) 法一:select * into b from a where 1<>1(仅用于SQlServer) 法二:select top 0 * into b from a

2、说明:拷贝表(拷贝数据,源表名:a 目标表名:b) (Access可用) insert into b(a, b, c) select d,e,f from b;

3、说明:跨数据库之间表的拷贝(具体数据使用绝对路径) (Access可用) insert into b(a, b, c) select d,e,f from b in ‘具体数据库’ where 条件 例子:..from b in '"&Server.MapPath(".")&"\data.mdb" &"' where..

4、说明:子查询(表名1:a 表名2:b) select a,b,c from a where a IN (select d from b ) 或者: select a,b,c from a where a IN (1,2,3)

5、说明:显示文章、提交人和最后回复时间 select a.title,a.username,b.adddate from table a,(select max(adddate) adddate from table where table.title=a.title) b

6、说明:外连接查询(表名1:a 表名2:b) select a.a, a.b, a.c, b.c, b.d, b.f from a LEFT OUT JOIN b ON a.a = b.c

7、说明:在线视图查询(表名1:a ) select * from (SELECT a,b,c FROM a) T where t.a > 1;

8、说明:between的用法,between限制查询数据范围时包括了边界值,not between不包括 select * from table1 where time between time1 and time2 select a,b,c, from table1 where a not between 数值1 and 数值2

9、说明:in 的使用方法 select * from table1 where a [not] in (‘值1’,’值2’,’值4’,’值6’)

10、说明:两张关联表,删除主表中已经在副表中没有的信息 delete from table1 where not exists ( select * from table2 where table1.field1=table2.field1 )

11、说明:四表联查问题: select * from a left inner join b on a.a=b.b right inner join c on a.a=c.c inner join d on a.a=d.d where .....

12、说明:日程安排提前五分钟提醒 SQL: select * from 日程安排 where datediff('minute',f开始时间,getdate())>5

13、说明:一条sql 语句搞定数据库分页 select top 10 b.* from (select top 20 主键字段,排序字段 from 表名 order by 排序字段 desc) a,表名 b where b.主键字段 = a.主键字段 order by a.排序字段 具体实现: 关于数据库分页:   declare @start int,@end int   @sql  nvarchar(600)   set @sql=’select top’+str(@end-@start+1)+’+from T where rid not in(select top’+str(@str-1)+’Rid from T where Rid>-1)’   exec sp_executesql @sql

注意:在top后不能直接跟一个变量,所以在实际应用中只有这样的进行特殊的处理。Rid为一个标识列,如果top后还有具体的字段,这样做是非常有好处的。因为这样可以避免 top的字段如果是逻辑索引的,查询的结果后实际表中的不一致(逻辑索引中的数据有可能和数据表中的不一致,而查询时如果处在索引则首先查询索引)

14、说明:前10条记录 select top 10 * form table1 where 范围

15、说明:选择在每一组b值相同的数据中对应的a最大的记录的所有信息(类似这样的用法可以用于论坛每月排行榜,每月热销产品分析,按科目成绩排名,等等.) select a,b,c from tablename ta where a=(select max(a) from tablename tb where tb.b=ta.b)

16、说明:包括所有在 TableA 中但不在 TableB和TableC 中的行并消除所有重复行而派生出一个结果表 (select a from tableA ) except (select a from tableB) except (select a from tableC)

17、说明:随机取出10条数据 select top 10 * from tablename order by newid()

18、说明:随机选择记录 select newid()

19、说明:删除重复记录 1),delete from tablename where id not in (select max(id) from tablename group by col1,col2,...)

2),select distinct * into temp from tablename   delete from tablename   insert into tablename select * from temp 评价: 这种操作牵连大量的数据的移动,这种做法不适合大容量但数据操作

3),例如:在一个外部表中导入数据,由于某些原因第一次只导入了一部分,但很难判断具体位置,这样只有在下一次全部导入,这样也就产生好多重复的字段,怎样删除重复字段 alter table tablename --添加一个自增列 add  column_b int identity(1,1)  delete from tablename where column_b not in( select max(column_b)  from tablename group by column1,column2,...) alter table tablename drop column column_b

20、说明:列出数据库里所有的表名 select name from sysobjects where type='U' // U代表用户

21、说明:列出表里的所有的列名 select name from syscolumns where id=object_id('TableName')

22、说明:列示type、vender、pcs字段,以type字段排列,case可以方便地实现多重选择,类似select 中的case。 select type,sum(case vender when 'A' then pcs else 0 end),sum(case vender when 'C' then pcs else 0 end),sum(case vender when 'B' then pcs else 0 end) FROM tablename group by type 显示结果: type vender pcs 电脑 A 1 电脑 A 1 光盘 B 2 光盘 A 2 手机 B 3 手机 C 3

23、说明:初始化表table1 TRUNCATE TABLE table1

24、说明:选择从10到15的记录 select top 5 * from (select top 15 * from table order by id asc) table_别名 order by id desc

 

关于建表及约束: SQL约束

实体完整性(Entity Integrity)   PRIMARY KEY(主键)约束)

 IDENTITY(自增)约束   UNIQUE(唯一)

约束 域完整性(Domain Integrity)   CHECK(检查)约束   FOREIGN KEY(外键)约束

 DEFAULT(默认值)约束   NOT NULL(非空)约束

引用完整性(Referential Integrity)

 

PRIMARY KEY约束:唯一识别每一条记录的标志,可以由多列共同组成 CREATE TABLE student--建立表

(           stuNo int  primary key,--学号为主键,指定为主键列,stuNo的值不能重复也不能为NULL stuName varchar(20)

);

IDENTITY 约束:列值自增,一般使用此属性设置的列作为主键 CREATE TABLE student--建立表 (

 sId int identity(1,1) primary key,---Identity(1,1)表示第一行记录的sId值为1,第二行的值为2。以后每次加1,不需要用户显式地添加数据

 stuName varchar(20)

);

UNIQUE(唯一约束) :可以使用UNIQUE约束确保在非主键列中不存在重复值,但列值可以是NULL(空) CREATE TABLE student--建立表 (         sId int identity(1,1) primary key,--主键自增

      stuTel varchar(13)  unique,--唯一约束,电话号码字段(可能为空,但不能重复));

CHECK(检查)约束:用于限制列中的值的范围 CREATE TABLE student--建立表 ( sId int identity(1,1) primary key,--主键自增

 stuTel varchar(13)  unique,--电话号码字段(可能为空,但不能重复) stuAge int check(stuAge>=15 and stuAge<=30) --学生年龄在15到30之间

);

DEFAULT(默认值)约束:在不指定列值时,将以默认值填充CREATE TABLE student

( sId int identity(1,1) primary key,--主键自增

 

 stuTel varchar(13)  unique,--电话号码字段(可能为空,但不能重复)

 

 stuAge int check(stuAge>=15 and stuAge<=30),--学生年龄在15到30之间

  stuContry varchar(20)  not null default ‘中国’ ) --学生国籍,默认为“中国” );

逻辑运算符: AND:并且 OR:或 NOT:取反

模糊查询: %通配符 例: 1.select * from table1 where field1 like ’%value1%’查询表中field1字段[包含]value1的数据,value1可以是变量'%"+value1+"%' 2.select * from bookInfo where bookName like '" + name + "%' or bookName like '%" + name + "' or bookName like '%" + name + "%'";查询bookInfo表中bookName字段中以name开头或结尾或包含name的数据 3.查询table中name字段以B开头,以C结尾的数据   select * from table where name like 'B%C';   %N%:包含N,N%:以N开头,%N:以N结尾

“_”通配符 与%的区别在于他可以限制值得长度 例:查找name为5个字符的 select * from table where name like '_ _ _ _ _'; 查询地址为湖什么省的所有数据 select * from table where diz like '湖_省'; 这种查询多_所代表的字符不限制,但总体长度为三个字符, 查询name第二个字符为明信息 select * from table where name like '_明%';   第三个字符:'_ _明%'

[]通配符 like '5[%]'   =      5% like '[_]N'   =      _N like '[a-f]'  =      a,b,c,e,f like 'abc[def]'   =    abcd,abce,abcf like 'a[^a]b'  !=      aab like 'abc[_...]def'    =     abc...def [_]: 表示可以为任意字符,且只有一个

 

 

 

 

 

导出 asp.net

//导出     //得到Excel

    ApplicationClass xlsapp = new ApplicationClass();

    protected void Button1_Click(object sender, EventArgs e)     {

        if (xlsapp == null)         {

            Page.RegisterStartupScript("abc", "<script>alert('该机器上未安装Excle');</script>");

            return;

        }

        else

        {

            //得到工作簿集合

            Workbooks workbooks = xlsapp.Workbooks;

            //新建一个工作簿

            Workbook workbook = workbooks.Add(XlWBATemplate.xlWBATWorksheet);

            //得到工作簿中的一张表

            Worksheet sheet1 = workbook.Sheets[1] as Worksheet;

            //修改表名

            sheet1.Name = "学员信息";

            //得到总行数

            int Rowcount = this.GridView1.Rows.Count;

            //得到一行的列数

            int Collcount = this.GridView1.Rows[0].Controls.Count;

            for (int i = 0; i < Collcount; i++)

            {

                //设置表中的每列的表头    得到每一列的头,如姓名/年龄等

                sheet1.Cells[1, i + 1] = this.GridView1.Columns[i].HeaderText;

            }

            //设置sheet1的表内容

            int k=1;//这里设置填充内容从第二行开始,因为第一行为表头

            for (int i = 0; i < Rowcount; i++)

            {

                k++;

                for (int j = 0; j < Collcount; j++)

                {

                    sheet1.Cells[k, j + 1] = this.GridView1.Rows[i].Cells[j].Text.ToString();

                }

             }

            //设置字体为蓝色

            sheet1.Cells.Font.Color = Color.Blue;

            //设置文本左靠齐

            sheet1.Cells.HorizontalAlignment = Constants.xlLeft;          

            //设置保存文本名称

            string filename = DateTime.Now.ToString("yyyy年MM月dd号HH时mm分ss秒");

            //先保存到服务器

            workbook.SaveAs(Server.MapPath("ExcelFile/"+filename+".xls"));

            //释放资源

            workbook.Close(false, Type.Missing, Type.Missing);

            workbook = null;

            workbooks.Close();

            xlsapp.Quit();

            xlsapp = null;

            GC.Collect();

            //下载

            this.filedown.Attributes["src"] = "ExcelFile/" + filename + ".xls";

 

文件扫描

namespace Kings
{
public partial class Form1 : Form
{
public Form1()
{
Form1.CheckForIllegalCrossThreadCalls = false;
InitializeComponent();
}
//的到所有盘符
Thread file = null;
int sumfile;
int xfilesum;
String[] drivers = Directory.GetLogicalDrives();
//一些常见病毒文件
String[] xfiles = new String[] { "avserve.exe", "SPTED.dll", "IRJIT.dll", "res.exe", "Service.exe", "update.exe", "wc98pp.dll", "stdup.dll", "yasbar.dll", "BDSrHook.dll", "cdnns.dll", "HelperService.dll", "hbhelper.dll", "lup.dll", "miniserver.exe", "win32bootcfg.exe", "winscntrl.exe", "syssmss.exe", "SVKP.sys" };
private void button1_Click(object sender, EventArgs e)
{


if (file == null)
{
this.button1.Text = "正在扫描";
listBox1.Items.Clear();
sumfile = 0;
file = new Thread(new ThreadStart(newScanFile));
file.Start();
file.Join();
this.label3.Text = "总共扫描文件" + sumfile.ToString() + "个";
file = null;
this.button1.Text = "重新扫描";
this.label1.Text = "扫描完成";
}

}
void newScanFile()
{
foreach (string path in drivers)
{
ScanFile(path);
}
//ScanFile("O:\\");
}
void ScanFile(string path)
{
//获得指定路劲下的文件及子目录
try //有些文件因为无权访问所以可能会报错,直接忽略
{
String[] filepaths = Directory.GetFileSystemEntries(path);
foreach (string filepath in filepaths)
{
//为了让扫描速度慢一点

if (Directory.Exists(filepath))
{
ScanFile(filepath);
}
else
{
this.label1.Text = filepath;
//的到当前扫描文件后缀
string ext = filepath.Substring(filepath.LastIndexOf(".")+1).ToString();
string filename = filepath.Substring(filepath.LastIndexOf("\\") + 1).ToString();
// MessageBox.Show(filename + " " + ext);
foreach(string xfile in xfiles)
{
if (ext == "com" || filename == xfile )
{
listBox2.Items.Add(filepath);
xfilesum += 1;
this.label2.Text = "发现疑似病毒文件 " + xfilesum.ToString() + " 个";
break;
}
}
listBox1.Items.Insert(0, filepath);
sumfile += 1;
this.label7.Text = "已扫描:" + sumfile.ToString() + "个";

}
Thread.Sleep(50);
}
}
catch (Exception ex)
{
ex.ToString();
}

}
private void Form1_Load(object sender, EventArgs e)
{
foreach (string dri in drivers)
{
this.label5.Text += dri.Substring(0,1)+"盘 ";
}
}

private void button2_Click(object sender, EventArgs e)
{
foreach (string xfilepath in this.listBox2.Items)
{
File.Delete(xfilepath);
}
listBox2.Items.Clear();
listBox2.Items.Add("文件已从电脑中移除");
}


}
}

 http://www.cnblogs.com/jinzhirong/p/4714690.html


免责声明!

本站转载的文章为个人学习借鉴使用,本站对版权不负任何法律责任。如果侵犯了您的隐私权益,请联系本站邮箱yoyou2525@163.com删除。



 
粤ICP备18138465号  © 2018-2025 CODEPRJ.COM