如何使用ASP调用SQL数据库的视图及存储过程
ASP调用sql server存储过程的技巧
'Add Output Parameters
.Parameters.Append .CreateParameter("@link_id", adInteger, adParamOutput, , 0)
'Execute the function
ASP调用sql server存储过程的技巧
在asp程序中使用sql server存储过程是常见的事,主要的作用是提高程序运行的时间,这里介绍一下调用不同类型的存储过程的方法。
一、最简单的调用
<%
Dim conn
Set conn = Server.CreateObject("ADOBD.Connection")
二、带参数的一种调用
<%
cute "exec sp_AddHit,'', 1"
%>
注意分割参数,该方法也不返回记录
三、带返回记录集的
<%
Dim conn
Dim Rs
Set conn = Server.CreateObject("ADOBD.Connection")
conn.Open Application("Connection_String")
'Call the stored procedure to increment a counter on the page
conn.Execute "exec sp_AddHit"
%>
ASP[1].NET访问SQL数据库
3、使用自定义SQL语句从多个数据表中查询数据
22
4、单击查询生成器
23
5、添加数据表、选择字段构造SQL语句
24
6、单击下一步、完成。
25
7、拖一个FormView控件到页面中,如下图所示设 置其属性,其中数据源为上一步配置完成的数据 源SqlDataSource1。 8、从控件任务列表菜单中选择“编辑模板”,在其 中插入一个HTML表格,设置表格为6行2列,并将 各字段数据拖入单元格中。 9、结束编辑模板,并启用分页。
26
10、拖第二个SqlDataSource数据源控件到页面中,配置数 据源,从下拉列表中选择与前面创建数据源时创建的连接, 如图所示,点击下一步。
27
11、选择execise_update 表及所有字段,单击WHERE.
28
12、按图示选择各下拉列表SQL语句或存储过程,点击查 询生成器,添加表,选择字段后如图所示.
• 事实在 2.0的数据绑定控件远不止以上三个,例
如Repeater、 DataList、ReportViewer、BulletList、 CheckBoxList、DropDownList、ListBox、RadioButtonList、
AdRotator、TreeView、Menu等都可以绑定数据。
9
3、页面预览效果
10
案例3、 显示详细通知内容 1、添加新项,创建新页面 2、创建数据源SqlDataSource1,指定数据表notice_infor, 点击“高级”,勾选相应项,如下图。
11
3、创建数据源SqlDataSource2,如下图配置
12
4、插入布局表格:拖一个HTML表格到页面,设置 表格宽度为800像素,水平居中对齐,合并单元格, 使之成为一行二列表格。设置单元格背景颜色。
ASP调用存储过程详解
ASP调用存储过程详解ASP(Active Server Pages)是一种用于开发动态网页的脚本语言,通常与数据库一起使用。
在ASP中,可以通过调用存储过程来处理数据库操作。
存储过程是一组预编译的SQL语句,可以在数据库中进行复杂的操作,例如查询、插入、更新和删除数据。
在本文中,将详细介绍ASP中如何调用存储过程。
首先,ASP中调用存储过程需要使用ADO(ActiveX Data Objects)对象模型。
ADO是一种用于访问数据库的技术,可以通过创建连接、执行SQL语句和处理结果集来与数据库进行交互。
在ASP中,可以使用ADODB 对象来创建连接和执行存储过程。
要调用存储过程,首先需要创建一个ADODB.Connection对象,用于与数据库建立连接。
可以使用以下代码创建连接对象:```Set conn = Server.CreateObject("ADODB.Connection")conn.Open "连接字符串"```其中,连接字符串是用于指定连接数据库的参数,例如数据库类型、服务器地址、用户名和密码等。
连接字符串的具体内容取决于所使用的数据库类型,例如Access、SQL Server或MySQL。
```cmd.ActiveConnection = conn其中,conn是之前创建的连接对象,adCmdStoredProc表示命令类型为存储过程。
存储过程名称是要调用的存储过程的名称。
如果存储过程需要传递参数,可以使用ADODB.Parameter对象来设置参数。
可以使用以下代码创建参数对象并设置相关属性:```Set param = cmd.CreateParameter("参数名称", 参数类型, 参数方向, 参数大小, 参数值)cmd.Parameters.Append param```其中,参数名称是参数的名称,参数类型是参数的数据类型,例如adVarChar表示字符串类型,参数方向表示参数的方向,例如adParamInput表示输入参数,参数大小是参数的大小,参数值是参数的值。
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调用存储过程了吧!。
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中调用存储过程
Sl a A atr a=n wS laa d pe0 qD t dpe a d e qD t a t ; A r d.e cC m n aSl to mad=nwS lo ad ; e e qC mm n O
d . ee t o aS l c C mma d. n e to = c nn n Co n c in o ; d .eet o aS lc C mma d. mma d e t= ” me P o e u e : n Co nTx Na Of rc d r ” d .eet o aS lc C mma d. mma d p n Co n Ty e= C o
2 使用 存储 过程 的好 处 .
相对于直接使用 S QL语 句 ,在 应 用 程 序 中直 接 调 用 存 储 过 程 有 以 下好 处 : ()减少 网络 通信 量 。调 用 一 个行 数 不 多 的 存储 过 程 与 直 接调 用 1
p r m. r c i n= P r me e Die t n I p t a a Die t o a a tr r ci . u ; o n
【 关键词】 e; . t存储过程 ; n 数据库 ; 语句; 执行 ; 应用程序 ; 代码 ; 函数
0 引 言 .
在使 用 .E N T的过 程 中 , 据 库 访 问 是 一 个 很 重 要 的部 分 , 别 是 数 特 在 BS系统 的 构 建 过 程 中 . / 数据 库 操 作 几 乎 成 为 了一 个 必 不 可 少 的操 作 。调 用存 储 过 程 实现 数 据 库 操作 使 很 多 程 序 员 使 用 的 方 法 , 且 大 而 多 数 的 程 序 员 都 是 能 使 用 存 储 过 程 就 使 用 存 储 过 程 ,很 少 直 接 使 用 S L语 句 . 以存 储 过 程 是 很有 用 而 且 很 重 要 的 。 Q 所
用ASP访问数据库的几种常见方式
用ASP访问数据库的几种常见方式ActiveX Data Objects (ADO) 是一项容易使用并且可扩展的将数据库访问添加到Web 页的技术。
可以使用ADO 去编写紧凑简明的脚本以便连接到Open Database Connectivity (ODBC) 兼容的数据库和OLE DB 兼容的数据源。
如果您是一个对数据库连接有一定了解的脚本编写人员,那么您将发现ADO 命令语句并不复杂而且容易掌握。
同样地,如果您是一个经验丰富的数据库编程人员,您将会正确认识ADO 的先进的与语言无关性和查询处理功能。
创建ODBC DSN 文件在创建数据库脚本之前,必须提供一条使ADO 定位、标识和与数据库通讯的途径。
数据库驱动程序使用Data Source Name (DSN) 定位和标识特定的ODBC 兼容数据库,将信息从Web 应用程序传递给数据库。
典型情况下,DSN 包含数据库配置、用户安全性和定位信息,且可以获取Windows NT 注册表项中或文本文件的表格。
通过ODBC,您可以选择希望创建的DSN 的类型:用户、系统或文件。
用户和系统DSN 存储在Windows NT 注册表中。
系统DSN 允许所有的用户登录到特定的服务器上去访问数据库,而用户DSN 使用适当的安全身份证明限制数据库到特定用户的连接。
文件DSN 用于从文本文件中获取表格,提供了对多用户的访问,并且通过复制DSN 文件,可以轻易地从一个服务器转移到另一个服务器。
由于以上原因,本主题中的示例将使用文件DSN。
通过在Windows 的“开始”菜单打开“控制面板”,您可以创建基于DSN 的文件。
双击“ODBC”图标,然后选择“文件DSN”属性页,单击“添加”,选择数据库驱动程序,然后单击“下一步”。
按照后面的指示配置适用于您的数据库软件的DSN。
配置Microsoft Access 数据库的文件DSN在“创建新数据源”对话框中,从列表框选择“Microsoft Access Driver”,然后单击“下一步”。
asp.netsql存储过程
sql存储过程Visual 为SQL的存储过程提供了强⼤的⽀持,您既可以通过visual 来新建存储过程,也可以直接在Sql Server的查询分析器中运⾏,还可以通过企业管理器创建,使⽤起来也⾮常⽅便。
⼤家⼀直都误认为SQL存储过程是⼀个⽐较“⾼深”的技术,其实掌握⼀般的语法是没有什么⼤问题的,⽽我们在使⽤存储教程中也主要是增删减的操作,学会使⽤⼀般的T-SQL就很容易上⼿了。
我们先来看⼀下在Sql-server中是如何创建⼀个存储过程的吧,我们可以使⽤SQL命令语句创建,也可以通过SQL server中的企业管理器来创建,但其实都是离不开⾃⼰写语句的,当然系统存储过程我们就不⽤去动它了(存储过程分为系统存储过程,本地存储过程,临时存储过程,远程存储过程,扩展存储过程),⽽本地存儲過程就是我們⾃⼰編寫的存储过程,其实也叫⽤户存储过程。
当创建存储过程时需要确定存储过程的三个组成部分所有的输⼊参数以及传给调⽤者的输出参数被执⾏的针对数据库的操作语句包括调⽤其它存储过程的语句返回给调⽤者的状态值以指明调⽤是成功还是失败⼀、存储过程创建1.⽤企业管理器来创建存储过程;我们先打开企业管理器,找到我们要创建存储过程的数据库,如图⼀:我们可以看到,在数据库⾥⾯有⼀个存储过程的项⽬,我们要⽤到的就是它了,选中存储过程这项,我们可以看到数据库中⾥⾯本⾝就有很多存储过程存在的了,不过这些都是数据库本⾝⾃带的,我们可以看到他的类型是系统(如图⼆),如果我们⾃⼰创建的存储过程,类型就是⽤户了.在控制树的左边,我们选中存储过程后单击⿏标右键,可以看到有⼀个“创建存储过程的选项”选中这项,就会出现新的窗⼝了,这个窗⼝就是⽤来写存储过程的了在实际运⽤过程中,我们所创建的存储过程并不是想像中的这么复杂,⽽上⾯的这些参数也不是都要⽤上,但⼀般我们在⽤查询分析器创建存储过程前,都会通过下⾯这条语句来查询⼀下,在数据库中是否已经存在相同命名的存储过程,如果存在的话,则先删除。
第16章 通过ASP访问SQL数据库
16.1 ASP、HTML简介
ASP文件格式
ASP文件以 .asp为扩展名,在ASP文件中,可 以包含以下内容: – HTML标记 – 脚本命令:位于<%和%>分界符之间的命令 – 文本
16.1 AS设置
ASP作为一种服务器端脚本语言,不能直接通 过IE访问,需要使用微软公司的IIS(Internet Information Services)因特网信息服务,在 本机或局域网上访问与调试ASP程序。
也可以利用connection对象直接执行查询
<% set rs=cn.execute("select * from 学生") %>
16.2 通过ASP+ADO访问SQL数据库
读取RecordSet对象字段值的方法
直接读取 <% response.write rs("列名") %> 或 <% response.write rs(列号) %> 通过fields对象的value属性读取 <% response.write rs.fields("列名").value %> 或<% response.write rs.fields(列号).value %> 注:列号指每一列的编号,从0开始,即第一列编号 为0,第二列编号为1,依此类推。 表的列数可以通过fields对象的count属性得到。 <% i=rs.fields.count %>
16.1 ASP、HTML简介
(1) 安装IIS:【控制面板】|【添加/删除程序】|【添 加Windows组件】(需要Windows安装盘)
16.1 ASP、HTML简介
第10章 ASP访问SQL Server数据库讲解
第10章A S P访问S Q L S e r v e r数据库在管理信息系统的开发应用中,Microsoft公司的ASP(Active Server Pages)被广为使用。
ASP 实际上是将标准的HTML文件拓展了一些附加特征,为编写人员提供了在服务器端运行脚本的环境,使编写人员可以利用VBScript和JavaScript或其他的第三方脚本语言来创建ASP,实现过去需要编写复杂的CGI程序才能实现的有动态内容的网页,如计数器等。
ASP提供了一些内置对象和组件,允许用户从浏览器中接收和发送信息。
ASP可以和诸如SQL Server这样的数据库进行连接,进而完成数据的交换与更新。
本章首先介绍如何在不同版本的Windows操作系统上建立ASP的运行环境,然后重点介绍ASP 的内置对象和组件,最后详细讲述使用ASP开发WEB数据库系统的一般过程和关于数据库的基本知识。
10.1 建立ASP的运行环境ASP程序是运行于网络服务器端的一种应用程序,想要正常运行ASP程序,首先应当建立ASP 的运行环境。
常用的支持ASP的网络服务器有PWS(Personal Web Server)和IIS(Internet Information Server),下面就分别介绍在3种常用的Windows操作系统下如何建立ASP的运行环境。
10.1.1 在Windows 98上建立ASP的运行环境在Windows 98操作系统上,通常选择PWS作为ASP运行的网络服务器。
PWS是微软开发的个人网站服务器,主要应用于解决个人信息共享和Web开发。
它是一个桌面形的Web服务器,使用它可以自动创建个性化主页,可以快速简便地进行Web站点设置。
下面介绍PWS的安装及其配置:1.启动电脑之后,在光驱里放入Windows 98安装光盘,双击光盘中“\add-ons\pws\”目录下的setup.exe,出现Personal Web Server的安装界面,单击“下一步”,选择安装类型,如图10-1。
通用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存储过程分页以及后台调⽤的⽅法就是⼩编分享给⼤家的全部内容了,希望能给⼤家⼀个参考,也希望⼤家多多⽀持。
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中调用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)通过隔离和加密的方法提高了数据库的安全性。
ASPNET中使用SQL的存储过程
简单的说,存储过程是由一些SQL语句和控制语句组成的被封装起来的过程,它驻留在数据库中,可以被客户应用程序调用,也可以从另一个过程或触发器调用。
它的参数可以被传递和返回。
与应用程序中的函数过程类似,存储过程可以通过名字来调用,而且它们同样有输入参数和输出参数。
根据返回值类型的不同,我们可以将存储过程分为三类:返回记录集的存储过程,返回数值的存储过程(也可以称为标量存储过程),以及行为存储过程。
顾名思义,返回记录集的存储过程的执行结果是一个记录集,典型的例子是从数据库中检索出符合某一个或几个条件的记录;返回数值的存储过程执行完以后返回一个值,例如在数据库中执行一个有返回值的函数或命令;最后,行为存储过程仅仅是用来实现数据库的某个功能,而没有返回值,例如在数据库中的更新和删除操作。
在使用.NET的过程中,数据库访问是一个很重要的部分,特别是在B/S系统的构建过程中,数据库操作几乎成为了一个必不可少的操作。
调用存储过程实现数据库操作使很多程序员使用的方法,而且大多数的程序员都是能使用存储过程就使用存储过程,很少直接使用SQL语句,所以存储过程是很有用而且很重要的。
2 使用存储过程的好处相对于直接使用SQL语句,在应用程序中直接调用存储过程有以下好处: 2.1 减少网络通信量。
调用一个行数不多的存储过程与直接调用SQL语句的网络通信量可能不会有很大的差别,可是如果存储过程包含上百行SQL语句,那么其性能绝对比一条一条的调用SQL语句要高得多。
2.2 执行速度更快。
有两个原因:首先,在存储过程创建的时候,数据库已经对其进行了一次解析和优化。
其次,存储过程一旦执行,在内存中就会保留一份这个存储过程,这样下次再执行同样的存储过程时,可以从内存中直接调用。
2.3 更强的适应性:由于存储过程对数据库的访问是通过存储过程来进行的,因此数据库开发人员可以在不改动存储过程接口的情况下对数据库进行任何改动,而这些改动不会对应用程序造成影响。
谈SQL Server被ASP调用的存储过程
谈SQL Server被ASP调用的存储过程
关英凯
【期刊名称】《牡丹江大学学报》
【年(卷),期】2008(017)004
【摘要】本文介绍使用存储过程的优点,以及在ASP中如何通过ADO对象的connection对象的execute方法调用带输入参数的存储过程和用command对象的execute调用带输入参数和输出参数的存储过程.
【总页数】3页(P111-113)
【作者】关英凯
【作者单位】牡丹江大学,黑龙江,牡丹江,157011
【正文语种】中文
【中图分类】TP311
【相关文献】
1.浅谈在ASP中调用SQL Server存储过程 [J], 郭琳
2.SQL Server存储过程调用方法的研究 [J], 陈志勇
3.用ASP调用SQL Server的视图和存储过程 [J], 马树娟
4.用ASP调用SQL Server的视图和存储过程 [J], 燕宏城
5.浅谈在ASP中调用SQL SERVER中的存储过程 [J], 蔡向阳
因版权原因,仅展示原文概要,查看原文内容请购买。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
cmdTemp.Parameters.Append tmpParam
rst.Open cmdTemp, , 1, 3 '生成查询结果
%>
这里调用的存储过程为pd_test,这种是ADO中提供的标准方法,但存在一个问题,就是当在存储过程中有两个以上的SELECT语句,但从逻辑上又不可能同时执行的时候,ADO会提示你存储过程中SELECT语句太多,解决方法是直接用ADO的CONNECTION对象的EXECUTE方法直接执行存储过程,如下:
Dataconn.Open "DSN=SinoTrans;SERVER=APP_SERVER;
UID=sa;PWD=;APP=Microsoft (R) Developer Studio;WSID=APP_SERVER;Regional=Yes"
Set cmdTemp = Server.CreateObject("mand") '建立命令对象
Dataconn.Open "DSN=SinoTrans;SERVER=APP_SERVER;UID=sa;
PWD=;APP=Microsoft (R) Developer Studio;WSID=APP_SERVER;Regional=Yes"
Set cmdTemp = Server.CreateObject("mand") '建立命令对象
Set rst= Server.CreateObject("ADODB.Recordset") '建立记录集对象
mandText = "Customers "
mandType = 2
Set cmdTemp.ActiveConnection = DataConn 中.国.站长站
五、结束语
在B/S结构的开发中,我们可以把一些商业规则或复杂查询用存储过程在DBMS中编写,然后用ASP中的ADO对象调用,完成原来C/S结构中的传统功能。
在一般的MIS应用中,会有大量的报表,此时我们可以在后台数据库编写相应的视图或存储过程,用ASP通过ADO调用以完成报表工作。下面用一个例子说明相应的操作过程。
1、创建 ODBC DSN 文件
在创建数据库脚本之前,必须提供一条使ADO定位、标识和与数据库通讯的途径。数据库驱动程序使用Data Source Name (DSN) 定位和标识特定的ODBC兼容数据库,将信息从 Web 应用程序传递给数据库。
以下为引用的内容:
<%
Set Dataconn = Server.CreateObject("ADODB.Connection") '建立连接对象
Dataconn.Open "DSN=SinoTrans;SERVER=APP_SERVER;UID=sa;PWD=;
APP=Microsoft (R) Developer Studio;WSID=APP_SERVER;Regional=Yes"
rst.Open cmdTemp, , 1, 3 '生图,从视图中查询数据与从基表中查询数据的方法是相同的。
3、调用数据库存储过程
以下为引用的内容:
<%
Set Dataconn = Server.CreateObject("ADODB.Connection") '建立连接对象
ss = "EXECUTE dbo.pd_test " & "'" & riqi1 & "'"
Set rs = dataconn.Execute(ss)
%>
有关ASP和ADO使用的详细信息,请参阅 Microsoft ActiveX Data Objects (ADO) 和Active Server Pages(ASP)的详细参考。
Set rst = Server.CreateObject("ADODB.Recordset") '建立记录集对象
mandText = "dbo.pd_test" '存储过程名称
mandType = 4 '命令类别为4,表示为存储过程
Set cmdTemp.ActiveConnection = Dataconn
Set tmpParam = cmdTemp.CreateParameter("Return Value", 3, 4, 4) Www^Chinaz^com
cmdTemp.Parameters.Append tmpParam
Set tmpParam = cmdTemp.CreateParameter("@BeginDate", 135, 1, 16, riqi)
2、调用数据库视图
访问数据库信息的第一步是和数据库源建立连接。ADO提供Connection对象,可以使用该对象建立和管理应用程序和 ODBC数据库之间的连接。
以下为引用的内容:
<%
Set Dataconn = Server.CreateObject("ADODB.Connection") '建立连接对象