添加的:

廣東網(wǎng)站制作公司哪家好,找創(chuàng)新互聯(lián)公司!從網(wǎng)頁設(shè)計、網(wǎng)站建設(shè)、微信開發(fā)、APP開發(fā)、成都響應(yīng)式網(wǎng)站建設(shè)公司等網(wǎng)站項目制作,到程序開發(fā),運營維護(hù)。創(chuàng)新互聯(lián)公司從2013年開始到現(xiàn)在10年的時間,我們擁有了豐富的建站經(jīng)驗和運維經(jīng)驗,來保證我們的工作的順利進(jìn)行。專注于網(wǎng)站建設(shè)就選創(chuàng)新互聯(lián)公司。
CREATE TRIGGER trig_xx_add
ON [Table1] AFTER UPDATE,INSERT
AS
BEGIN
INSERT INTO [Table2] ([Product])
SELECT [Product] FROM inserted
WHERE NOT EXISTS(SELECT 1 FROM [Table2] WHERE [Product]=inserted.[Product])
END
假設(shè)你的id都是identity, 如果不是的話根據(jù)自己的需要進(jìn)行修改
刪除的也類似, 但是不知道你的需求是什么
因為觸發(fā)器,是在每次執(zhí)行的時候都會觸發(fā)的,你那個where條件寫的有問題,那個變量,應(yīng)該是從 inserted 表中取出來,使用,而不是 規(guī)定范圍。。明白?
sql是數(shù)據(jù)庫,大多用戶能用到的功能是分離數(shù)據(jù)庫,附加數(shù)據(jù)庫,備份數(shù)據(jù)庫等操作。
你要修改asp的話,利用FTP軟件,將文件下載到本地,修改好了再上傳。
或者是登陸ASP網(wǎng)站的管理后臺,看后臺有不有在線編輯模版等功能。
如果要修改的地方比較多,我建議你FTP將全站下載到本地電腦,然后在本地電腦安裝IIS+sql。在本地架設(shè)起網(wǎng)站,邊演示,邊修改,這樣比較快些。
打開Visual Studio 2010, 新建一個ASPX WEB應(yīng)用程序類型的項目, Visual Studio 會幫我們自動地創(chuàng)建一些得得啵啵的文件,直接不理會,創(chuàng)建完畢后,如下圖右擊項目,選擇“添加”-“新建項”,如下圖選擇“一般處理程序”,并且命名為"mp.ashx"。
創(chuàng)建好了,添加如下的引用:
using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Data.SqlClient;
using System.IO;
using System.Text;
using System.Xml;
using System.Xml.XPath;using System.Security;
using System.Net;
using System.Collections;
using System.Security.Cryptography;
提示:一般處理程序,可以返回各種格式的HTTP響應(yīng)數(shù)據(jù),甚至包括但不限于GIF等圖像的格式哦,非常地強(qiáng)大而且靈活,但開發(fā)難度有點高,有一點類似LOL 中的盲僧,因微信公眾平臺支持探返回的數(shù)據(jù)格式一般是XML,但也包括一些非XML的字串什么的,所以我們使用一般處理程序可以非常好完成任務(wù)。
2 編寫signature校驗函數(shù)
接口的接入過程其實很簡單,用糙人的一句話就是,哥我喊一個“哎。。。”,妹紙你回一個“哎。。。”,咱就結(jié)婚成功了(程序直接回復(fù)echostr參數(shù)),當(dāng)然要更深度的結(jié)合,決不止那么簡單。
哥哥您想呀,如果夜半三更,爬上妹妹床頭的不是哥哥您,而是一個叫dosboy的駭客,后果我都沒有辦法再想下去了,所以微信開通前,妹紙您要告訴哥哥(微信平臺)口令(在微信中預(yù)設(shè)一個令牌Token)。
哥哥每回有接入要求的時候,妹紙驗明正身就可以拉,因為網(wǎng)絡(luò)都是明文(dosboy會在窗下偷聽的哦),所以這個驗證不能直接傳遞Token,而要通過一定算法,微信的文檔下:
根據(jù)微信的文檔,開發(fā)者提交信息后,微信服務(wù)器將發(fā)送GET請求到填寫的URL上,GET請求攜帶四個參數(shù):
參數(shù)
描述
signature 微信加密簽名,signature結(jié)合了開發(fā)者填寫的token參數(shù)和請求中的timestamp參數(shù)、nonce參數(shù)。
timestamp 時間戳
nonce 隨機(jī)數(shù)
echostr 隨機(jī)字符串
開發(fā)者通過檢驗signature對請求進(jìn)行校驗(下面有校驗方式)。若確認(rèn)此次GET請求來自微信服務(wù)器,請原樣返回echostr參數(shù)內(nèi)容,則接入生效,成為開發(fā)者成功,否則接入失敗。
加密/校驗流程如下: 1. 將token、timestamp、nonce三個參數(shù)進(jìn)行字典序排序 2. 將三個參數(shù)字符串拼接成一個字符串進(jìn)行sha1加密 3. 開發(fā)者獲得加密后的字符串可與signature對比,
根據(jù)以上信息,我寫了一個函數(shù),這個函數(shù)一定要使用,如果您堅持不驗明正身,平臺代碼也可以接入的,但是危險程度您自己判斷:
private bool checkSignature(string signature,string timestamp,string nonce,string token)
{
ArrayList tmpArray = new ArrayList();
tmpArray.Add(token);
tmpArray.Add(timestamp);
tmpArray.Add(nonce);
tmpArray.Sort();
string tmpStr = (string)tmpArray[0] + (string)tmpArray[1] + (string)tmpArray[2];
//建立SHA1對象
SHA1 sha = new SHA1CryptoServiceProvider();
//將mystr轉(zhuǎn)換成byte[]
ASCIIEncoding enc = new ASCIIEncoding();
byte[] dataToHash = enc.GetBytes(tmpStr);
//Hash運算
byte[] dataHashed = sha.ComputeHash(dataToHash);
//將運算結(jié)果轉(zhuǎn)換成string
string hash = BitConverter.ToString(dataHashed).Replace("-", "");
log("hash:" + hash); //記錄日志,不需要可以注釋掉
if(hash.ToLower()==signature.ToLower())
return true;
else
return false;
}
程序中我用了一個記錄日志的函數(shù),在這里我也貼上來,如果大家不需可以可以注釋掉紅色的那行:
private void log(string stringinput)
{
StreamWriter sw = new StreamWriter("C:\\微信日志.txt", true);
sw.WriteLine(DateTime.Now.ToString() + "," + stringinput);
sw.Close();
}
3 接入接口寫入數(shù)據(jù)庫代碼
想搞微信平臺就要接入幾百個或更多公眾號,必竟委托給你的妹紙起碼三宮六院,做好管理還是有必要的,數(shù)據(jù)庫的技術(shù)是必須滴,所以在這里,我使用了SQL SERVER 2008R2,把所有的接入信息都寫入數(shù)據(jù)庫的“微信號列表”,這里我就簡簡單單使用了數(shù)據(jù)庫的Update,函數(shù)為 LandMPUpdateSQLServer() 代碼如下:
表的結(jié)構(gòu)我就截個圖,如果看官只想測試一下如何接入,直接閃現(xiàn)到下一節(jié)。
private void LandMPUpdateSQLServer(HttpContext context)
{
SqlConnection connMpDb = new SqlConnection(connectionString); //connectionString為預(yù)先定義的連接串
connMpDb.Open();
SqlCommand comMpDb = new SqlCommand("update 微信號列表 set signature=@signature,timestamp=@timestamp,nonce=@nonce,echostr=@echostr,[驗證]=1 Where ID=*****", connMpDb);
foreach (string s in OpenParameters) //OpenParameters 為4個參數(shù)名的數(shù)組,即 "signature","timestamp","nonce","echostr"
{
SqlParameter sp = comMpDb.Parameters.Add("@" + s, System.Data.SqlDbType.VarChar);
if (context.Request.QueryString.AllKeys.Contains(s))
sp.Value = context.Request.QueryString[s];
else
sp.Value = "No Value";
}
comMpDb.ExecuteNonQuery();
connMpDb.Close();
}
4 完成代碼編寫接入接口
(1)請加上變量聲明:
在如下的位置后面,即mp類里填加上2個類的變量的定義
public class mp : IHttpHandler
{
//接入?yún)?shù)
private string[] OpenParameters = { "signature", "timestamp", "nonce", "echostr" };
//SQL連接字串,您可以定義成一個字符串,我是從系統(tǒng)設(shè)置里取的
private string connectionString = System.Configuration.ConfigurationManager.ConnectionStrings["testmpConnectionString"].ConnectionString;
(2)請完成主程序:
請在
public void ProcessRequest(HttpContext context) 內(nèi)填加上如下的語句
提示: 這是一個系統(tǒng)函數(shù),每次微信有事件發(fā)生時(比如有人給你發(fā)消息拉,加你為關(guān)注拉什么的)的微信就會主動出動聯(lián)系你給它填的URL地址,這個函數(shù)內(nèi)的代碼就會激發(fā)運行!
【自動回復(fù)】 如下的代碼運行,不僅僅會讓您的程序接入微信的公眾平臺,并且還能自動重復(fù)回復(fù)別人發(fā)的話,看看如下的效果圖,你和你的小伙伴是不是已經(jīng)驚呆了!如果您不要這個功能的話這個程序,您只要保留
1-16行的代碼,其它全刪除!就已經(jīng)完全做到接入微信公眾平臺,如果您再想您的程序智能一點,比如您的妹紙給你發(fā),“我現(xiàn)在就要”,你自動回復(fù) “本人正在忙”(活該你單身),請改造17行以后的代碼,完全夠用了。
【數(shù)據(jù)庫】 不想碰數(shù)據(jù)庫,就注釋掉14行
1 bool isLanding = true;
2 foreach (string s in OpenParameters)
3 {
4 if (!context.Request.QueryString.AllKeys.Contains(s))
5 isLanding = false;
6
7 }
8
9 //toke 為 AAA時驗證是否是微信的請求
10 if (isLanding checkSignature(context.Request.QueryString["signature"], context.Request.QueryString["timestamp"], context.Request.QueryString["nonce"],"AAA"))
11 {
12 context.Response.ContentType = "text/plain";
13 string echoString = context.Request.QueryString["echostr"];
14 LandMPUpdateSQLServer(context);
15 context.Response.Write(echoString);
16 }
17 else
18 {
19 //讀取發(fā)過來的信息到inputXml變量中
20 Stream sin = context.Request.InputStream;
21 byte[] readBytes;
22 readBytes = new byte[sin.Length];
23 sin.Read(readBytes, 0, readBytes.Length);
24 string inputXml = Encoding.UTF8.GetString(readBytes);
25
26 //使用XMLDocument加載信息結(jié)構(gòu)
27 XmlDocument xmlDoc = new XmlDocument();
28 xmlDoc.LoadXml(inputXml);
29 string stringMsgId = xmlDoc.SelectSingleNode("http://MsgId").InnerText;
30
31 //把傳過來的XML數(shù)據(jù)各個字段區(qū)分出來,并且填到fields這個字典變量中去
32 Dictionarystring, string fields = new Dictionarystring, string();
33 foreach (XmlNode x in xmlDoc.SelectSingleNode("/xml").ChildNodes)
34 {
35 fields.Add(x.Name, x.InnerText);
36
37 }
38 //形成返回格式的XML文檔
39 string returnXml = "xmlToUserName![CDATA[" +
40 fields["FromUserName"] + "]]/ToUserNameFromUserName![CDATA[" +
41 fields["ToUserName"] + "]]/FromUserNameCreateTime" +
42 DateTime.Now.Subtract(new DateTime(1970, 1, 1, 8, 0, 0)).TotalSeconds.ToString() + "/CreateTimeMsgType![CDATA[text]]/MsgTypeContent![CDATA[" +
43 fields["Content"] + "]]/Content/xml";
44
45 context.Response.ContentType = "text/xml";
46 context.Response.Write(returnXml);
47
48 }
5 把程序發(fā)布到互聯(lián)網(wǎng)上(此處不解釋),注意一定要80端口
(此處省略18000字,記得記上稿費)
6 在微信公眾平臺上,做如下設(shè)置:
在公眾平臺網(wǎng)站的高級功能 – 開發(fā)模式頁,點擊“成為開發(fā)者”按鈕,填寫URL和Token,其中URL是開發(fā)者用來接收微信服務(wù)器數(shù)據(jù)的接口URL。Token可由開發(fā)者任意填寫, 用作生成簽名(該Token會和接口URL中包含的Token進(jìn)行比對,從而驗證安全性)。
第一先來配置出版服務(wù)器:
(1)選中指定[服務(wù)器]節(jié)點
(2)從[工具]下拉菜單的[復(fù)制]子菜單中選擇[發(fā)布、訂閱服務(wù)器和分發(fā)]命令
(3)系統(tǒng)彈出一個對話框點[下一步]然后看著提示一直操作到完成。
(4)當(dāng)完成了出版服務(wù)器的設(shè)置以后系統(tǒng)會為該服務(wù)器的樹形結(jié)構(gòu)中添加一個復(fù)制監(jiān)視器。同時也生成一個分發(fā)數(shù)據(jù)庫(distribution)
第二創(chuàng)建出版物:
(1)選中指定的服務(wù)器
(2)[工具]菜單的[復(fù)制]子菜單中選擇[創(chuàng)建和管理發(fā)布]命令。此時系統(tǒng)會彈出一個對話框
(3)選擇要創(chuàng)建出版物的數(shù)據(jù)庫,然后單擊[創(chuàng)建發(fā)布]
(4)在[創(chuàng)建發(fā)布向?qū)的提示對話框中單擊[下一步]系統(tǒng)就會彈出一個對話框。對話框上的內(nèi)容是復(fù)制的三個類型。我們現(xiàn)在選第一個也就是默認(rèn)的快照發(fā)布(其他兩個大家可以去看看幫助)
(5)單擊[下一步]系統(tǒng)要求指定可以訂閱該發(fā)布的數(shù)據(jù)庫服務(wù)器類型,SQLSERVER允許在不同的數(shù)據(jù)庫如 ORACLE或ACCESS之間進(jìn)行數(shù)據(jù)復(fù)制。但是在這里我們選擇運行"SQL SERVER 2000"的數(shù)據(jù)庫服務(wù)器
(6)單擊[下一步]系統(tǒng)就彈出一個定義文章的對話框也就是選擇要出版的表
(7)然后[下一步]直到操作完成。當(dāng)完成出版物的創(chuàng)建后創(chuàng)建出版物的數(shù)據(jù)庫也就變成了一個共享數(shù)據(jù)庫。
SQL是英文Structured Query Language的縮寫,意思為結(jié)構(gòu)化查詢語言。SQL語言的主要功能就是同各種數(shù)據(jù)庫建立聯(lián)系,進(jìn)行溝通。
按照ANSI(美國國家標(biāo)準(zhǔn)協(xié)會)的規(guī)定,SQL被作為關(guān)系型數(shù)據(jù)庫管理系統(tǒng)的標(biāo)準(zhǔn)語言。SQL Server是由Microsoft開發(fā)和推廣的關(guān)系數(shù)據(jù)庫管理系統(tǒng)(DBMS)。
名稱欄目:sqlserver發(fā)微信,微信sql數(shù)據(jù)庫
本文鏈接:http://chinadenli.net/article31/dseddpd.html
成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供網(wǎng)站導(dǎo)航、手機(jī)網(wǎng)站建設(shè)、電子商務(wù)、服務(wù)器托管、微信小程序、用戶體驗
聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請盡快告知,我們將會在第一時間刪除。文章觀點不代表本網(wǎng)站立場,如需處理請聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時需注明來源: 創(chuàng)新互聯(lián)