|
马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。
您需要 登录 才可以下载或查看,没有帐号?立即注册
x
Access是一种桌面数据库,只适合数据量少的应用,在处理少量数据和单机访问的数据库时是很好的,效率也很高。但是它的同时访问客户端不能多于4个。access数据库有一定的极限,如果数据达到100M左右,很容易造成服务器iis假死,或者消耗掉服务器的内存导致服务器崩溃。access|存储历程因为片上传成绩以是图片没有显现:
完全文章请看:http://www.luckybbs.com/showAnnounce.asp?id=36487
我们已熟习在ASP中经由过程挪用SQLServer存储历程来实行数据库操纵,不外人人是不是晓得,在桌面级数据库Access中,我们也可以创立并利用“存储历程”?
Access+ASP是开辟轻量级Web使用程序的尽佳组合:复杂,疾速,兼容性好,可是功能一般不高。而且,用ADODB.Connection和Recordset工具来实行SQL语句的体例,也有一些不便利,由于带参数的SQL语句的参数值也经常是拼接到字符串中,因而便有了诸如“单引号成绩”如许的贫苦。利用存储历程的一个优点就是,撑持SQL语句参数值的别的供应。
现实上,Access(2000及以上版本)中所谓“存储历程”,和SQLServer中的StoredProcedure是不克不及比的。它只能算是“StoredProcedureLite”,不撑持多条SQL语句,不撑持逻辑语句(呵呵,究竟不是T-SQL)等等,我也还不分明它是否是预编译了。不外,正好像VBScript完成的所谓“类”仅仅具有封装性,关于代码布局的“丑化”和程序重用性具有很年夜增进一样,Access的“轻量存储历程”,关于标准,小堕落概率的数据库操纵应当也有匡助,而且功能大概会有进步。
上面我译stepbystep的体例,先容怎样在Access中创立存储历程,然后在ASP程序中利用它。
(一)在Access中创立“存储历程”
不晓得人人的Access使用程度怎样,归正它关于我来讲,仅仅就是一个MDB数据库文件的创立工具,我只会新建MDB文件,然后在Access的界面中创立表,索引,束缚等等,over~
Access中的“查询”,就饰演了存储历程的脚色。下文中我提到的Access的“存储历程”大概“查询”都是指这个器材
关于“查询”的创立,Access供应了一个傻瓜工具,相似VS.NET里边创建DataAdapter时的导游。不外我喜好间接写SQL代码
好,上面先看看我们这个复杂的例子中所利用的数据库的表布局。
此主题相干图片
然后在Access主界面上点击左边的“查询”按钮,再在右侧双击“在计划视图中创立查询”,以翻开查询计划视图。
此主题相干图片
这时候弹出的是可视化的查询天生器,我们起首增加SQL语句必要触及的表。
此主题相干图片
增加表以后,在计划视图上点击鼠标右键,选择“SQL视图”,以切换到SQL代码编纂窗口。
此主题相干图片
好,上面说说Access的存储历程的特性。
Access的查询,我今朝的感到是对SQL语句的一个包装,也许举行了某种优化如预编译。我们不克不及像写SQLServer存储历程那样利用多重操纵,事件,逻辑判别,轮回等等……
可是我们利用Access存储历程的次要目标,就是利用参数分外供应的查询,利用存储历程,我们不用再面临将参数值拼接到SQL语句字符串中时碰到的各类贫苦,好比:
代码:
Dimsql
sql="SELECT*FROMUsersWHEREUserName="&userName&""
以上代码中,假如字符串变量userName中含有“”单引号,则会报错。我们必需手工转化:
代码:
Dimsql
sql="SELECT*FROMUsersWHEREUserName="&Replace(userName,"","")&""转化为一连两个单引号
而利用带参数查询,我们的SQL语句能够写为:
代码:
Dimsql
sql="SELECT*FROMUsersWHEREUserName=@userName"
然后把参数@userName的值以Command工具的Parameter属性来传进便可,很便利直不雅。
代码:
Withcmd
创立参数工具
.Parameters.Append.CreateParameter("@userName")
给各参数指定值
.Parameters("@userName")=userName
EndWith
这里还要申明Access存储过程当中参数的利用。和SQLServer的存储过程当中用@变量指定参数,然后同名传进参数工具分歧,Access中的参数,是以“按次”而非“名字”来辨认的。传进的参数无需指命名字,任意起,SQL中的参数名字也能够任意起,只需传进参数值时,依照SQL语句中的参数呈现按次指定就好了。一般,我们利用Command工具的Execute办法,间接传进参数值数组来实行~
代码:
cmd.Execute,Array(userName)
再好比,你的一个Access存储历程这么写:
代码:
select*fromUserswhereUserName=p_UserNameandBookTitle=p_bookTitle
你能够就这么实行,经由过程传进参数值数组,可是按次要对应:
代码:
cmd.Execute,Array(userName,bookTitle)
OK,看看我们的例子中利用的两个查询,一个是写进数据。写好SQL语句后保留并定名。
此主题相干图片
(二)利用存储历程
然后我们能够在ASP程序中挪用这些存储历程了。
这里能够看到为何我说Access中的查询就是它的存储历程――我们的Command工具的CommandType属性设置的是4,即StoredProc!
so...
以下的代码很复杂:
代码:
<%
OptionExplicit
Dims
Randomize
s=Rnd*100
Dimconn,cmd
Setconn=Server.CreateObject("ADODB.Connection")
Setcmd=Server.CreateObject("ADODB.Command")
conn.Open"Provider=Microsoft.Jet.OLEDB.4.0;DataSource="&Server.MapPath("sp.mdb")
Withcmd
.ActiveConnection=conn
.CommandType=&H0004存储历程
.CommandText="AddNewData"
EndWith
cmd.Execute,Array(CStr(Now()),CSng(s))
Withcmd
.ActiveConnection=conn
.CommandType=&H0004存储历程
.CommandText="GetData"
EndWith
DimresultRS,resultArray
SetresultRS=cmd.Execute(,Null)
IfNotresultRS.EOFThen
resultArray=resultRS.GetRows()
EndIf
SetresultRS=Nothing
Setcmd=Nothing
conn.Close
Setconn=Nothing
Response.Write"<ul>"
Dimi
Fori=0ToUBound(resultArray,2)
Response.Write"<li>"&resultArray(0,i)
Response.Write""&resultArray(1,i)
Response.Write""&resultArray(2,i)
Response.Write"</li>"
Next
Response.Write"</ul>"
%>
运转了局。
此主题相干图片
感到起来,速率仿佛很快,呵呵~
不晓得如许在Access中利用存储历程的意义年夜不年夜,不外的确很好玩
A</p>问题是他们究竟是喜欢他们是使用软件时,速度快还是速度慢好.(当然在3秒以内).无论是他们输入资料时,查找资料时,分析资料时. |
|