`
禹爸爸
  • 浏览: 86338 次
  • 性别: Icon_minigender_1
  • 来自: 苏州
社区版块
存档分类
最新评论
文章列表
在使用SQL Server时,有时候希望针对数据表中某一字段的修改执行一段触发器代码,比如修改了人员名称时,我们希望数据库会自动执行一代码来修改同一数据表中的姓名拼音首字母字段。如果使用After Update触发器则会让SQL Server崩溃掉,那么有什么办法可以避免这种死循环吗?答案是肯定的,我可以在触发器中判断用户是否修改了姓名字段,如果是则执行后续更新代码,如果用户修改了其他字段,则不执行任何代码。 假设有一张表存储客户的信息,第一个字段是Visitor_ID,第二个字段Visitor_Name,第三个字段是Visitor_PY_Code。我们针对新增和更新动作写两个触发器。 针 ...
五种基本操作: 并(Union):设关系R和关系S具有相同的元数n,且相应的属性取自同一个域,则关系R和关系S的并由属于R或属于S的元组组成,其结果仍为n元的关系 差(Difference):设关系R和关系S具有相同的元数n,且相应的属 ...
用二维表表示实体集,用关键码表示实体间联系的数据模型称为关系模型。 域D1,D2,D3.....Dn上的笛卡尔积的子集称为在域D1,D2,D3.....Dn上的关系。关系的成员为元组。 关系具有以下特点: 关系可以看成是由行和列交叉组成的二 ...
CREATETABLE[dbo].[BillNo]([Id][int]IDENTITY(1,1)NOTNULL,[BillName][varchar](20)COLLATEChinese_PRC_CI_ASNOTNULL,
在之前的一篇文章《CodeIgniter类库之Validation Class 》向大家介绍过CodeIgniter的Validation类库用法,但并不是很全面,现在对其进行部分补充。 Validation可以对提交的表单中的数据进行验证,当验证失败后会返回到表单让用户重新录入。当需要用户录入很多数据的时候,我们就希望能够的验证失败后,在表单中保留那些正确的数据,用户只要重新录入不符合验证规则的数据即可。 我们可以使用以下方法来解决这个问题(注意粗体字部分)。 <formmethod="POST"action="<?phpechosite ...
之前提介绍过如何编写一个菜单专家(Menu Wizard),但它有一个不足之处--就是我们所编写的菜单项只能作为Delphi IDE环境中的“Help”菜单的子项出现。如果我们想在Delphi IDE主菜单中任一位置插入我们自己的菜单项又应该如何做呢? 其实办法很简单,只需要编写一个插件专家(Add-in Wizard),在其构造函数中将菜单插入到Delphi IDE主菜单中,并在其析构函数中析构掉新插入的菜单项。 首先我们要在专家类中定义一些私有成员,用于保存Delphi IDE的主菜单,及我们新创建的菜单项。 FMainMenu:TMainMenu;FNewMenuItem:T ...
版权声明:本文为博主原创文章,未经博主允许不得转载。
之前向大家简单的介绍了Open Tools API,现在我们就要亲自动手编写一个简单的Wizard,来体验Open Tools API的魅力所在。 在Delphi6中,不再推荐大家使用ExptIntf单元中的TIExpert类做为我们自己编写的Wizard的基类,而是改用TInterfacedObject做为其基类,并实现ToolsAPI单元中的一个或我个接口。 编写一个Wizard必须要实现ToolsAPI单元中的IOTAWizard接口和IOTAWizard的父接口INotifier(尽管Delphi不会调用INotifier接口中的任何方法)。如果你想编写一个Menu Wizard, ...
Delphi为我们提供了一组AIP(Open Tools API),允许我们使用这些函数,将自定义的菜单项、工具栏按钮、创建窗体专家以及更多的东西加入到IDE中,以提高自己的开发效率。 使用Tools API是一件很容易的事,只要实现一些特定的接口,并调用另一些接口提供的服务即可。编写一个Tools API代码和编写组件或是属性编辑器很类似,必须将这些代码编译为设计期包或是DLL加载到Delphi的IDE中。 所有的API函数都声明在ToolsAPI单元中,其位置在Delphi的安装目录下Source/ToolsAPI目录中,大家可以看到这个单元中的接口都是以OTA或是NTA作为前缀名称的 ...
在刚刚开始编程阶段,自己一步步编写出一个登录窗体,或是一个能够对数据表记录进行增、删、改的窗体时,会感到非常的兴奋。但随着编程时间和编写项目的增加,会发现这种没有什么技术含量的窗体被不断的重复编写,于是乎开始思考有没有一种一劳永逸的办法可以帮助我们摆脱这种窘境呢?有的朋友或者会说,将这些做成一个标准的窗体存放在某个地主,在需要的时候将其Copy过来,然后略为修改。不可否认,这也是一种方法,但对于一个编程人员来说,这种方法很不专业。另一方法则相对更为专业,就是自已动手编写一个Expert。 Delphi是一个完全开放的开发集成环境,提供了一组ToolsAPI供开发者对其进行扩展(相关单元在De ...
在PHP中使用了MSSQL数据库,恰巧数据库中又使用了Text类型字段,于是问题产生了。每次从数据库中查询得到的数据总是被莫名的截断,一开始是以为我使用的PHP框架中对字符串的长度有所限制,后来发现这是个较愚蠢的想法,因为在提交数据时可以将字符串内容全部的提交到数据库中,只是读取时发生此现象,于是上网搜寻是否有类似的问题。运气还挺不错,第一次搜索就找到了解决的办法,遂决定将其转贴在我的Blog中,供自己和广大PHP爱好者的不时之需。 有两种解决方案,如下: 一、修改php.ini来实现: 打开php.ini,可看到mssql.textsize,mssql.textlimit两个选项: ; V ...
在进行BS编程时,我们时常需要对客户提交的数据进行验证。每种脚本语言都有一套自己的验证模式,CodeIgnite也提供了一套相当好用的类库 -- Validation Class。 和使用其他类库一样,在使用Validation Class之前需要将其加载。 $this->load->library("validation"); 加载之后我们就可以使用$this->validation对其进行引用了。有些朋友会问了:“它怎么知道我要验证哪些数据,以及按何规则进行验证呢?”这正是我们下面要说的。 刚刚加载的Validation Class作不了任何事 ...
在最近做的一个项目中用到了Java和Delphi,发现它们不能正确读取对方的日期类型,如在Java中写入一个值为“2007-12-1”的日期值,通过Delphi读取却不是这个值了。 通过查阅资料,发现两者对日期类型的定义略有不同。Java中日期使用的是长整型进行存储的,它表示距“1970-1-1”的毫秒数。如“1970-1-2”是在“1970-1-1”后的86400000毫秒,所以Java中就使用86400000表示“1970-1-2”这个日期。由于长整型是带符号的,所以我们可以使用负的毫秒数来表示在“1970-1-1”之前的日期。而Delphi中的日期则是使用双精度类型进行存储的,整数部分 ...
在之前有讲到Benchmarking Class的用法(参见CodeIgniter类库之Benchmarking Class),他只能显示出两个基准点之间所消耗的时间信息。如果想得到现多的对调试程序有帮助的信息,则可以使用CodeIgniter中的Profile Class,他不仅可以在页面底 ...
CodeIgniter中有个Benchmarking类库,它是被系统自动被加载的,不需要手工加载。Benchmarking类库能够计算出任意两个被标记点之间的代码执行时间。通过这个数值,可以评估程序员编写的程序的效率。 另外,当CodeIgniter框架被调用时,系统会调用Benchmark类库中的方法,以计算出Output类库将所有内容正确的发送至浏览器所执行的时间。 可以在我们自己编写的模型(Model)、视图(View)和控件器(Controller)中通过以下三步使用Benchmark: 标记起始点 标记结束点 调用elapsed_time方法显示结果 下面就是使用示例 ...
Global site tag (gtag.js) - Google Analytics