服務器返回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