Category:Coding’
SQL server自定义数据类型
- by Hector
用户定义的数据类型要放在使用他的数据库里才有效,由于存储过程中建立的临时表会建立在tempdb里面,所以要先在tempdb里执行,再在mastrer里执行
查看用户定义的数据类型:
sql2005: select * from sys.types where is_user_defined=1
sql2000:select * from systypes where xtype<>xusertype
自定义数据类型
建立在SQL server系统数据类型基础上的,需要指定该类型的名称,建立在其上的系统数据类型及是否充许为空。
方法:利用系统存储过程:sp_addtype
语法:sp_addtype type, [ system_data_type ] [ ,'nulltype' ]
用Gifimage.pas显示Gif动画
- by Hector
TGifImage类可以轻松的操作gif文件,不仅能动态显示,也可以分成不同的帧,设置透明度,设置播放速度等等。
事务计数器和事务嵌套
- by Hector
- 1.计数方法
- 事务计数器从0开始,没嵌套一个事务,事务计数器+1,COMMIT一个事务计数器-1.
注意:事务保存点属于事务内部,不会对事务计数器产生影响。下面的示例演示嵌套的 BEGIN 和 COMMIT 语句对 @@TRANCOUNT 变量产生的效果。
[code lang="sql"]
PRINT @@TRANCOUNT
-- The BEGIN TRAN statement will increment the
-- transaction count by 1.
BEGIN TRAN
PRINT @@TRANCOUNT
BEGIN TRAN
PRINT @@TRANCOUNT
-- The COMMIT statement will decrement the transaction count by 1.
COMMIT
PRINT @@TRANCOUNT
COMMIT
PRINT @@TRANCOUNT
--Results
--0
--1
--2
--1
--0
[/code] - 2. 事务回滚对事务计数器的影响
- 当子事务ROLLBACK之后,会直接清零TRANCOUNT,下面的示例演示嵌套的 BEGIN TRAN 和 ROLLBACK 语句对 @@TRANCOUNT 变量产生的效果。
[code lang="sql"]
PRINT @@TRANCOUNT
-- The BEGIN TRAN statement will increment the
-- transaction count by 1.
BEGIN TRAN
PRINT @@TRANCOUNT
BEGIN TRAN
PRINT @@TRANCOUNT
-- The ROLLBACK statement will clear the @@TRANCOUNT variable
-- to 0 because all active transactions will be rolled back.
ROLLBACK
PRINT @@TRANCOUNT
--Results
--0
--1
--2
--0[/code] - 3.使用保存点确保事务嵌套时能正确回滚
- [code lang="sql"]
begin transaction trn_exampleupdate tableName set fieldName = @value
save transaction stk_savePoint
update tableName2 set fieldName2 = @value2
if @@error<>0
begin
rollback transaction stk_savePoint
commit transaction
return
end
else
begin
if @@rowcount = 0
rollback transaction
end
commit transaction
--如果第二个update出现错误,就返回到第一个update后提交,并且使用return截断后面的语句继续运行
--如果第二个update正确执行,就是更新的行数是0,就回滚整个事务,把第一个update执行的结果也取消
[/code]
Unit ExtActns was compiled with a different version of Consts.SUrlMonDllMissing
- by Hector
很恶心的问题,安装了delphi6 D6_upd2_ent.exe升级包后,原来的程序报出这样的错误。
解决办法:
查找delphi6安装目录下的Consts.dcu,ExtActns.dcu文件,并删除,
打开delphi,打开你的程序,并找到Consts.pas中添加常量:SUrlMonDllMissing= ‘Unable to load %s’;
位置如下:
[code lang="pascal"]
unit Consts;
interface
resourcestring
SUrlMonDllMissing= 'Unable to load %s';
SOpenFileTitle = '打开';
[/code]
事务的脏读,不可重复读,虚读
- by Hector
基本定义
- 1.脏读 dirty reads
- 其他事务读取的值被回滚了。当事务读取还未被提交的数据时,就会发生这种事件。举例来说:Transaction 1 修改了一行数据,然后 Transaction 2 在 Transaction 1 还未提交修改操作之前读取了被修改的行。如果 Transaction 1 回滚了修改操作,那么 Transaction 2 读取的数据就可以看作是从未存在过的。
- 2.不可重复的读 non-repeatable reads
- 同一事务两次读的结果不一样(数据被修改)。当事务两次读取同一行数据,但每次得到的数据都不一样时,就会发生这种事件。举例来说:Transaction 1 读取一行数据,然后 Transaction 2 修改或删除该行并提交修改操作。当 Transaction 1 试图重新读取该行时,它就会得到不同的数据值(如果该行被更新)或发现该行不再存在(如果该行被删除)。
- 3.虚读 phantom read
- 同一事务两次取到不同的行。如果符合搜索条件的一行数据在后面的读取操作中出现,但该行数据却不属于最初的数据,就会发生这种事件。举例来说:Transaction 1 读取满足某种搜索条件的一些行,然后 Transaction 2 插入了符合 Transaction 1 的搜索条件的一个新行。如果 Transaction 1 重新执行产生原来那些行的查询,就会得到不同的行。
Delphi中资源文件使用小结
- by Hector
一.编写 RC 脚本文本
用记事本或其它文本编辑器编写一个扩展名为“.rc”的文件。格式如下:
- AVI 无声动画
- BITMAP 位图文件
- CURSOR 光标文件
- ICON 图标文件
- WAVE 声音文件
RC脚本编写格式如下
mycur cursor move.cur //加入光标 mypic Bitmap Water.BMP //加入位图 mywav WAVE happy.wav //加入声音 myAVI AVI EPOEN.AVI //加入视频 myIco ICON CJT.ICO //加入图标
以上所列均为标准资源类型,也可以给资源自定义一个类型,如:“GIFTYPE”。不过两者在调用方式上有些不同。
解决Microsoft Expression Blend 4安装后没有WP7模版
- by Hector
由于Blend发布时间比WP7开发包时间早,所以导致里面没有wp7的模版,到微软下载BlendSP1_zh-Hans.exe,注意如果你安装的是blend英文版,就下载英文版的sp1补丁。
如果安装补丁之后还是木有,那试试将安装目录下的模板复制到用户目录下~~
为vs2010添加Silverlight for Windows Phone项目模版
- by Hector
其实vs2010旗舰版已经安装了Silverlight for Windows Phone项目模版的,只是Silverlight for Windows Phone项目模版是英文的,而vs2010安装的是中文的,所以读取不出来。
解决方法有两个
第一个是在vs2010的工具-选项里面更改语言为英文,更改之前需要更改系统为英文。
第二个方法是将模版从系统模版文件夹复制到用户模版那里,将X:\Program Files\Microsoft Visual Studio 10.0\Common7\IDE\ProjectTemplates\CSharp\下面的Silverlight for Windows Phone文件夹复制到X:\Users\你的用户名\Documents\Visual Studio 2010\Templates\ProjectTemplates\Visual C#下。