




已阅读5页,还剩7页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
net下面调用access中存储过程的方法在Sql Server中使用存储过程是大家都比较熟悉的了,前不久自己作了一个小东东,数据库使用的是MS Access数据库,也想着试试用存储过程是否可行。毕竟,存储过程与代码的关系不是非常大,数据库和存储过程的修改有些是不用更改编码的。下面贴出我的代码,大家会发现,其实跟调用Sql Server的存储过程是完全一样的,不同的仅仅在于存储过程的名称。以删除人员信息为例:1. 这里是数据访问层的一段代码,直接调用存储过程。public class Person/定义存储过程,注意,这里的存储过程用 括起来了。private const string ASP_PERSON_INSERT = “asp_Person_Insert“;private const string ASP_PERSON_UPDATE = “asp_Person_Update“;private const string ASP_PERSON_DELETE = “asp_Person_Delete“;.private const string PARM_PERSON_PERSONID=”PersonID”;.private OleDbParameter GetDeleteParam(int PersonID)OleDbParameter param = new OleDbParameternew OleDbParameter(PARM_PERSON_PERSONID,OleDbType.Integer);param0.Value=PersonID;return param;/ / 删除人员信息/ / 人员ID/ 成功返回True;失败返回Falsepublic bool Delete(int personID)/ASP_PERSON_DELETE 存储过程的名称。OleDbParameter param=this.GetDeleteParam(personID);try/ 调用方式没有变化。int i=Utility.Tools.CreateOleDbCommandExecuteNonQuery(ASP_PERSON_DELETE,param);if (i0)return true;catchreturn false;2.再来看看Access数据库里面跟Sql Server有什么区别:Access数据库中的存储过程是以“查询”的方式存放的,打开你的Access数据库,选中“查询”,选中“新建”,先建立一个简单的查询。选择表和需要的字段以及需要的参数。这时,再选中工具栏中的SQL视图,您可以看到如下的语句:PARAMETERS PersonID Short;DELETE *FROM PersonInfoWHERE PersonInfo.PersonID=PersonID;如果参数多,请参照:PARAMETERS ID Short, ParentID Short, OrganName Text ( 255 ), Numbe Text ( 255 ), OtherName Text ( 255 ), CodeID Text ( 255 ), OrganSpec Text ( 255 ), OrganProperty Text ( 255 ), OutLayType Text ( 255 ), ManageDepart Text ( 255 ), SetUpTime DateTime, PassDepart Text ( 255 ), OrganNUM Short, PersonNUM Short, PassNumber Text ( 255 ), Address Text ( 255 ), JPerson Text ( 255 ), Tel Text ( 255 ), YearCheck Text ( 255 );最后,保存就可以运行你的代码试试了。另外,Access里面没有Sql Server的查询器,所以你要在Access中测试你的存储过程会比较麻烦些:右键选中你的存储过程,选择“打开”即可,但是参数不要输入错误。Access中写存储过程是闭架麻烦的,毕竟不象Sql Server那样对存储过程的支持好,所以要特别细心而且强烈建议大家经常保存。.net数据库连接池相关的面试题如何实现连接池?确保你每一次的连接使用相同的连接字符串(和连接池相同);只有连接字符串相同时连接池才会工作。如果连接字符串不相同,应用程序就不会使用连接池而是创建一个新的连接。优点使用连接池的最主要的优点是性能。创建一个新的数据库连接所耗费的时间主要取决于网络的速度以及应用程序和数据库服务器的(网络)距离,而且这个过程通常是一个很耗时的过程。而采用数据库连接池后,数据库连接请求可以直接通过连接池满足而不需要为该请求重新连接、认证到数据库服务器,这样就节省了时间。缺点数据库连接池中可能存在着多个没有被使用的连接一直连接着数据库(这意味着资源的浪费)。技巧和提示1 当你需要数据库连接时才去创建连接池,而不是提前建立。一旦你使用完连接立即关闭它,不要等到垃圾收集器来处理它。2 在关闭数据库连接前确保关闭了所有用户定义的事务。3 不要关闭数据库中所有的连接,至少保证连接池中有一个连接可用。如果内存和其他资源是你必须首先考虑的问题,可以关闭所有的连接,然后在下一个请求到来时创建连接池。连接池FAQ1 何时创建连接池?当第一个连接请求到来时创建连接池;连接池的建立由数据库连接的连接字符创来决定。每一个连接池都与一个不同的连接字符串相关。当一个新的连接请求到来时如果连接字符串和连接池使用的字符串相同,就从连接池取出一个连接;如果不相同,就新建一个连接池。2 何时关闭连接池?当连接池中的所有连接都已经关闭时关闭连接池。3 当连接池中的连接都已经用完,而有新的连接请求到来时会发生什么?当连接池已经达到它的最大连接数目时,有新的连接请求到来时,新的连接请求将放置到连接队列中。当有连接释放给连接池时,连接池将新释放的连接分配给在队列中排队的连接请求。你可以调用close和dispose将连接归还给连接池。4 我应该如何允许连接池?对于.NET应用程序而言,默认为允许连接池。(这意味着你可以不必为这件事情做任何的事情)当然,如果你可以在SQLConnection对象的连接字符串中加进Pooling=true;确保你的应用程序允许连接池的使用。5 我应该如何禁止连接池?ADO.NET默认为允许数据库连接池,如果你希望禁止连接池,可以使用如下的方式:1) 使用SQLConnection对象时,往连接字符串加入如下内容:Pooling=False;2) 使用OLEDBConnection对象时,往连接字符串加入如下内容:OLE DB Services=-4;NET里面的datagrid翻页大多是先把数据读全部取到dataset里面,但是遇到10W条数据以上,这样的翻页事件开销会很大,页面执行起来反映很慢,你有什么好方法解决?在数据量大的时候,有两个解决办法1.使用存储过程.并且,并非因为存储过程比较快的原因.由于在数据库内部的存储过程,能够实现一些特殊的功能,比如说,可以直接根据当前的排序结果,仅仅取需要的几条数据,如此,无论数据是多少,它仅仅取需要的几条.2.在实际的操作中,取出的数据,并非你有10万条,它就会把10万条全部取出来,而是受限于服务器的缓存,其实一次一般仅取1000条左右的记录,无论你数据多少,它仅会一次取这么多出来.所以,配合分页控件,再配合.NET提供的加载N条数据的方法,数据量大的情况下,不见得就会慢.据我测试,真正慢的,是在取数据总共多少条这个步骤上.此操作在数据少时,没有影响,但在百万条记录以上时,求取数据总数,耗时就会大量增加.所以,大数据量条件下,即不应再显示”共几条/当前第几条”这样的信息.如何提高.NET的性能 ?使用异步方式调用Web服务和远程对象只要有可能就要避免在请求的处理过程中对Web服务和远程对象的同步调用,因为它占用的是的ASP.NET 线程池中的工作线程,这将直接影响Web服务器响应其它请求的能力。2 使用适当的Caching策略来提高性能3 判断字符串,不要用”比较。/避免if(strABC!=null & strABC!=”)/推荐if(!strABC.IsNullOrEmpty)4 页面优化5 用完马上关闭数据库连接6 尽量使用存储过程,并优化查询语句7 只读数据访问用SqlDataReader,不要使用DataS的错误处机制方面的几个问题net的错误处机制是?采用try-catch-finally结构,为什么不提倡catch(Exception) ?try.catch在出现异常的时候影响性能; 应该捕获更具体得异常,比如IOExeception,OutOfMemoryException等catch(Exception e)throw e;和catch(Exception e)throw;的区别将发生的异常对象抛出,另一个只是抛出异常,并没有抛出原异常对象)error和exception区别:error 表示恢复不是不可能但很困难的情况下的一种严重问题。比如说内存溢出。不可能指望程序能处理这样的情况。exception 表示一种设计或实现问题。也就是说,它表示如果程序运行正常,从不会发生的情况.NET考题1、 传入某个属性的set方法的隐含参数的名称是什么?Value2、 如何在C中实现继承?: 类名(冒号加类名)3、 C#支持多重继承么?不支持4、 被protected修饰的属性/方法在何处可以访问?类内部及继承类中5、 私有成员会被继承么?会,但是不能被访问。所以看上去他们似乎是不能被继承的,但实际上确实被继承了。6、 请描述一下访问修饰符protected internal.在同一个Assembly中,他的访问级别和public一样,而跨Assembly访问时,他的访问级别同protected一样。即protected的范围 + internal的范围。7、 C#提供一个默认的无参数构造函数,当我实现了另一个有一个参数的构造函数时候,还想保留这个无参数的构造函数,这样我应该写几个构造函数?2个,一旦你实现了一个构造函数,C#就不会再提供默认的构造函数了,所以需要手动实现那个无参数构造函数8、 C#中所有对象共同的基类是什么?System.Object9、 重载和重写有什么区别?重载是指同名方法,不同的参数,不同的实现而重写则是覆盖父类中的方法实现10、 在方法定义中,virtual有什么含意?Virtual标记方法为虚方法,可以在子类中用new来覆盖重写,多用于实现多态11、 可以重写私有的虚方法么?不可以12、 能够阻止某一个类被其他类继承么?可以,用封装类13、 能够实现允许某个类被继承,但不允许其中的某个方法被重写么?可以,标记这个类为public,并标记这个方法为sealed14、 如何区别重载方法?不同的参数类型,不同的参数个数,不同的参数顺序15、 Const和readonly有什么区别?const可以用于局部常量,而readonly,实际是类的initonly字段,显然不能是局部的。16、 如何在表中随机取记录数100条?请写出示例SQL语句。(数据库指SQL Server,下同)SELECT TOP 100 * FROM table_name ORDER BY NEWID()17、 请列举出几种有效防止SQL注入漏洞的措施?1、程序中过滤掉“”“%”“”“”等字符2、使用存储过程传递参数,并在存储过程中不使用sql语句拚接查询条件。18、 删除表中重复的记录(指某两条或多条记录的所有字段值均相同),但需保留1条。请写出示例SQL语句。select distinct * into #Tmp from tableNamedrop table tableNameselect * into tableName from #Tmpdrop table #Tmp19、 向有标识(IDENTITY)列字段的表添加记录是否可行,如果可行,应如何操作?可使用SQL语句说明。可以,以下语句表示将显式插入的开关打开,写入记录,然后关闭显式插入SET IDENTITY_INSERT Game_ActivityUserTotal ONinsert Game_ActivityUserTotal(id) values(1)SET IDENTITY_INSERT Game_ActivityUserTotal OFF20、 假设表DataTableDictTB包含一个字段MaxID(INT),且仅有一条记录。如何在并发操作情况下,修改MaxID字段加一,并取出更新后的MaxID数值,同时要求读取出来的结果不重复?请写出示例SQL语句。参考答案1:DECLARE MaxID INTUPDATEDataTableDictTBSETMaxID = MaxID + 1,MaxID = MaxID + 1参考答案2:DECLARE MaxID INTBEGIN TRANBEGINUPDATEDataTableDictTBSETMaxID = MaxID + 1SELECT MaxID = MaxID FROM DataTableDictTBEND21、 页面A.aspx的内容如下:Window.open(“B.aspx?id=1&CodeName=通讯应用类”)页面B.aspx的内容如下:为何页面B.aspx输出的CodeName内容是乱码,如何解决?页面A.aspx的内容修改如下:Window.open(“B.aspx?id=1&CodeName=” + escap(通讯应用类)22、 禁用aspx页面的ViewState会导致哪些功能不可用?1、 页面中的事件驱动失效2、 用户提交的信息将在提交后的不再保存显示3、 页面中的ViewState信息不再存在,这样达到页面瘦身进而提供页面显示性能23、 使用A开发的网站有哪几种sessionState存储方式,分别各是什么?1、 进程内(InProcess)存储方式2、 进程外(SessionStateService)存储方式3、 数据库(SQL Server)存储方式24、 使用哪些方式的弹出页面会被大部分页面拦截工具所拦截,相反哪些又不会被拦截?1、 会被拦截的方式:window.open2、 不会被拦截的方式:、window.showModalDialog25、 请简要的谈谈你对Ajax技术的认识。XMLHttp是ajax的最常用传输方式26、 对于长时间装载的ASP.NET页面如何在客户端浏览器中显示进度(仅模拟,不要求精确显示)?1、 可以在到达目的页面之前,先浏览带有显示进度条的页面,再停顿几秒后到达目的页面2、 如在按钮事件中加入如下代码:Response.Write(“”);Response.Write(“_”);Response.Write(“”);Response.Write(“mydiv.innerText = ”;”);Response.Write(“;”);Response.Write(“var dots = 0;var dotmax = 10;function ShowWait()”);Response.Write(“var output; output = 正在装载页面;dots+;if(dots=dotmax)dots=1;”);Response.Write(“for(var x = 0;x dots;x+)output += ;mydiv.innerText = output;”);Response.Write(“function StartShowWait()mydiv.style.visibility = visible; “);Response.Write(“window.setInterval(ShowWait(),1000);”);Response.Write(“function HideWait()mydiv.style.visibility = hidden;”);Response.Write(“window.clearInterval();”);Response.Write(“StartShowWait();”);Response.Flush();Thread.Sleep(10000);27、 自定义page基类时导致你在Vs.Net中无法所见即所得的编辑Aspx页面,打开页面时将抛出以下错误,你只能看到Html代码界面,请问如何解决?1、 出现该错误后将该工程重新编译通过后,再次打开a
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 电竞公司合规检查管理细则
- 电竞公司分部财务审批规章
- 湖北省鄂州市部分高中联考协作体2026届高二化学第一学期期末经典模拟试题含答案
- 电子商务法律法规及合规性要求
- 新三农村建设发展规划指南
- (2025年标准)果树合伙经营协议书
- (2025年标准)国外培训退款协议书
- (2025年标准)广告投放协议书
- (2025年标准)广告定金协议书
- 电子商务平台运营管理与市场拓展策略研究
- 土地使用权法律风险尽职调查指南
- 2025年内容分发网络(CDN)行业当前市场规模及未来五到十年发展趋势报告
- 故宫博物馆院课件
- 2025年8月16日贵州省黔东南州事业单位遴选笔试真题及答案解析(专业水平测试)
- 2025-2026秋季学年第一学期学生国旗下演讲稿(20周):第一周 新程启航礼润心田-开学典礼
- 2025年北京市中考语文真题(含答案)
- 小学英语“教学评一体化”实施
- CS4000高级过程控制实验装置设备操作说明书
- 上海港港口拖轮经营人和港口拖轮名录
- 企业安全标准化班组建设PPT课件
- 超长混凝土结构温度应力分析
评论
0/150
提交评论