//該博客非正式,因為公司電腦只能進博客園,不能插任何外接設備,有因為公司框架功能太強大,這篇博客只是讓自己有時間別忘記基礎東西而已
//客戶端
//.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);"/>
這種方式與前一種不同的是后綴是正常的,並且通過js實現文件的下載,<br />通過給iframe元素,把他的url通過js寫成下載文件的路徑,這樣可以防止頁面跳轉<br />
<br />
<br />
<asp:Button ID="Button2" runat="server" onclick="Button2_Click" Text="下載" />
這個是通過將客戶端控件服務器化后,通過瀏覽器通知服務器下載指定文件,讓后服務器修改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