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