|
马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。
您需要 登录 才可以下载或查看,没有帐号?立即注册
x
asp,你就只能等着微软给你解决,它不乐意你就只好悲催。而且asp跑在windows服务器上,windows服务器跟linux比起来简直弱爆了!存储历程|数据|数据库一.媒介:
存储历程(StoredProcedure)是一组为了完成特定功效的SQL语句集,经编译后存储在数据库中。用户经由过程指定存储历程的名字并给出参数(假如该存储历程带有参数)来实行它。存储历程是数据库中的一个主要工具,任何一个计划优秀的数据库使用程序都应当用到存储历程。总的来讲,存储历程具有以下一些长处:
◆存储历程同意尺度组件式编程
◆存储历程可以完成较快的实行速率
◆存储历程可以削减收集流量
◆存储历程可被作为一种平安机制来充实使用
本文作者将向人人先容.NET数据库使用程序中存储历程的使用,和怎样将它与ADO.NET中的SqlDataAdapter工具、DataSet工具等分离利用以进步.NET数据库使用程序的整体功能。
二.体系请求:
开辟工具:VisualStudio.NET
数据库办理体系:SQLServer2000(个中包括了示例程序所用到的Pubs数据库)
三.创立一个复杂的存储历程:
这里我将向人人先容怎样使用VisualStudio.NETIDE来创立存储历程。使用VisualStudio.NETIDE创立存储历程长短常简单和直不雅的,你只需在服务器资本办理器中导向到Pubs数据库并睁开节点,就会发明包含存储历程在内的各类数据库工具,如所示。
在存储历程节点上点击右键即可弹出一个菜单,个中包括了“新建存储历程”的命令。新建一个存储历程后,IDE中的代码编纂窗口便呈现以下所示的代码模板:
CREATEPROCEDUREdbo.StoredProcedure1
/*
(
@parameter1datatype=defaultvalue,
@parameter2datatypeOUTPUT)
*/
AS
/*SETNOCOUNTON*/
RETURN
下面的代码模板切合简化的创立存储历程的语律例则,完全的语律例则以下:
CREATEPROC[EDURE]procedure_name[;number]
[{@parameterdata_type}
[VARYING][=default][OUTPUT]
][,...n]
[WITH
{RECOMPILE|ENCRYPTION|RECOMPILE,ENCRYPTION}]
[FORREPLICATION]
ASsql_statement[...n]
限于篇幅,各个参数的寄义在此就未几作先容了,有乐趣的读者能够参考有关SQLServer2000数据库办理体系的材料。
上面我对该代码模板中的各个语法成份略作先容。CREATEPROCEDURE声明创立一个存储历程,前面随着该存储历程的称号。“/*……*/”中的成份是该存储历程的参数,可包含输出参数和输入参数。AS关头字前面的内容是该存储历程的主体部分,个中是任何数目和范例的包括在存储过程当中的SQL语句。RETURN关头字标明存储历程停止并能前往整型形态值给挪用者。上面我们就来创立一个复杂的不带参数的存储历程并使用之:
CREATEPROCEDUREdbo.up_GetPublisherInfo
AS
SELECTpub_id,pub_name,city,state,country
FROMpublishers
RETURN
创立以上存储历程后,保留之。保留终了,与该存储历程绝对应的节点就会呈现在服务器资本办理器中。同时请注重代码编纂窗口中的CREATE关头字变成ALTER关头字了,该关头字是用于变动任何现有的存储历程的。要运转上述存储历程,只需点击其节点并在右键弹出菜单当选择“运转存储历程”,运转的了局图示以下:
四.创立一个带参数的存储历程:
以上我们创立了一个复杂的不带参数的存储历程,而在实践的使用中常常会用到良多带有参数的存储历程。带有参数的存储历程通常为用于更新数据或是拔出数据的。上面我们能够使用一样的操纵办法创立一个带参数的存储历程:
CREATEPROCEDUREdbo.up_UpdatePublisherInfo
(
@pub_idchar(4),
@pub_namevarchar(40),
@cityvarchar(20),
@statechar(2),
@countryvarchar(30)
)
AS
UPDATEpublishers
SETpub_name=@pub_name,city=@city,state=@state,
country=@country
WHERE(pub_id=@pub_id)
RETURN
在下面的创立存储历程的代码中,我们经由过程在称号前增加一个“@”标记来声明存储历程的部分变量-参数,同时还声了然各个参数的范例,断定了各个参数的偏向值,也即标明该参数是输出型的仍是输入型的大概是输出输入型的大概是前往值型的。用户经由过程响应的存储历程称号和准确无效的参数即可挪用该存储历程了。另有,你能够经由过程使用OUTPUT关头字在参数中增加输入型的参数,详细办法请参考下面的语律例则。输入型的参数能前往给挪用者相干的信息。
下面的存储历程能更新publishers表中响应出书商的信息。你能够经由过程点击该存储历程的节点,在右键弹出菜单当选择“运转存储历程”来实行它。一旦实行,IDE中便弹出一个输出出书商信息的对话框(如所示)。在该对话框中填进准确无效的更新信息,注重pub_id的值在本来的表中必需存在,然后点击“断定”按钮即可更新数据了。
五.创立复杂存储历程的数据库使用程序:
上面我们就使用上述的不带参数的存储历程来一个数据库使用程序,个中还用到了ADO.NET中的SqlDataAdapter工具和DataSet工具。个中的SqlDataAdapter工具作为SQLServer数据库和DataSet工具的桥梁将二者接洽在一同。SqlDataAdapter工具包括了两个经常使用的办法:Fill()办法和Update()办法。个中的Fill()办法能从数据库中猎取响应数据并添补到DataSet工具中,而Update()办法望文生义就是更新数据集的意义了。在挪用Fill()办法之前,我们必需设置好SqlDataAdapter工具的SelectCommand属性,该属性实际上是一个SqlCommand工具。SelectCommand属性中包括无效的SQL语句,并能据此从数据库中猎取响应数据并添补到DataSet工具中。
起首,我们创立一个WindowsForms使用程序,编程言语为C#。在VisualStudio.NET中创立一个新的项目后,给该项目增加一个新的类-Publishers类,该类封装了毗连到背景数据库并猎取数据集工具的营业逻辑。步骤以下:
1.增加需要的定名空间援用:usingSystem.Data.SqlClient;
2.给该类增加以下一些需要的变量:
privateSqlConnectioncnPubs;
privateSqlCommandcmdPubs;
privateSqlDataAdapterdaPubs;
privateDataSetdsPubs;
3.在该类的机关函数中完成毗连背景数据库,猎取SqlDataAdapter工具等营业逻辑:
publicPublishers()
{
try
{
//创立一个数据库毗连工具
cnPubs=newSqlConnection("server=localhost;integratedsecurity=true;database=pubs");
//创立一个SqlCommand工具,并指明其命令范例为存储历程
cmdPubs=newSqlCommand();
cmdPubs.Connection=cnPubs;
cmdPubs.CommandType=CommandType.StoredProcedure;
cmdPubs.CommandText="up_GetPublisherInfo";
//创立一个SqlDataAdapter工具,设定其SelectCommand属性为下面的SqlCommand工具
daPubs=newSqlDataAdapter();
daPubs.SelectCommand=cmdPubs;
//创立一个DataSet工具
dsPubs=newDataSet();
}
catch(Exception){}
}
4.最初为该类供应一个GetPublisherInfo()办法,该办法用SqlDataAdapter工具添补DataSet工具并前往添补后的DataSet工具,办法以下(值得注重的是:SqlDataAdapter工具会隐式地翻开数据库毗连并在猎取数据后隐式地封闭毗连,这就是说DataSet工具是事情在非毗连形式下的。而当你显式地翻开数据库毗连并猎取数据后,SqlDataAdapter工具其实不会将该毗连封闭):
publicDataSetGetPublisherInfo()</p>问题是他们究竟是喜欢他们是使用软件时,速度快还是速度慢好.(当然在3秒以内).无论是他们输入资料时,查找资料时,分析资料时. |
|