摘要:
什么是存储过程呢?存储过程就是作为可执行对象存放在数据库中的一个或多个SQL命令。 通俗来讲:存储过程其实就是能完成一定操作的一组SQL语句。那为什么要用存储过程呢?1.存储过程只在创造时进行编译,以后每次执行存储过程都不需再重新编译,而一般SQL语句每执行一次就编译一次,所以使用存储过程可提高数据库执行速度。2.当对数据库进行复杂操作时,可将此复杂操作用存储过程封装起来与数据库提供的事务处理结合一起使用。3.存储过程可以重复使用,可减少数据库开发人员的工作量。4.安全性高,可设定只有某些用户才具有对指定存储过程的使用权那存储过程怎么用呢?以下通过表Student 来了解存储过程,因为是要了解 阅读全文
摘要:
众所周知,使用Exec来进行存储过程,其实Exec不但可以执行存储过程,还可以执行sql语句。例如:假设有一张表sc,我们查询它的所有信息,这里使用存储过程,为了说明以上问题。create proc test1_procasdeclare @str varchar(100)beginset @str='select * from sc'exec @strend当我们用 exec test1_proc 执行这个存储过程时,会发生错误提示“找不到存储过程 'select * from sc'。”这是为什么呢?因为系统把 @str所代表的字符串select * fro 阅读全文
摘要:
BackgroundWorker 类基本概念注意:此类在 .NET Framework 2.0 版中是新增的。BackgroundWorker 类允许您在单独的专用线程上运行操作。耗时的操作(如下载和数据库事务)在长时间运行时可能会导致用户界面 (UI) 似乎处于停止响应状态。如果您需要能进行响应的用户界面,而且面临与这类操作相关的长时间延迟,则可以使用 BackgroundWorker 类方便地解决问题。使用方法:可以通过编程方式创建 BackgroundWorker,也可以将它从“工具箱”的“组件”选项卡中拖到窗体上。如果在 Windows 窗体设计器中创建 BackgroundWorke 阅读全文
摘要:
互斥: 在操作系统中,许多线程常常需要共享资源,而这些资源往往要求一次只能为一个线程服务(排他性),这种排他性地使用共享资源称为线程间的互斥。线程互斥实质上也是同步,可以看做一种特殊的线程同步。Mutex类:线程的互斥常用Mutex类实现,利用它可以对资源进行独占性访问。与Monitor类相似,只有获取Mutex对象的所属权的线程才能进入临界区,未获得Mutex对象所属权的线程只能在临界区外等待。使用Mutex类要比使用Monitor类消耗更多的系统资源,但它可以跨越应用程序边界,在多个应用程序之间进行同步。Mutex类的部分方法:WaitOne():请求互斥体的所属权,只有请求道所属权后线程 阅读全文
摘要:
Monitor类提供同步对对象的访问的机制。lock语句就是由编译器解析为使用Monitor类。例如:lock(obj) {.........}解析为Monitor.Enter ()方法,该方法会一直等待,直到线程获得对象的锁定为止。那么如何解除锁定呢?Monitor类提供了Exit()方法解除锁定。 Monitor类具有以下功能: 它根据需要与某个对象相关联。它是未绑定的,也就是说可以直接从任何上下文调用它。不能创建 Monitor 类的实例。Monitor类的方法: Enter,TryEnter:获取对象锁。此操作同样会标记临界区的开头。其他任何线程都不能进入临界区,除非它使用其他锁定对 阅读全文