您好,登錄后才能下訂單哦!
這篇文章主要介紹“如何用SQL Server 2005存儲過程實現IP地址歸屬地查詢”,在日常操作中,相信很多人在如何用SQL Server 2005存儲過程實現IP地址歸屬地查詢問題上存在疑惑,小編查閱了各式資料,整理出簡單好用的操作方法,希望對大家解答”如何用SQL Server 2005存儲過程實現IP地址歸屬地查詢”的疑惑有所幫助!接下來,請跟著小編一起來學習吧!
1、用C#來做DLL,代碼如下:
usingSystem;usingSystem.Collections.Generic;usingSystem.Text;usingSystem.Data.SqlTypes;usingSystem.Data.SqlClient;usingMicrosoft.SqlServer.Server;publicclassAddrInfo[Microsoft.SqlServer.Server.SqlProcedure]publicstaticvoidgetAddrInfo(SqlStringip,outSqlStringinfo)using(SqlConnectionconnection=newSqlConnection("contextconnection=true"))//IP地址轉為數字string[]tmp=ip.Value.Split(newstring[]{"."},StringSplitOptions.None);Int64ipn=ToInt(ToBinary(tmp[0])+ToBinary(tmp[1])+ToBinary(tmp[2])+ToBinary(tmp[3]));connection.Open();SqlCommandcmd=newSqlCommand();cmd.Connection=connection;cmd.CommandType=System.Data.CommandType.Text;cmd.CommandText="selectaddr_infofromCZIPwhereipn1<="+ipn.tostring()+"andipn2>="+ipn.ToString();SqlDataReaderdr=cmd.ExecuteReader();using(dr)if(dr.Read())info=dr.GetString(0);elseinfo="<無歸屬地數據>";}}//////INT32轉為二進制字符串/////////privatestaticStringToBinary(stringnum)intpiNumber=Int32.Parse(num);stringstrBinary="";intiTmp;doiTmp=piNumber%2;strBinary=iTmp.ToString()+strBinary;piNumberpiNumber=piNumber/2;}while(piNumber!=0);returnstrBinary.PadLeft(8,'0');}////////////privatestaticlongToInt(stringpStrBinary)char[]charArr=pStrBinary.ToCharArray();longiReturnValue=0;intiPow=0;for(inti=0;i
怎樣用SQLServer2005存儲過程實現IP地址歸屬地查詢
2、將編譯后的DLL放到SQLSERVER2005所在的服務器上,假設路徑為c:\clr\ipLib.dll以下方法注冊程序集。
CREATEASSEMBLY[ipLib]FROM'c:\clr\ipLib.dll'
3、創建存儲過程
CREATEPROCEDUREget_ip_addr_info@ipnvarchar(20),@infonvarchar(500)OUTPUTASEXTERNALNAMEipLib.AddrInfo.getAddrInfo
之后你就可以看到名為get_ip_addr_info的存儲過程,調用方法與普通T/SQL存儲過程相同。
到此,關于“如何用SQL Server 2005存儲過程實現IP地址歸屬地查詢”的學習就結束了,希望能夠解決大家的疑惑。理論與實踐的搭配能更好的幫助大家學習,快去試試吧!若想繼續學習更多相關知識,請繼續關注億速云網站,小編會繼續努力為大家帶來更多實用的文章!
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。