asp调用mssql存储过程之完全示例.
浅谈在asp中调用sqlserver中的存储过程

浅谈在ASP中调用SQL SERVER中的存储过程论文导读:ASP (ActiveServer Pages) 是服务器端的脚本编写环境,可用来创建动态Web页、生成功能强大的Web应用程序和各种基于B/S结构的治理系统。
本文就针对ASP调用SQL SERVER中的储备过程来谈谈自己的观点。
下面要紧介绍如何利用COMMAND对象来对储备过程的调用。
关键词:ASP,储备过程,COMMAND对象,CONNECTION对象ASP (Active Server Pages) 是服务器端的脚本编写环境,可用来创建动态Web页、生成功能强大的Web应用程序和各种基于B/S结构的治理系统。
ASP技术以通俗易明白的编程方式受到宽敞读者的青睐,读者通过短期的基础知识及实例培训即可开发出自己的WEB网站。
SQLSERVER是WEB站点部署最常用的数据库,它与ASP结合开发成为这一领域的经典合作。
本文就针对A SP调用SQL SERVER中的储备过程来谈谈自己的观点。
1、储备过程的简介1.1储备过程的定义:储备过程是一组编译在单个执行打算中的Trans act-SQL语句,它将一些固定的操作集中起来交给SQL SERVER数据库服务器完成,以实现某个任务。
在需要使用时只要调用即可。
1.2使用储备过程的优点1)通过本地储备、代码预编译和缓存技术实现高性能的数据操作。
储备过程是SQL语句和部分操纵流语句的预编译集合,储备过程被进行了编译和优化,当储备过程第一次执行时,SQL SERVER为其产生查询打算并将其储存在内存中,如此以后在调用该储备过程时就不必再进行编译,这能在一定程度上改善系统的性能。
2)通过通用编程结构和过程重用实现编程框架。
假如业务规则发生了变化,能够通过修改储备过程来适应新的业务规则,而不必修改客户端应用程序。
如此所有调用该储备过程的应用程序就会遵循新的业务规则。
3)通过隔离和加密的方法提高了数据库的安全性。
ASP连接MSSQL和Access数据库的接口代码文库

连接MSSQL代码(附加判断代码):引用内容<%dim cnset cn=server.createobject("adodb.connection")cn.connectionstring="driver={SQLserver};server=taihang;datebase=taihang;uid=sa;pwd=hacker"cn.openIf cn.state=1 Thenresponse.write"数据库连接对象已打开"Elseresponse.write"数据库连接对象未打开"end Ifcn.closeSet cn=nothing%>连接Access常用方法:引用内容Dim conn,strDataPath,connStrset conn=server.createobject("ADODB.connection") '//定义数据库连接对象strDataPath=server.MapPath("example.mdb") '//数据库路径字符串connStr="Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" & strDataPath '//数据库连接conn.open connStr也可以用:引用内容Dim conn,strDataPath,connStrset conn=server.createobject("ADODB.connection") '//定义数据库连接对象strDataPath=server.MapPath("example.mdb") '//数据库路径字符串connStr="driver={Microsoft Access Driver (*.mdb)};dbq=" & strDataPath '//数据库连接conn.Open connStr注解:因为我们想打开的是Access(.mdb)数据库,所以我们要透过Access的ODBC驱动程序{Microsoft Access Driver (*.mdb)}来存取数据库,dbp参数则是用来指定想打开的数据库文件,因为它必须是完整路径名称,所以我们上一语句用了Server.MapPath 函数。
asp调用mssql存储过程之完全示例

asp调用mssql存储过程之完全示例可能有不少朋友使用SQL SERVER做开发也已经有段日子,但还没有或者很少在项目中使用存储过程,或许有些朋友认为根本没有必要使用存储过程等等。
其实当你一个项目做完到了维护阶段时,就会发现存储过程给我们带来了好处了,修改方便,不能去改我们的应用程序,只需要改存储过程的内容,而且还可以使我们的程序速度得到提高。
SQL SERVER 联机丛书中的定义:存储过程是保存起来的可以接受和返回用户提供的参数的 Transact-SQL 语句的集合。
可以创建一个过程供永久使用,或在一个会话中临时使用(局部临时过程),或在所有会话中临时使用(全局临时过程)。
也可以创建在 Microsoft SQL Server 启动时自动运行的存储过程。
要使用存储过程,首先我们必需熟悉一些基本的T-SQL语句,因为存储过程是由于一组T-SQL语句构成的,并且,我们需要了解一些关于函数、过程的概念,因为我们需要在应用程序中调用存储过程,就像我们调用应用程序的函数一样,不过调用的方法有些不同。
下面我们来看一下存储过程的建立和使用方法。
一、创建存储过程和数据表一样,在使用之前我们需要创建存储过程,它的简明语法是:以下是引用片段:CREATE PROC 存储过程名称[参数列表(多个以“,”分隔)]ASSQL 语句例:以下是引用片段:CREATE PROC upGetUserName@intUserId INT,@ostrUserName NVARCHAR(20) OUTPUT -- 要输出的参数ASBEGIN-- 将uName的值赋给 @ostrUserName 变量,即要输出的参数SELECT @ostrUserName=uName FROM uUser WHERE uId=@intUserIdEND其中 CREATE PROC 语句(完整语句为CREATE PROCEDURE)的意思就是告诉SQL SERVER,现在需要建立一个存储过程,upGetUserName 就是存储过程名称,@intUserId 和@ostrUserName 分别是该存储过程的两个参数,注意,在SQL SERVER中,所有用户定义的变量都以“@”开头,OUTPUT关键字表示这个参数是用来输出的,AS之后就是存储过程内容了。
ASP调用MSSQL存储过程并返回记录集源码详解

ASP调用MSSQL存储过程并返回记录集源码详解以下是asp代码(demo.asp):<%@LANGUAGE="VBSCRIPT" CODEPAGE="936"%><!--#include file="adovbs.inc"--><%’通用的ASP读取MSSQL存储过程代码示例’返回临时表记录集’带传递参数dim conn,connstr,cmd,rsconnstr = "Provider=SQLOLEDB;server=服务器计算机名或IP地址;uid=用户名;pwd=密码;DATABA SE=数据库名称;" ’连接数据库字符串Set conn = Server.CreateObject("ADODB.Connection") ’创建conn对象conn.open connstr ’打开数据库Set Cmd=server.CreateObject("mand") ’创建command对象Cmd.ActiveConnection=connmandText="存储过程名" ’调用存储过程名称mandType=4cmd.prepared=trueCmd.Parameters.Append Cmd.CreateParameter("fyear",adInteger,1,2,"2007") ’示例传递给存储过程一个年份,类型是integer,对应存储过程中的@fyear变量Cmd.Parameters.Append Cmd.CreateParameter("myname",adVarChar,adParamInput,50,"阿里西西") ’示例传递给存储过程一个中文字符,类型是varchar,长度为50,对应存储过程中的@myname变量set rs=Cmd.execute’<!--循环显示返回记录集全部记录-->while not rs.eofresponse.write "<div>"&rs(0)&"|"&rs(1)&"|"&rs(2)&"</div>"rs.movenextwend’<!--循环显示返回记录集全部记录-->’<!--释放对象-->rs.closeset rs = nothingconn.closeset conn = nothingset cmd = nothing’<!--释放对象-->%>以下是存储过程代码:SET QUOTED_IDENTIFIER OFFGOSET ANSI_NULLS OFFGOALTER PROCEDURE 存储过程名(@fyear int,@myname varchar(50))ASset nocount onbegin--创建临时表create table #tmp_demo(tmp_fyear int,tmp_name varchar(50),tmp_info varchar(2000),tmp_sum in t,tmp_int int)insert into #tmp_demo select fyear,fname,finfo,sum(fsum),isnull((select fint from tb2 where fid=tb1.fid and fname=tb1.fname),0)from tb1group by fname order by fname--示例判断并返回记录if (@fyear<>’’ and @myname=’’)select * from #tmp_demo where tmp_fyear = @fyear order by tmp_sum descelse if (@fyear<>’’ and @myname<>’’)select * from #tmp_demo where tmp_fyear = @fyear and tmp_name = @myname order by tmp_su m descelseselect * from #tmp_demo order by tmp_sum descendGOSET QUOTED_IDENTIFIER OFFGOSET ANSI_NULLS ONGO以下adovbs.inc代码:<%’--------------------------------------------------------------------’ Microsoft ADO’’ (c) 1996 Microsoft Corporation. All Rights Reserved.’’’’ ADO constants include file for VBScript’’--------------------------------------------------------------------’---- CursorTypeEnum Values ----Const adOpenForwardOnly = 0Const adOpenDynamic = 2Const adOpenStatic = 3’---- CursorOptionEnum Values ---- Const adHoldRecords = &H00000100 Const adMovePrevious = &H00000200 Const adAddNew = &H01000400Const adDelete = &H01000800Const adUpdate = &H01008000Const adBookmark = &H00002000 Const adApproxPosition = &H00004000 Const adUpdateBatch = &H00010000 Const adResync = &H00020000Const adNotify = &H00040000’---- LockTypeEnum Values ----Const adLockReadOnly = 1Const adLockPessimistic = 2Const adLockOptimistic = 3Const adLockBatchOptimistic = 4’---- ExecuteOptionEnum Values ---- Const adRunAsync = &H00000010’---- ObjectStateEnum Values ----Const adStateClosed = &H00000000 Const adStateOpen = &H00000001 Const adStateConnecting = &H00000002 Const adStateExecuting = &H00000004 ’---- CursorLocationEnum Values ---- Const adUseServer = 2Const adUseClient = 3’---- DataTypeEnum Values ----Const adEmpty = 0Const adTinyInt = 16Const adSmallInt = 2Const adInteger = 3Const adBigInt = 20Const adUnsignedTinyInt = 17Const adUnsignedSmallInt = 18Const adUnsignedInt = 19Const adUnsignedBigInt = 21Const adSingle = 4Const adDouble = 5Const adCurrency = 6Const adDecimal = 14Const adNumeric = 131Const adError = 10Const adUserDefined = 132Const adVariant = 12Const adIDispatch = 9Const adIUnknown = 13Const adGUID = 72Const adDate = 7Const adDBDate = 133Const adDBTime = 134Const adDBTimeStamp = 135Const adBSTR = 8Const adChar = 129Const adVarChar = 200Const adLongVarChar = 201Const adWChar = 130Const adVarWChar = 202Const adLongVarWChar = 203Const adBinary = 128Const adVarBinary = 204Const adLongVarBinary = 205’---- FieldAttributeEnum Values ----Const adFldMayDefer = &H00000002Const adFldUpdatable = &H00000004Const adFldUnknownUpdatable = &H00000008 Const adFldFixed = &H00000010Const adFldIsNullable = &H00000020Const adFldMayBeNull = &H00000040Const adFldLong = &H00000080Const adFldRowID = &H00000100Const adFldRowVersion = &H00000200Const adFldCacheDeferred = &H00001000’---- EditModeEnum Values ----Const adEditNone = &H0000Const adEditInProgress = &H0001Const adEditAdd = &H0002Const adEditDelete = &H0004’---- RecordStatusEnum Values ----Const adRecOK = &H0000000Const adRecNew = &H0000001Const adRecModified = &H0000002Const adRecDeleted = &H0000004Const adRecUnmodified = &H0000008Const adRecInvalid = &H0000010Const adRecMultipleChanges = &H0000040 Const adRecPendingChanges = &H0000080 Const adRecCanceled = &H0000100Const adRecCantRelease = &H0000400Const adRecConcurrencyViolation = &H0000800 Const adRecIntegrityViolation = &H0001000 Const adRecMaxChangesExceeded = &H0002000 Const adRecObjectOpen = &H0004000Const adRecOutOfMemory = &H0008000Const adRecPermissionDenied = &H0010000 Const adRecSchemaViolation = &H0020000 Const adRecDBDeleted = &H0040000’---- GetRowsOptionEnum Values ----Const adGetRowsRest = -1’---- PositionEnum Values ----Const adPosUnknown = -1Const adPosBOF = -2Const adPosEOF = -3’---- enum Values ----Const adBookmarkCurrent = 0Const adBookmarkFirst = 1Const adBookmarkLast = 2’---- MarshalOptionsEnum Values ----Const adMarshalAll = 0Const adMarshalModifiedOnly = 1’---- AffectEnum Values ----Const adAffectCurrent = 1Const adAffectGroup = 2Const adAffectAll = 3’---- FilterGroupEnum Values ----Const adFilterNone = 0Const adFilterPendingRecords = 1Const adFilterAffectedRecords = 2Const adFilterFetchedRecords = 3Const adFilterPredicate = 4’---- SearchDirection Values ----Const adSearchForward = 1Const adSearchBackward = -1’---- ConnectPromptEnum Values ----Const adPromptAlways = 1Const adPromptComplete = 2Const adPromptCompleteRequired = 3Const adPromptNever = 4’---- ConnectModeEnum Values ----Const adModeUnknown = 0Const adModeRead = 1Const adModeWrite = 2Const adModeReadWrite = 3Const adModeShareDenyRead = 4Const adModeShareDenyWrite = 8Const adModeShareExclusive = &HcConst adModeShareDenyNone = &H10’---- IsolationLevelEnum Values ----Const adXactUnspecified = &HffffffffConst adXactChaos = &H00000010Const adXactReadUncommitted = &H00000100 Const adXactBrowse = &H00000100Const adXactCursorStability = &H00001000 Const adXactReadCommitted = &H00001000 Const adXactRepeatableRead = &H00010000 Const adXactSerializable = &H00100000 Const adXactIsolated = &H00100000’---- XactAttributeEnum Values ----Const adXactCommitRetaining = &H00020000 Const adXactAbortRetaining = &H00040000’---- PropertyAttributesEnum Values ----Const adPropNotSupported = &H0000Const adPropRequired = &H0001Const adPropOptional = &H0002Const adPropRead = &H0200Const adPropWrite = &H0400’---- ErrorValueEnum Values ----Const adErrInvalidArgument = &Hbb9Const adErrNoCurrentRecord = &HbcdConst adErrIllegalOperation = &Hc93Const adErrInTransaction = &HcaeConst adErrFeatureNotAvailable = &Hcb3 Const adErrItemNotFound = &Hcc1Const adErrObjectInCollection = &Hd27Const adErrObjectNotSet = &Hd5cConst adErrDataConversion = &Hd5dConst adErrObjectClosed = &He78Const adErrObjectOpen = &He79Const adErrProviderNotFound = &He7aConst adErrBoundToCommand = &He7b Const adErrInvalidParamInfo = &He7cConst adErrInvalidConnection = &He7dConst adErrStillExecuting = &He7fConst adErrStillConnecting = &He81’---- ParameterAttributesEnum Values ---- Const adParamSigned = &H0010Const adParamNullable = &H0040Const adParamLong = &H0080’---- ParameterDirectionEnum Values ---- Const adParamUnknown = &H0000Const adParamInput = &H0001Const adParamOutput = &H0002Const adParamInputOutput = &H0003Const adParamReturnValue = &H0004’---- CommandTypeEnum Values ----Const adCmdUnknown = &H0008Const adCmdText = &H0001Const adCmdTable = &H0002Const adCmdStoredProc = &H0004’---- SchemaEnum Values ----Const adSchemaProviderSpecific = -1Const adSchemaAsserts = 0Const adSchemaCatalogs = 1Const adSchemaCharacterSets = 2Const adSchemaCollations = 3Const adSchemaColumns = 4Const adSchemaCheckConstraints = 5 Const adSchemaConstraintColumnUsage = 6 Const adSchemaConstraintTableUsage = 7 Const adSchemaKeyColumnUsage = 8 Const adSchemaReferentialContraints = 9 Const adSchemaTableConstraints = 10 Const adSchemaColumnsDomainUsage = 11 Const adSchemaIndexes = 12Const adSchemaColumnPrivileges = 13 Const adSchemaTablePrivileges = 14Const adSchemaUsagePrivileges = 15 Const adSchemaProcedures = 16Const adSchemaSchemata = 17Const adSchemaSQLLanguages = 18Const adSchemaStatistics = 19Const adSchemaTables = 20Const adSchemaTranslations = 21Const adSchemaProviderTypes = 22Const adSchemaViews = 23Const adSchemaViewColumnUsage = 24 Const adSchemaViewTableUsage = 25Const adSchemaProcedureParameters = 26 Const adSchemaForeignKeys = 27Const adSchemaPrimaryKeys = 28Const adSchemaProcedureColumns = 29 %>。
ASP调用存储过程的方法

ASP调用存储过程的方法大家知道ASP调用存储过程吗?ASP与存储过程(Stored Procedures)的文章不少,但是我怀疑作者们是否真正实践过。
我在初学时查阅过大量相关资料,发现其中提供的很多方法实际操作起来并不是那幺回事。
1 这也是最简单的方法,两个输入参数,无返回值: set connection = server.createob ject(“adodb.connection”) connection.open someDSN Connection.Execute “procname varvalue1, varvalue2” '将所有对象清为nothing,释放资源 connection.close set connection = nothing 2 如果要返回Recordset 集: set connection = server.createob ject(“adodb.connection”) connection.open someDSN set rs = server.createob ject(“adodb.recordset”) rs.Open “Exec procname varvalue1, varvalue2”,connection 将所有对象清为nothing,释放资源 rs.close connection.close set rs = nothing set connection = nothing 3 以上两种方法都不能有返回值,(Recordset除外),如果要得到返回值,需要用Command的方法。
首先说明,返回值有两种。
一种是在存储过程中直接return一个值,就象C和VB的函数返回值那样;另一种是可以返回多个值,存储这些值的变量名称需要在调用参数中先行指定。
这个例子要处理多种参数,输入参数,输出参数,返回记录集以及一个直接返回值(够全了吧?) 存储过程如下: use pubs GO -- 建立存储过程 create procedure sp_PubsTest -- 定义三个参数变量,注意第三个,特别标记是用于输出 @au_lname varchar (20), @intID int, @intIDOut int OUTPUT AS SELECT @intIDOut = @intID + 1 SELECT * FROM authors WHERE au_lname LIKE @au_lname + '%' --直接返回一个值 RETURN @intID + 2 相信大家已经了解ASP调用存储过程了吧!。
asp导航excel数据到mssqlaccessmysql等数据方法

asp导航excel数据到mssqlaccessmysql等数据方法下面是一段简单的由asp导入excel数据保存到其它的数据如有mssql access mysql 等哦好了费话不说多了来看看下面的代码吧<! #include file="adoconn asp" > <% Set xlsconn = server CreateObject("adodb connection") set rs=server CreateObject("adodb recordset")source =server mappath(" ")&""&replace(request("path") "/" "") myConn_Xsl="Provider=Microsoft Jet OLEDB ;Data Source=" &source & ";Extended Properties=Excel " xlsconn open myConn_Xslsql="select * from [商品列表$]" set rs=xlsconn execute(sql) if not rs eof then while not rs eof names=rs("商品名") pic=rs("图片")sql="insert into [product](namese pic) values( "& names &" "& pic &" )" conn execute(sql)rs movenext wendend if response write "导入成功" end if %>数据连接文件<! #include file="adoconn asp" >lishixinzhi/Article/program/net/201311/14100。
sql存储过程和asp调用真正完整版

SQL存储过程和ASP调用<真正完整版>SQL存储过程和ASP调用春暖花开- BY - 2006-5-13 19:18:00ASP与存储过程(Stored Procedures)的文章不少,但是我怀疑作者们是否真正实践过。
我在初学时查阅过大量相关资料,发现其中提供的很多方法实际操作起来并不是那么回事。
对于简单的应用,这些资料也许是有帮助的,但仅限于此,因为它们根本就是千篇一律,互相抄袭,稍微复杂点的应用,就全都语焉不详了。
现在,我基本上通过调用存储过程访问SQL Server,以下的文字都是实践的总结,希望对大家能有帮助。
存储过程就是作为可执行对象存放在数据库中的一个或多个SQL命令。
定义总是很抽象。
存储过程其实就是能完成一定操作的一组SQL语句,只不过这组语句是放在数据库中的(这里我们只谈SQL Server)。
如果我们通过创建存储过程以及在ASP中调用存储过程,就可以避免将SQL语句同ASP代码混杂在一起。
这样做的好处至少有三个:第一、大大提高效率。
存储过程本身的执行速度非常快,而且,调用存储过程可以大大减少同数据库的交互次数。
第二、提高安全性。
假如将SQL语句混合在ASP代码中,一旦代码失密,同时也就意味着库结构失密。
第三、有利于SQL语句的重用。
在ASP中,一般通过command对象调用存储过程,根据不同情况,本文也介绍其它调用方法。
为了方便说明,根据存储过程的输入输出,作以下简单分类: 1. 只返回单一记录集的存储过程假设有以下存储过程(本文的目的不在于讲述T-SQL语法,所以存储过程只给出代码,不作说明):/*SP1*/CREATE PROCEDURE dbo.getUserListasset nocount onbeginselect * from dbo.[userinfo]endgo以上存储过程取得userinfo表中的所有记录,返回一个记录集。
通过command对象调用该存储过程的ASP代码如下: ‘**通过Command对象调用存储过程**DIM MyComm,MyRstSet MyComm =Server.CreateObject("mand")MyComm.ActiveConnection = MyConStr‘MyConStr是数据库连接字串mandText = "getUserList" ‘指定存储过程名mandType = 4 ‘表明这是一个存储过程MyComm.Prepared = true ‘要求将SQL命令先行编译Set MyRst = MyComm.ExecuteSet MyComm = Nothing存储过程取得的记录集赋给MyRst,接下来,可以对MyRst进行操作。
asp.net中调用存储过程的方法

中调⽤存储过程的⽅法本⽂实例讲述了中调⽤存储过程的⽅法。
分享给⼤家供⼤家参考,具体如下:⼀、建⽴并调⽤⼀个不带参数的存储过程如下:CREATE PROCEDURE 全部学⽣<dbo.selectUsers>AS SELECT * FROM 学⽣GOEXEC 全部学⽣建⽴并调⽤⼀个带参数的存储过程如下:CREATE PROCEDURE 学⽣查询1@SNAME VARCHAR(8),@SDEPT VARCHAR(20)AS SELECT * FROM 学⽣ WHERE 姓名=@SNAME AND 所在系=@SDEPTGOEXEC 学⽣查询1 '张三','计算机系'或:EXEC 学⽣查询1 @SNAME='张三',@SDEPT='计算机系'(2)删除存储过程:DROP PROCEDURE<存储过程名组>⼆、在中调⽤存取过程:DBHelper.cs//不带参数public static DataTable GetList(string sqlDBO){DataSet ds = new DataSet();SqlCommand cmd = new SqlCommand(sqlDBO, Connection);mandType = CommandType.StoredProcedure; //指定命令类型为存储过程SqlDataAdapter da = new SqlDataAdapter(cmd);da.Fill(ds);return ds.Tables[0];}//带参数public static DataTable GetList(string sqlDBO,params SqlParameter[] values){DataSet ds = new DataSet();SqlCommand cmd = new SqlCommand(sqlDBO, Connection);mandType = CommandType.StoredProcedure; //指定命令类型为存储过程cmd.Parameters.AddRange(values);//cmd.Parameters.AddWithValue("@参数1", 值1);//cmd.Parameters.AddWithValue("@参数2", 值2);SqlDataAdapter da = new SqlDataAdapter(cmd);da.Fill(ds);return ds.Tables[0];}UsersService.cs//不带参数public static IList<Users> GetUserList(){List<Users> list = new List<Users>();DataTable table = DBHelper.GetList("存储过程名称");foreach (DataRow row in table.Rows){Users users = new Users();users.Id=(int)row["id"];erName=(string)row["userName"];users.Password=(string)row["password"];list.Add(users);}return list;}//带参数public static IList<Users> GetUserList(string userName,string password){List<Users> list = new List<Users>();SqlParameter[] para=new SqlParameter[]{new SqlParameter("@userName",userName),new SqlParameter("@password",password)};DataTable table = DBHelper.GetList("存储过程名称",para);foreach (DataRow row in table.Rows){Users users = new Users();users.Id=(int)row["id"];erName=(string)row["userName"];users.Password=(string)row["password"];list.Add(users);}return list;}更多关于相关内容感兴趣的读者可查看本站专题:《》、《》、《》、《》及《》。
asp调用mysql数据库

MySQL数据库以它短小、方便、速度快、免费等优点成为很多网站目前的首选数据库,但一般都是用PHP+MySQL相结合来开发各种动态页面,其实ASP也可以。
最新的配置是Windows 2000/2003+IIS+MySQL-5.0.26-Win+PHP5,还需要下载一个myodbd3.0.⑴安装MySQL ODBD 的驱动程序,将下载的myodbd文件复制到Windows\System 32目录下,然后建立一个新文件,扩展名为reg(就是注册表文件),将一下内容复制到该文件中。
REGEDIT4[HKEY_MACHINE\SOFTWARE\ODBC\ODBCINST.INI\myodbc driver]"UsageCount"=dword:00000002"Driver"="C:\\WINDOWS\\System32\\myodbc.dll""Setup"="C:\\WINDOWS\\System32\\myodbc.dll""SQLLevel"="1""FileUsage"="0""DriverODBCVer"="02.50""Connectfunctions"="YYY""APILevel"="1""CpTimeout"="120"[HKEY_LOCAL_MACHINE\SOFTWARE\ODBC\ODBCINST.INI\OCBC Drivers]"myodbc driver"="installed"保存后双击该文件,将上面代码注册到Windows注册表中。
ASP+SQL+Server带条件查询的分页存储过程及其ASP调用实例

ASP+SQL Server 带条件查询的分页存储过程及其 ASP 调用实例 (该例子已经在环境 IIS+ASP+SQLServer 调试过可用,供 Web 初学者直接试用, 如有问题请及时留言指正) 1。
准备 Server SQL 建立数据库表 Diary数据库表 Diary 建立代码: if exists (select * from dbo.sysobjects where id = object_id(N'[dbo].[xDiary]') and OBJECTPROPERTY(id, N'IsUserTable') = 1) drop table [dbo].[xDiary] GO CREATE TABLE [dbo].[xDiary] ( [DiaryID] [int] IDENTITY (1, 1) NOT NULL , [DiaryDate] [smalldatetime] NOT NULL , [DiaryName] [nvarchar] (50) COLLATE Chinese_PRC_CI_AS NOT NULL , [DiaryInfo] [ntext] COLLATE Chinese_PRC_CI_AS NOT NULL ) ON [PRIMARY] TEXTIMAGE_ON [PRIMARY] GO2.创建记录总集的存储过程 cn_RecordCount存储过程 Cn_RecordCount 代码: CREATE PROCEDURE [dbo].[cn_RecordCount] --返回记录总集的存储过程 @TableName nvarchar(100), --数据库表名 @strWhere varchar(500), --筛选条件 @count int output --记录集总数 AS declare @sqlStr nvarchar(1000) if @strWhere!='' set @sqlStr=N'select @count=count(*) from ' +@TableName+' where 1=1 '+@strWhere else set @sqlStr=N'select @count=count(*) from '+@TableName exec sp_executesql @sqlstr,N'@count int output',@count output GO3.分页的存储过程 cn_PageView分页的存储过程 Cn_PageView: CREATE PROCEDURE [dbo].[cn_PageView] @tablename varchar(200), @strGetFields varchar(200), @PageIndex int, @PageSize int, @strWhere varchar(100), @strOrder varchar(100), @intOrder bit AS begin declare @strSql varchar(500) declare @strTemp varchar(100) declare @strOrders varchar(50) declare @table varchar(70) if @intOrder = 0 begin set @strTemp='>(select max' set @strOrders=' order by '+@strOrder+' asc ' end else begin set @strTemp='<(select min' set @strOrders=' order by '+@strOrder+' desc ' end if @PageIndex=1 begin if @strWhere='' begin set @strSql='select top '+str(@PageSize)+@strGetFields+' from '+@tablename+' ' +@strOrders end else begin set @strSql='select top '+str(@PageSize)+@strGetFields+' from '+@tablename+' where '+@strWhere+' '+@strOrders end end else beginset @strSql = 'select top'+str(@pageSize)+' '+@strGetFields+' from '+@tablename+' where '+@strOrder+' '+@strTemp+' ('+@strOrder+')' +' from (select top '+str((@pageIndex-1)*@pageSize)+' '+@strGetFields+' from '+@tablename+ ' '+@strOrders+ ') as tempTable ) '+@strOrders --set @strSql='select top '+str(@PageSize)+' '+@strGetFields+' from '+@tablename+' where '+@strOrder+' '+@strTemp+' (' +@strOrder+') ' --+' from (select top '+str((@PageIndex-1)*@PageSize)+' '+@strGetFields+' from '+@tablename+' '+@strOrders+') as TempTable) '+@strOrders if @strWhere!=' ' begin set @strSql= 'select top '+str(@pageSize)+ ' '+@strGetFields+' from '+@tablename+ ' where '+@strOrder+ ' '+@strTemp+' ('+@strOrder+') ' +' from(select top '+str((@pageIndex-1)*@pageSize)+' '+@strGetFields+' from '+@tablename+' where '+@strWhere+' ' +@strOrders+') as tempTable) and '+@strWhere+' '+@strOrders end end exec(@strSql) end GO4.ASP 页面调用存储分页实例ASP 页面调用存储分页代码: <%Self=Request.ServerVariables("Script_Name") DataSource="你的服务器名" Catalog="你的数据库名" UID="sa" PWD="" Connstr="Provider=SQLOLEDB;Data Source="&DataSource&";Initial CataLog="&Catalog&";UID="&UID&";PWD="&PWD&";" set rs=Server.CreateObject("ADODB.Recordset") set Conn=Server.CreateObject("ADODB.Connection") Conn.Open ConnStr%> <%function MyLabel(En,CH)%><span style="cursor:hand;" title="<%=En%>"><%=CH%></span><%end function%> <table width="999" align="center" border="0" cellpadding="0" cellspacing="0"> <tr valign="top"> <td > <% dimKind,Key,TableName,strGetFields,PageNo,PageSize,strWhere,strWhere2,strOrder TableName="xDiary" strGetFields=" DiaryID,DiaryName,DiaryInfo,DiaryDate " strOrder="DiaryDate" PageNo=int(request("PageNo")) PageSize=10 Kind=Request("Kind") Key=Request("Key") if Key<>"" then strWhere=" and "&Kind&" like '%"&Key&"%' " strWhere2=" "&Kind&" like ''%"&Key&"%'' " else strWhere="" strWhere2="" end if Set Comm=Server.CreateObject("mand") Set Comm.ActiveConnection=Conn mandText="cn_RecordCount" mandType=4 Comm.Prepared=true Comm.Parameters.Append Comm.CreateParameter("@TableName",200,1,500,TableName) Comm.Parameters.Append Comm.CreateParameter("@strWhere",200,1,500,strWhere) Comm.Parameters.Append Comm.CreateParameter("@count",3,2) Comm.Execute RecordCount=Comm.Parameters("@count").value set Comm=nothing if RecordCount mod PageSize=0 then PageCount=RecordCount\PageSize else PageCount=RecordCount\PageSize+1 end if if PageNo="" or PageNo<=0 then PageNo=1 end if sql="exec cn_PageView '"&TableName&"','"&strGetFields&"',"&PageNo&","&PageSize&",'"&strWhere2&"','" &strOrder&"',1"set rs=Server.Createobject("ADODB.Recordset") 'MySQL(sql) %> <table width="100%" align="center" border="0" cellpadding="1" cellspacing="0"style="border-bottom:0 double <%=CapColor%>"> <form method=post action="<%=Self%>" name="PageForm"> <tr > <td > </td> <td width="100"> <select name="Kind"> <option value="DiaryName"<%if Kind="DiaryName"then%>selected<%end if%>>By Topic</option> <option value="DiaryInfo"<%if Kind="DiaryInfo"then%>selected<%end if%>>By Content</option> </select></td> <td width="100"><input type="text" name="Key" value='<%=Key%>'style="border:1 solid <%=CapColor%>" size="50"></td> <td width="100" align="right"><input type="submit" value="查找发现(Discover)" style="border:1 solid <%=CapColor%>;background-color:<%=DataColor%>" > </td> </tr> </table> <table width="100%" align="center" border="1" cellpadding="3" cellspacing="0" bordercolorlight="<%=DataColor%>" bordercolordark="<%=BackColor%>" > <tr align="center" > <th nowrap >记事 ID</th> <th nowrap >记事日期</th> <th nowrap >记事主题</th> <th nowrap>记事内容</th> </tr> <%rs.open sql,conn,1,1 if not rs.eof then i=1 do while not rs.eof%> <tr align="center" height="32" bgcolor="<%'=AlterColor(i,BackColor)%>"> <td nowrap width="10"><%=rs("DiaryID")%></td> <td nowrap width="100"><%=rs("DiaryDate")%></td> <td ><%=rs("DiaryName")%></td> <td ><%=left(rs("DiaryInfo"),30)%></td> </tr> <%rs.MoveNext i=i+1loop%> <table width="100%" border="0" cellspacing="2" cellpadding="3" style="border-left:5 double <%=CapColor%>;border-right:5 double <%=CapColor%>;border-top:1 double <%=DataColor%>;border-bottom:1 double <%=DataColor%>"> <tr align="right" bgcolor="<%=BackColor%>"> <td nowrap> Records=<%=MyLabel(CH,RecordCount)%> Pages=<%=MyLabel(CH,PageCo unt)%> PageNo=<%=MyLabel(CH,PageNo)%> <%if PageNo<>1 then%> <a href="Javascript:document.PageForm.PageNo.value=1;document.PageForm.submit ();"><%=MyLabel("首页","First")%></a> <%else %> <%=MyLabel("首页","First")%> <%end if%> <%if PageNo>1 then %> <a href="javascript:document.PageForm.PageNo.value--;document.PageForm.submit() ;"><%=MyLabel("上页","Prev")%></a> <%else%> <%=MyLabel("上页","Prev")%> <%end if%> <%if PageNo+1>PageCount then %> <%=MyLabel("下页","Next")%> <%else%> <a href="Javascript:document.PageForm.PageNo.value++;document.PageForm.submit ();"><%=MyLabel("下页","Next")%></a> <%end if %> <%if PageNo+1>PageCount then %> <%=MyLabel("末页","Last")%> <%else %> <a href="Javascript:document.PageForm.PageNo.value=<%=PageCount%>;document. PageForm.submit();"><%=MyLabel("末页","Last")%></a> <%end if%> </td> <td width="30"><input type="text" name="PageNo" value="<%=PageNo%>"size="2" maxlength="3"></td> <td width="30"><input style="vertical-align:bottom;" type="image" src="/Image/Icon_Go.gif" onClick="JavaScript: PageForm.submit()"></td> </tr> </table> <%else response.write "<tr><td colspan=""8"">No Data!</td></tr>" end if%> </table> </td> </tr> </table>。
在Asp中使用存储过程

SELECT @link_id = @@IDENTITY
END
ASP调用带参数存储过程的几种方式
作者:中国论坛网收集 来源: 加入时间:2004-8-25
作者: 讨饭猫
ASP调用带参数存储过程的几种方式
With objCmd
.ActiveConnection = conn 'You can also just specify a connection string here
.CommandText = "sp_InsertArticle"
.CommandType = adCmdStoredProc 'Requires the adovbs.inc file or typelib meta tag
asp存储过程使用大全
() 2002-2-19 (请双击自动滚屏观看,单击停止,再击..)
1,调用没有参数的存储过程
<%
set conn=server.CreateObject("adodb.connection")
set cmd=server.CreateObject("mand")
'Instantiate objects
Set objConn = Server.CreateObject("ADODB.Connection")
set objCmd = Server.CreateObject("mand")
conn.Open Application("ConnectionString")
如何在ASP中调用SQL存储过程
ASP与SQL数据库连接及SQL常用命令使用方法

ASP与SQL数据库连接及SQL常⽤命令使⽤⽅法<%dim connset conn=server.createobject("ADODB.connection")con.open "PROVIDER=SQLOLEDB;DATA SOURCE=SQL服务器名称或IP地址;UID=sa;PWD=数据库密码;DATABASE=数据库名称%><%Dim startime,endtimestartime=timer()'--------------------------------------------------------------------------Dim strSQLServerNameDim strSQLDBUserNameDim strSQLDBPasswordDim strSQLDBName'数据库参数设置'--------------------------------------------------------------------------strSQLServerName = "zhixinda" '服务器名称或地址strSQLDBUserName = "sa" '数据库帐号strSQLDBPassword = "zhixinda" '数据库密码strSQLDBName = "gb" '数据库名称'--------------------------------------------------------------------------Set conn = Server.CreateObject("ADODB.Connection")strCon = "Provider=SQLOLEDB;Server=" & strSQLServerName & ";User ID=" & strSQLDBUserName & ";Password=" & strSQLDBPassword & ";Database=" & strSQLDBName & ";"conn.Open strCon%>建⽴记录集对象:set rs=server.createobject("adodb.recordset")rs.open SQL语句,conn,3,2SQL常⽤命令使⽤⽅法:RS.OPEN SQL,CONN,A,BA: ADOPENFORWARDONLY(=0) 只读,且当前数据记录只能向下移动ADOPENSTATIC(=3) 只读,当前数据记录可⾃由移动ADOPENKEYSET(=1) 可读写,当前数据记录可⾃由移动ADOPENDYNAMIC(=2) 可读写,当前数据记录可⾃由移动,可看到新增记录B: ADLOCKREADONLY(=1) 默认值,⽤来打开只读记录ADLOCKPESSIMISTIC(=2) 悲观锁定ADLOCKOPTIMISTIC(=3) 乐观锁定ADLOCKBATCHOPTIMISTIC(=4) 批次乐观锁定(1) 数据记录筛选:sql="select * from 数据表 where 字段名=字段值 order by 字段名 [desc]"sql="select * from 数据表 where 字段名 like '%字段值%' order by 字段名 [desc]"sql="select top 10 * from 数据表 where 字段名 order by 字段名 [desc]"sql="select * from 数据表 where 字段名 in ('值1','值2','值3')"sql="select * from 数据表 where 字段名 between 值1 and 值2"(2) 更新数据记录:sql="update 数据表 set 字段名=字段值 where 条件表达式"sql="update 数据表 set 字段1=值1,字段2=值2 …… 字段n=值n where 条件表达式"(3) 删除数据记录:sql="delete from 数据表 where 条件表达式"sql="delete from 数据表" (将数据表所有记录删除)(4) 添加数据记录:sql="insert into 数据表 (字段1,字段2,字段3 …) valuess (值1,值2,值3 …)"sql="insert into ⽬标数据表 select * from 源数据表" (把源数据表的记录添加到⽬标数据表)conn.execute(sql)'获得刚刚插⼊数据的id值set rs=conn.execute("select scope_identity()")value=rs(0)'取得的当前值(5) 数据记录统计函数:AVG(字段名) 得出⼀个表格栏平均值COUNT(*|字段名) 对数据⾏数的统计或对某⼀栏有值的数据⾏数统计MAX(字段名) 取得⼀个表格栏最⼤的值MIN(字段名) 取得⼀个表格栏最⼩的值SUM(字段名) 把数据栏的值相加+++++++++++++++++++++++++++++++++++++++++++++++++++引⽤以上函数的⽅法:1>记录集调出set rs=conn.execute("select COUNT(*) as count,id from user")2>分开sql="select sum(字段名) as 别名 from 数据表 where 条件表达式"set rs=conn.excute(sql)⽤ rs("别名") 获取统的计值,其它函数运⽤同上。
ASP调用存储过程详解

ASP调用存储过程详解ASP调用存储过程是一种常用的数据库操作方式。
存储过程是在数据库服务器上预先编译和存储的一组SQL语句,可以接受输入参数,执行一系列操作,并返回结果。
通过在ASP中调用存储过程,可以有效地提高数据库操作的效率和安全性。
下面将详细介绍ASP调用存储过程的步骤和注意事项。
一、创建存储过程在数据库服务器上创建存储过程是调用存储过程的前提。
创建存储过程通常可以使用SQL Server Management Studio等数据库管理工具。
下面是一个简单的创建存储过程的示例:```CREATE PROCEDURE GetUserInfoASBEGINEND```二、在ASP中调用存储过程下面是一个示例代码,演示了如何在ASP中调用存储过程:```<%Dim connstr, conn, cmd, rs'创建与数据库的连接connstr = "[数据库连接字符串]"Set conn = Server.CreateObject("ADODB.Connection") conn.Open connstrcmd.ActiveConnection = conn'设置输入参数'执行存储过程Set rs = cmd.Execute'处理返回结果While Not rs.EOF'输出结果Response.Write rs("UserName") & "<br>"rs.MoveNextWend'关闭数据库连接rs.CloseSet rs = Nothingconn.CloseSet conn = Nothing%>```三、注意事项在使用ASP调用存储过程时,需要注意以下几点:1. 数据库连接需要及时关闭,可以通过调用Close方法来关闭数据库连接对象。
PHP调用MsSQLServer2012存储过程获取多结果集(包含output参数)的详解

PHP调⽤MsSQLServer2012存储过程获取多结果集(包含output参数)的详解复制代码代码如下:$dbh = new PDO('sqlsrv:server=连接地址;Database=数据库名', ⽤户名, 密码);try {$procName = "P_Test_GetMixData";$stmt = $dbh->prepare("EXEC $procName ?, ?, ?");$nReturnValue = 0;$strReturnValue = "";$strSearchValue = "abandonship";$stmt->bindParam(1, $nReturnValue, PDO::PARAM_INT | PDO::PARAM_INPUT_OUTPUT,PDO::SQLSRV_PARAM_OUT_DEFAULT_SIZE);$stmt->bindParam(2, $strReturnValue, PDO::PARAM_STR | PDO::PARAM_INPUT_OUTPUT, 10);$stmt->bindParam(3, $strSearchValue , PDO::PARAM_STR);$stmt->execute();//获取第⼀个结果集.$rowset_1 = $stmt->fetch(PDO::FETCH_ASSOC);print_r($rowset_1);echo '<br><br>';//获取第⼆个结果集.$stmt->nextRowset();$rowset_2 = $stmt->fetch();print_r($rowset_2);echo '<br><br>';$stmt->nextRowset();// 获取两个输出类型的参数echo $nReturnValue.'<br><br>';echo $strReturnValue;} catch (Exception $e) {echo $e->getMessage();}复制代码代码如下:/*** ⽤于测试PDO调⽤MsSQLServer2012存储过程获取复合结果集Demo* Code CreateBy abandonship 2012.10.11**/CREATE PROCEDURE [dbo].[P_Test_GetMixData](@Message_1 tinyint output,@Messgae_2 varchar(10) output,@SearchValue varchar(50)) Asset nocount onset @Message_1 = 123set @Messgae_2 = 'Hi,there!This is abandonship!'select * from _T1 where col1 like '%'+@SearchValue+'%'select * from _T2 where col1 like '%'+@SearchValue+'%'set nocount off【⼀些要注意的问题】:当bindParam中存在需要输出类型的参数时,必须包含长度($length)。
在ASP.NET中用存储过程执行SQL语句

在中⽤存储过程执⾏SQL语句存储过程执⾏效率⽐单独的SQL语句效率⾼。
样编写存储过程?存储过程在SQL Server 2005对应数据库的可编程性⽬录下。
⽐如,创建⼀个存储过程复制代码代码如下:create procedure procNewsSelectNewNewsasbeginselect top 10 n.id,n.title,n.createTime, from news ninner join category c on n.caId=c.idorder by n.createTime descend执⾏定义好的存储过程exec procNewsSelectNewNews存储过程返回的是⼀张表复制代码代码如下:public DataTable test(string procName){DataTable dt=new DataTable();cmd=new SqlCommand(procName,GetConn()); //数据库连接和连接开闭,都放在了GetConn()⽅法中mandType=CommandType.StoredProcedure; //定义SQL语句命令类型为存储过程using (sdr = cmd.ExecuteReader(CommandBehavior.CloseConnection));//⽅法将SQL语句发送给SqlConnection并⽣产⼀个SqlDataReader类对象,该SqlDataReader对象包含SQL命令返回的数据{ dt.Load(sdr); //load查询dataread查询的结果 }return dt;}当⼀个项⽬中既要⽤到SQL语句⼜要⽤到存储过程的时候,⽽执⾏SQL语句和执⾏存储过程的⽅法都差不多,就是相差⼀个CommandType类型,所以如果有这样的情况,我们可以重构关于SQL语句和存储过程这两个⽅法复制代码代码如下:public DataTable ExecuteQuery(string sqlText,CommandType ct); //不仅传⼊SQL语句还传⼊⼀个命令类型{DataTable dt=new DataTable();cmd=new SqlCommand(sqlText,GetConn());mandType=ct;using (sdr = cmd.ExecuteReader(CommandBehavior.CloseConnection)){ dt.Load(sdr);}return dt;}查询⽅法写好之后,就可以写SQL语句或存储过程的⽅法了⽐如:存储过程复制代码代码如下:public DataTable SelectNewNews(){return sqlhelper.ExecuteQuery(“存储过程名”,CommandType.StoredProcedure)}SQL语句复制代码代码如下:public DataTable SelectAll(){DataTable dt=new DataTable();string sql=”select * from news”;dt=sqlhelper.ExecuteQuery(sql,CommandType.Text);· return dt}。
通用SQL存储过程分页以及asp.net后台调用的方法

通⽤SQL存储过程分页以及后台调⽤的⽅法创建表格并添加300万数据use StoredCREATE TABLE UserInfo( --创建表id int IDENTITY(1,1) PRIMARY KEY not null,--添加主键和标识列UserName varchar(50))declare @i int --添加3百万数据,⼤概4分钟时间set @i=1while @i<3000000begininsert into UserInfo (UserName) values(@i)set @i=@i+1end存储过程T-SQLcreate PROCEDURE [dbo].[GetDataList](@TableName varchar(5000), --表名@Fields varchar(5000) = '*', --字段名(全部字段为*)@OrderField varchar(5000), --排序字段(必须!⽀持多字段)@OrderType varchar(5000), --排序类型@sqlWhere varchar(5000) = Null, --条件语句(不⽤加where)@pageSize int, --每页多少条记录@pageIndex int = 1 , --指定当前为第⼏页@TotalPage int output, --返回总页数@totalRecord int output --计算总记录数 --返回总记录数)asbegin Begin Tran --开始事务Declare @sql nvarchar(500);if (@SqlWhere='' or @sqlWhere=NULL)set @sql = 'select @totalRecord = count(*) from ' + @TableNameelseset @sql = 'select @totalRecord = count(*) from ' + @TableName + ' where ' + @sqlWhereEXEC sp_executesql @sql,N'@totalRecord int OUTPUT',@totalRecord OUTPUT--计算总记录数--计算总页数select @TotalPage=CEILING((@totalRecord+0.0)/@PageSize) if (@SqlWhere='' or @sqlWhere=NULL)set @sql = 'Select * FROM (select ROW_NUMBER() Over(order by ' + @OrderField +' ' + @Ordertype+' ) as rowId,' + @Fields + ' from ' + @TableNameelseset @sql = 'Select * FROM (select ROW_NUMBER() Over(order by ' + @OrderField +' ' + @Ordertype+' ) as rowId,' + @Fields + ' from ' + @TableName + ' where ' + @SqlWhere --处理页数超出范围情况if @PageIndex<=0Set @pageIndex = 1if @pageIndex>@TotalPageSet @pageIndex = @TotalPage --处理开始点和结束点Declare @StartRecord intDeclare @EndRecord intset @StartRecord = (@pageIndex-1)*@PageSize + 1set @EndRecord = @StartRecord + @pageSize - 1 --继续合成sql语句set @Sql = @Sql + ') as ' + @TableName + ' where rowid between ' + Convert(varchar(50),@StartRecord) + ' and ' + Convert(varchar(50),@EndRecord)--print @SqlExec(@Sql)---------------------------------------------------If @@Error <> 0BeginRollBack TranReturn -1EndElseBeginCommit TranReturn @totalRecord ---返回记录总数Endend--exec GetDataList 'Userinfo','*','id','desc','',10,1,3,3000000前台页⾯Default2.aspx<%@ Page Language="C#" AutoEventWireup="true" CodeFile="Default2.aspx.cs" Inherits="Default2" %><!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "/TR/xhtml1/DTD/xhtml1-transitional.dtd"><html xmlns="/1999/xhtml"><head runat="server"><title></title></head><body><form id="form1" runat="server"><asp:GridView ID="GridView1" runat="server"></asp:GridView><asp:Label ID="lbl_page" runat="server" Text="Label"></asp:Label></div></form></body></html>后台CS代码Default2.aspx.csusing System;using System.Collections.Generic;using System.Linq;using System.Web;using System.Web.UI;using System.Web.UI.WebControls;using System.Data;using System.Data.SqlClient;using System.Configuration;using System.Text;public partial class Default2 : System.Web.UI.Page{private int PageIndex = 0;//当前页码private int PageSize = 50;//每页⼏条记录private int TotalPage = 1;//总分页数private int TotalRecord = 0;//总记录private string OrderType = " desc";//排序⽅式默认正序protected void Page_Load(object sender, EventArgs e){if (!IsPostBack){GetParams();DataSet ds = PageData("UserInfo", "*", "id", OrderType, "", PageSize, PageIndex, out TotalPage, out TotalRecord);GridView1.DataSource = ds;GridView1.DataBind();lbl_page.Text = GetDivPager("", ds);}}//数据库连接字符public static string StrConn(){//return string.Format("{0}","server=.;database=Stored;user=sa;password=123456");return ConfigurationSettings.AppSettings["ConnString"].ToString();}//Get⽅式获得下⼀页private void GetParams(){if (!String.IsNullOrEmpty(Request["page"])){PageIndex = Convert.ToInt32(Request["Page"]);}else{PageIndex = 1;}}#region 获得分页字符public string GetDivPager(string queryString, DataSet ds){StringBuilder sp = new StringBuilder();int TotalCount = TotalRecord;int rowCount = TotalPage;if (ds != null){sp.AppendFormat(" <p>总记录:<span id=\"sum\">{0}</span>", TotalCount);sp.AppendFormat(" 页码:<em><b id=\"current\">{0}</b>/<span id=\"count\">{1}</span></em> ", PageIndex, rowCount);sp.AppendFormat(" 每页:<span id=\"eachPage\">{0}</span></p> ", PageSize);sp.AppendFormat(" <a href='{0}'>⾸页</a> ", "?page=1" + queryString);if (PageIndex > 1){sp.AppendFormat(" <a href='{0}'>< 上⼀页 </a>", "?page=" + (PageIndex - 1) + queryString);}int temp = 0;int loopc = rowCount > 10 ? 10 : rowCount;for (int i = 0; i < loopc; i++){temp = i + 1;if (PageIndex > 10) { temp = (PageIndex - 10) + i + 1; }sp.AppendFormat(" <a class=\"{0}\" href='{1}'>{2}</a>", PageIndex == temp ? "active" : "", "?page=" + temp + queryString, temp); }if (PageIndex != rowCount){sp.AppendFormat(" <a href='{0}'>下⼀页 ></a>", "?page=" + (PageIndex + 1) + queryString);}sp.AppendFormat(" <a href='{0}'>尾页</a>", "?page=" + rowCount + queryString);}{ds = null;}return sp.ToString();}#endregion#region 获取分页的数据/// <summary>/// 获取分页的数据/// </summary>/// <param name="TblName">数据表名</param>/// <param name="Fields">要读取的字段</param>/// <param name="OrderField">排序字段</param>/// <param name="OrderType">排序⽅式</param>/// <param name="SqlWhere">查询条件</param>/// <param name="PageSize">每页显⽰多少条数据</param>/// <param name="pageIndex">当前页码</param>/// <param name="TotalPage">返回值,共有多少页</param>/// <param name="TotalRecord">返回值,总有多少条记录</param>/// <returns></returns>public static DataSet PageData(string TblName, string Fields, string OrderField, string OrderType, string SqlWhere, int PageSize, int pageIndex, out int TotalPage, out int TotalRecord) {SqlConnection conn = new SqlConnection(StrConn());SqlCommand comm = new SqlCommand("GetDataList", conn);comm.Parameters.Add(new SqlParameter("@TableName", SqlDbType.NVarChar, 100)).Value = TblName;comm.Parameters.Add(new SqlParameter("@Fields", SqlDbType.NVarChar, 1000)).Value = Fields;comm.Parameters.Add(new SqlParameter("@OrderField", SqlDbType.NVarChar, 1000)).Value = OrderField;comm.Parameters.Add(new SqlParameter("@OrderType", SqlDbType.NVarChar, 1000)).Value = OrderType;comm.Parameters.Add(new SqlParameter("@sqlWhere", SqlDbType.NVarChar, 1000)).Value = SqlWhere;comm.Parameters.Add(new SqlParameter("@pageSize", SqlDbType.Int)).Value = PageSize;comm.Parameters.Add(new SqlParameter("@pageIndex", SqlDbType.Int)).Value = pageIndex;comm.Parameters.Add(new SqlParameter("@TotalPage", SqlDbType.Int));comm.Parameters["@TotalPage"].Direction = ParameterDirection.Output;//获得out出来的参数值comm.Parameters.Add(new SqlParameter("@totalRecord", SqlDbType.Int));comm.Parameters["@totalRecord"].Direction = ParameterDirection.Output;mandType = CommandType.StoredProcedure;SqlDataAdapter dataAdapter = new SqlDataAdapter(comm);DataSet ds = new DataSet();dataAdapter.Fill(ds);TotalPage = (int)comm.Parameters["@TotalPage"].Value;TotalRecord = (int)comm.Parameters["@totalRecord"].Value;conn.Close();conn.Dispose();comm.Dispose();return ds;}#endregion}以上这篇通⽤SQL存储过程分页以及后台调⽤的⽅法就是⼩编分享给⼤家的全部内容了,希望能给⼤家⼀个参考,也希望⼤家多多⽀持。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
∙asp调用mssql存储过程之完全示例可能有不少朋友使用SQL SERVER做开发也已经有段日子,但还没有或者很少在项目中使用存储过程,或许有些朋友认为根本没有必要使用存储过程等等。
其实当你一个项目做完到了维护阶段时,就会发现存储过程给我们带来了好处了,修改方便,不能去改我们的应用程序,只需要改存储过程的内容,而且还可以使我们的程序速度得到提高。
SQL SERVER 联机丛书中的定义:存储过程是保存起来的可以接受和返回用户提供的参数的 Transact-SQL 语句的集合。
可以创建一个过程供永久使用,或在一个会话中临时使用(局部临时过程),或在所有会话中临时使用(全局临时过程)。
也可以创建在 Microsoft SQL Server 启动时自动运行的存储过程。
要使用存储过程,首先我们必需熟悉一些基本的T-SQL语句,因为存储过程是由于一组T-SQL语句构成的,并且,我们需要了解一些关于函数、过程的概念,因为我们需要在应用程序中调用存储过程,就像我们调用应用程序的函数一样,不过调用的方法有些不同。
下面我们来看一下存储过程的建立和使用方法。
一、创建存储过程和数据表一样,在使用之前我们需要创建存储过程,它的简明语法是:例:以下是引用片段:CREATE PROC upGetUserName@intUserId INT,@ostrUserName NVARCHAR(20 OUTPUT -- 要输出的参数ASBEGIN-- 将uName的值赋给@ostrUserName 变量,即要输出的参数SELECT @ostrUserName=uName FROM uUser WHERE uId=@intUserId END其中 CREATE PROC 语句(完整语句为CREATE PROCEDURE)的意思就是告诉SQL SERVER,现在需要建立一个存储过程,upGetUserName 就是存储过程名称,@intUserId 和@ostrUserName 分别是该存储过程的两个参数,注意,在SQL SERVER中,所有用户定义的变量都以“@”开头,OUTPUT关键字表示这个参数是用来输出的,AS之后就是存储过程内容了。
只要将以上代码在“查询分析器”里执行一次,SQL SERVER就会在当前数据库中创建一个名为“upGetUserName”的存储过程。
你可以打开“企业管理器”,选择当前操作的数据库,然后在左边的树型列表中选择“存储过程”,此时就可以在右边的列表中看到你刚刚创建的存储过程了(如果没有,刷新一下即可)。
二、存储过程的调用之前我们已经创建了一个名为“upGetUserName”的存储过程,从字面理解该存储过程的功能是用来取得某一个用户的名称。
存储过程建立好了,接下来就是要在应用程序里调用了,下面看一下在ASP程序里的调用。
以下是引用片段:Dim adoComm’//创建一个对象,我们用来调用存储过程Set adoComm = CreateObject("mand"With adoComm’//设置连接,设adoConn 为已经连接的ADODB.Connection 对象.ActiveConnection = adoConn’//类型为存储过程,adCmdStoredProc = 4.CommandType = 4’//存储过程名称.CommandText = "upGetUserName"’//设置用户编号.Parameters.Item("@intUserId".Value = 1’//执行存储过程.Execute’//取得从存储过程返回的用户名称Response.Write "用户名:" & .Parameters.Item("@ostrUserName".ValueEnd With通过以上两步,我们已经可以创建和使用简单的存储过程了。
下面我们来看一个稍微复杂点的存储过程,以进一步了解存储过程的应用。
三、存储过程的实际应用用户登录在ASP项目中经常会使用到,相信很多朋友也都做过类似的系统,但使用存储过程来做验证朋友可能不多,那么我们就以它来做例子,写一个简单的用户登录验证的存储过程。
以下是引用片段:CREATE PROC upUserLogin@strLoginName NVARCHAR(20,@strLoginPwd NVARCHAR(20,@blnReturn BIT OUTPUTAS-- 定义一个临时用来保存密码的变量DECLARE @strPwd NVARCHAR(20BEGIN-- 从表中查询当前用户的密码,赋值给@strPwd 变量,下面要对他进行比较SELECT @strPwd=uLoginPwd FROM uUser WHERE uLoginName=@strLogi nNameIF @strLoginPwd = @strPwdBEGINSET @blnReturn = 1-- 更新用户最后登录时间UPDATE uUser SET uLastLogin=GET DATE( WHERE uLoginName=@strLoginNameENDELSESET @blnReturn = 0END用户登录的存储过程建立好了,现在在程序里试一下吧。
注意,在一个区域内如果有多条语句时,必需使用BEGIN...END关键字。
以下是引用片段:Dim adoComm’//创建一个对象,我们用来调用存储过程Set adoComm = CreateObject("mand"With adoComm’//设置连接,设adoConn 为已经连接的ADODB.Connection 对象.ActiveConnection = adoConn’//类型为存储过程,adCmdStoredProc = 4.CommandType = 4’//存储过程名称.CommandText = "upUserLogin"’//设置登录名称.Parameters.Item("@strLoginName".Value = "admin"’//设置登录密码.Parameters.Item("@strLoginPwd".Value = "123456"’//执行存储过程.Execute’//判断是否登录成功If .Parameters.Item("@blnReturn".Value = 1 ThenResponse.Write "恭喜你,登录成功!"ElseResponse.Write "不是吧,好像错了哦。
"End IfEnd With’//释放对象Set adoComm = Nothing通过以上的步骤,简单用户登录验证过程也做完了,现在只要把它整合到程序中就可以实现简单的用户登录验证了,关于其他细节就由你自己来处理了。
上面介绍的两个存储过程都是只返回一个值的,下面我们来看一个返回一个记录集的存储过程。
以下是引用片段:CREATE PROC upGetUserInfos@intUserGroup INTASBEGIN-- 从数据库中抽取符合条件的数据SELECT uName,uGroup,uLastLogin FROM uUser WHERE uGroup=@intUs erGroup-- 插入一列合计UNIONSELECT’合计人数:’,COUNT(uGroup,NULL FROM uUser WHERE uGroup=@intUserGroupEND现在我们来看一下ASP程序的调用。
以下是引用片段:Dim adoCommDim adoRt’//创建一个对象,我们用来调用存储过程Set adoComm = CreateObject("mand"Set adoRs = CreateObject("ADODB.Recordset"With adoComm’//设置连接,设adoConn 为已经连接的ADODB.Connection 对象.ActiveConnection = adoConn’//类型为存储过程,adCmdStoredProc = 4.CommandType = 4’//存储过程名称.CommandText = "upGetUserInfos"’//设置用户组.Parameters.Item("@intUserGroup".Value = 1’//执行存储过程,和以上几个例子不同,这里使用RecordSet的Open 方法adoRs.Open adoComm’//显示第一个值Response.write adoRs.Fields(0.ValueEnd With’//释放对象Set adoRs = NothingSet adoComm = Nothing怎么样,是不是也很简单呢,不过存储过程的用处不仅仅只有这些,他还有更强大的功能,比如使用游标、临时表来从多个表,甚至是多个数据库中调用数据,然后返回给用户,这些你可以在使用过程中慢慢的去发掘。