2023年3月

Delphi线程定时器 - -人生如歌- - 博客园
http://www.cnblogs.com/zhengwei0113/p/4192010.html

(*自己编写的线程计时器,没有采用消息机制,很有效

Cobbler续写

不用 TTimer 的原因:

要说TTimer类的使用问题,先要说一下它响应用户定义的回调函数(OnTimer)的方法。
TTimer拥有一个HWnd类型的成员变量FWindowHandle,用于捕捉系统消息。
TTimer在Enable的情况下,每隔Interval时间,就抛一个系统消息WM_TIMER,FWindowHandle捕捉到这个消息后,
就会执行用户的回调函数,实现用户需要的功能。就是这个消息机制引发了下面两个问题:

问题1: 还不算严重,TTimer与系统共用一个消息队列,也就是说,在用户回调函数处理完之前,
所有的系统消息都处于阻塞状态,包括界面的更新的消息。
如果你的回调函数瞬间执行完毕那就一切看着还正常,如果你要执行一个复杂耗时的操作,
比如数据库查询什么的(万一遇到数据库联接不正常,等待20秒),
那你的界面就必死无疑,直到回调函数执行完。如果是后台系统还好,
要是给用户使用的就没法交待了。即使你在子线程里面使用也不会解决的。

问题2: 一般系统定义消息的优先级比用户定义消息的优先级要低。
在子线程中使用TTimer时,如果线程间通信也大量使用自定义消息,
并且用户定义自己的消息处理函数,那WM_TIMER经常就会被丢弃了,
计时器就彻底失效了。

摘抄自网络
*) unitUntThreadTimer;interface usesWindows, Classes, Winapi.Messages;typeTTimerStatus=(TS_ENABLE, TS_CHANGEINTERVAL, TS_DISABLE, TS_SETONTIMER);
TThreadedTimer
= class;
TTimerThread
= class;
PTimerThread
=^TTimerThread;

TTimerThread
= class(TThread)
OwnerTimer: TThreadedTimer;
Interval: DWord;
Enabled: Boolean;
Status: TTimerStatus;
constructor Create(CreateSuspended: Boolean);destructor Destroy; override;procedure Execute; override;procedureDoTimer;end;

TThreadedTimer
= class(TComponent)privateFHandle: THandle;
FEnabled: Boolean;
FInterval: DWord;
FOnTimer: TNotifyEvent;
FTimerThread: TTimerThread;
FThreadPriority: TThreadPriority;
protected procedureUpdateTimer;procedureSetEnabled(Value: Boolean);procedureSetInterval(Value: DWord);procedureSetOnTimer(Value: TNotifyEvent);procedure Timer; dynamic;public constructor Create(AHandle: THandle; AOwner: TComponent);destructor Destroy; override;published property Enabled: Boolean read FEnabled write SetEnabled defaultTrue;property Interval: DWord read FInterval write SetInterval default 1000;property OnTimer: TNotifyEvent read FOnTimer writeSetOnTimer;end;implementation procedure WakeupDownThrdproc(const evenFlag: Integer); stdcall;begin end;{TTimerThread} constructor TTimerThread.Create(CreateSuspended: Boolean);begin inherited Create(CreateSuspended);
Interval :
= 1000;
Enabled :
=False;
Status :
=TS_DISABLE;end;destructor TTimerThread.Destroy;begin inherited;end;procedureTTimerThread.Execute;begin inherited;while not Terminated do begin //SleepEx(Interval, True); if (not Terminated) and (Status = TS_ENABLE) thenSynchronize(DoTimer);if Status <> TS_ENABLE then begin case Status ofTS_CHANGEINTERVAL:beginStatus :=TS_ENABLE;
SleepEx(
0, True);end;
TS_DISABLE:
beginStatus :=TS_ENABLE;
SleepEx(
0, True);if not Terminated thenSuspend;end;
TS_SETONTIMER:
beginStatus :=TS_ENABLE;end elseStatus :=TS_ENABLE;end;end;
SleepEx(Interval, True);
end;end;procedureTTimerThread.DoTimer;beginOwnerTimer.Timer;end;{TThreadedTimer} constructor TThreadedTimer.Create(AHandle: THandle; AOwner: TComponent);begin inherited Create(AOwner);
FHandle :
=AHandle;
FInterval :
= 1000;
FThreadPriority :
=tpNormal;
FTimerThread :
= TTimerThread.Create(True);
FTimerThread.OwnerTimer :
=self;end;destructor TThreadedTimer.Destroy;begin inherited Destroy;
FTimerThread.Terminate;
QueueUserAPC(@WakeupDownThrdproc, FTimerThread.Handle, DWord(FTimerThread));
FTimerThread.Free;
end;procedureTThreadedTimer.UpdateTimer;begin if (FEnabled = False) then beginFTimerThread.OwnerTimer :=self;
FTimerThread.Interval :
=FInterval;
FTimerThread.Priority :
=FThreadPriority;
FTimerThread.Resume;
end;if (FEnabled = True) then beginQueueUserAPC(@WakeupDownThrdproc, FTimerThread.Handle, DWord(FTimerThread));end;end;procedureTThreadedTimer.SetEnabled(Value: Boolean);begin if Value <> FEnabled then beginFEnabled :=Value;if Value then beginFTimerThread.Status :=TS_ENABLE;
FTimerThread.Resume;
end else beginFTimerThread.Status :=TS_DISABLE;
QueueUserAPC(@WakeupDownThrdproc, FTimerThread.Handle,
DWord(FTimerThread));
end;end;end;procedureTThreadedTimer.SetInterval(Value: DWord);begin if Value <> FInterval then begin if (not Enabled) then beginFInterval :=Value;
FTimerThread.Interval :
=FInterval;end else beginFInterval :=Value;
FTimerThread.Interval :
=FInterval;
FTimerThread.Status :
=TS_CHANGEINTERVAL;
QueueUserAPC(@WakeupDownThrdproc, FTimerThread.Handle,
DWord(FTimerThread));
end;end;end;procedureTThreadedTimer.SetOnTimer(Value: TNotifyEvent);beginFOnTimer :=Value;end;procedureTThreadedTimer.Timer;varMsg: TMessage;beginMsg.Msg := WM_USER + 100;//if Assigned(FOnTimer) then FOnTimer(Self); SendMessage(FHandle, Msg.Msg, 0, 0);end;end.

用法:

delphi新语法之泛型实现的对象池模板 - 咏南 delphi - 博客园--TThreadList;//对象池 中 对象 列表

http://www.cnblogs.com/hnxxcxg/archive/2013/07/15/3191622.html
数据模块池 - 咏南 delphi - 博客园
http://www.cnblogs.com/hnxxcxg/p/3619672.html

\JavaWeb视频教程_day1-资料源码\day01-html目录.txt;
\JavaWeb视频教程_day1-资料源码\PPT\HTML.ppt;
\JavaWeb视频教程_day1-资料源码\资料\table.doc;
\JavaWeb视频教程_day10-资料源码\day10.doc;
\JavaWeb视频教程_day10-资料源码\day10.txt;
\JavaWeb视频教程_day10-资料源码\day10_res\myeclipse\换模板.docx;
\JavaWeb视频教程_day10-资料源码\day10_res\myeclipse\新建工作空间.txt;
\JavaWeb视频教程_day10-资料源码\day10_res\编码\GB2312简体中文编码表.txt;
\JavaWeb视频教程_day10-资料源码\day10_res\编码\Unicode汉字编码表.txt;
\JavaWeb视频教程_day10-资料源码\day10_res\编码\Unicode范围.txt;
\JavaWeb视频教程_day10-资料源码\day10_res\编码\UTF-8编码表.txt;
\JavaWeb视频教程_day10-资料源码\day10_res\编码\汉字验证码.txt;
\JavaWeb视频教程_day10-资料源码\day10_res\编码\编码总结.doc;
\JavaWeb视频教程_day10-资料源码\作业.txt;
\JavaWeb视频教程_day10-资料源码\笔记.txt;
\JavaWeb视频教程_day11-资料源码\day11.doc;
\JavaWeb视频教程_day11-资料源码\day11.txt;
\JavaWeb视频教程_day11-资料源码\day11_res\Cookie之domain\readme.txt;
\JavaWeb视频教程_day11-资料源码\笔记.txt;
\JavaWeb视频教程_day12-资料源码\day12.doc;
\JavaWeb视频教程_day12-资料源码\day12.txt;
\JavaWeb视频教程_day12-资料源码\作业.txt;
\JavaWeb视频教程_day12-资料源码\笔记.txt;
\JavaWeb视频教程_day13-资料源码\day13.doc;
\JavaWeb视频教程_day13-资料源码\day13.txt;
\JavaWeb视频教程_day13-资料源码\笔记.txt;
\JavaWeb视频教程_day14-资料源码\day14.doc;
\JavaWeb视频教程_day14-资料源码\笔记.txt;
\JavaWeb视频教程_day15-资料源码\day15.doc;
\JavaWeb视频教程_day15-资料源码\day15_res\安装MySQL\MySQL安装图解.doc;
\JavaWeb视频教程_day15-资料源码\day15_res\安装MySQL\删除MySQL.txt;
\JavaWeb视频教程_day15-资料源码\day15_res\安装MySQL\新建文本文档.txt;
\JavaWeb视频教程_day15-资料源码\day15_res\资料\MySQL函数.doc;
\JavaWeb视频教程_day15-资料源码\day15_res\资料\MySQL数据类型.doc;
\JavaWeb视频教程_day15-资料源码\day15_res\资料\重置root密码.doc;
\JavaWeb视频教程_day15-资料源码\mysql内容总结\1.数据库管理系统(DBMS)的概述.txt;
\JavaWeb视频教程_day15-资料源码\mysql内容总结\10.编码.txt;
\JavaWeb视频教程_day15-资料源码\mysql内容总结\11.备份与恢复.txt;
\JavaWeb视频教程_day15-资料源码\mysql内容总结\12.多表查询.txt;
\JavaWeb视频教程_day15-资料源码\mysql内容总结\2.安装MySQL.txt;
\JavaWeb视频教程_day15-资料源码\mysql内容总结\3.服务器和客户端操作.txt;
\JavaWeb视频教程_day15-资料源码\mysql内容总结\4.SQL概述.txt;
\JavaWeb视频教程_day15-资料源码\mysql内容总结\5.DDL.txt;
\JavaWeb视频教程_day15-资料源码\mysql内容总结\6.DML.txt;
\JavaWeb视频教程_day15-资料源码\mysql内容总结\7.DCL.txt;
\JavaWeb视频教程_day15-资料源码\mysql内容总结\8.DQL.txt;
\JavaWeb视频教程_day15-资料源码\mysql内容总结\9.约束.txt;
\JavaWeb视频教程_day16-资料源码\day15.doc;
\JavaWeb视频教程_day16-资料源码\mysql内容总结\1.数据库管理系统(DBMS)的概述.txt;
\JavaWeb视频教程_day16-资料源码\mysql内容总结\10.编码.txt;
\JavaWeb视频教程_day16-资料源码\mysql内容总结\11.备份与恢复.txt;
\JavaWeb视频教程_day16-资料源码\mysql内容总结\12.多表查询.txt;
\JavaWeb视频教程_day16-资料源码\mysql内容总结\2.安装MySQL.txt;
\JavaWeb视频教程_day16-资料源码\mysql内容总结\3.服务器和客户端操作.txt;
\JavaWeb视频教程_day16-资料源码\mysql内容总结\4.SQL概述.txt;
\JavaWeb视频教程_day16-资料源码\mysql内容总结\5.DDL.txt;
\JavaWeb视频教程_day16-资料源码\mysql内容总结\6.DML.txt;
\JavaWeb视频教程_day16-资料源码\mysql内容总结\7.DCL.txt;
\JavaWeb视频教程_day16-资料源码\mysql内容总结\8.DQL.txt;
\JavaWeb视频教程_day16-资料源码\mysql内容总结\9.约束.txt;
\JavaWeb视频教程_day17-资料源码\day17.doc;
\JavaWeb视频教程_day17-资料源码\day17_res\MySQL存储blob数据包太大.txt;
\JavaWeb视频教程_day17-资料源码\day17_res\MySQL预编译功能.doc;
\JavaWeb视频教程_day18-资料源码\day18.doc;
\JavaWeb视频教程_day18-资料源码\day18.txt;
\JavaWeb视频教程_day18-资料源码\day18_res\C3P0\c3p0_jar\c3p0-0.9.2-pre1\CHANGELOG;
\JavaWeb视频教程_day18-资料源码\day18_res\C3P0\c3p0_jar\c3p0-0.9.2-pre1\doc\apidocs\package-list;
\JavaWeb视频教程_day18-资料源码\day18_res\C3P0\c3p0_jar\c3p0-0.9.2-pre1\doc\apidocs-oracle-thin\package-list;
\JavaWeb视频教程_day18-资料源码\day18_res\C3P0\c3p0_jar\c3p0-0.9.2-pre1\LICENSE;
\JavaWeb视频教程_day18-资料源码\day18_res\C3P0\c3p0_jar\c3p0-0.9.2-pre1\README;
\JavaWeb视频教程_day18-资料源码\day18_res\C3P0\c3p0_jar\c3p0-0.9.2-pre1\TODO;
\JavaWeb视频教程_day18-资料源码\day18_res\C3P0\c3p0_jar\c3p0-0.9.2-pre1.src\dbms\oracle-thin\build\apidocs\package-list;
\JavaWeb视频教程_day18-资料源码\day18_res\C3P0\c3p0_jar\c3p0-0.9.2-pre1.src\dbms\oracle-thin\dist\doc\apidocs-oracle-thin\package-list;
\JavaWeb视频教程_day18-资料源码\day18_res\C3P0\c3p0_jar\c3p0-0.9.2-pre1.src\README-SRC;
\JavaWeb视频教程_day18-资料源码\day18_res\C3P0\c3p0_jar\c3p0-0.9.2-pre1.src\src\dist-static\CHANGELOG;
\JavaWeb视频教程_day18-资料源码\day18_res\C3P0\c3p0_jar\c3p0-0.9.2-pre1.src\src\dist-static\LICENSE;
\JavaWeb视频教程_day18-资料源码\day18_res\C3P0\c3p0_jar\c3p0-0.9.2-pre1.src\src\dist-static\README;
\JavaWeb视频教程_day18-资料源码\day18_res\C3P0\c3p0_jar\c3p0-0.9.2-pre1.src\src\dist-static\TODO;
\JavaWeb视频教程_day18-资料源码\day18_res\c3p0资料\c3p0_jar\c3p0-0.9.2-pre1\CHANGELOG;
\JavaWeb视频教程_day18-资料源码\day18_res\c3p0资料\c3p0_jar\c3p0-0.9.2-pre1\doc\apidocs\package-list;
\JavaWeb视频教程_day18-资料源码\day18_res\c3p0资料\c3p0_jar\c3p0-0.9.2-pre1\doc\apidocs-oracle-thin\package-list;
\JavaWeb视频教程_day18-资料源码\day18_res\c3p0资料\c3p0_jar\c3p0-0.9.2-pre1\LICENSE;
\JavaWeb视频教程_day18-资料源码\day18_res\c3p0资料\c3p0_jar\c3p0-0.9.2-pre1\README;
\JavaWeb视频教程_day18-资料源码\day18_res\c3p0资料\c3p0_jar\c3p0-0.9.2-pre1\TODO;
\JavaWeb视频教程_day18-资料源码\day18_res\c3p0资料\c3p0_jar\c3p0-0.9.2-pre1.src\dbms\oracle-thin\build\apidocs\package-list;
\JavaWeb视频教程_day18-资料源码\day18_res\c3p0资料\c3p0_jar\c3p0-0.9.2-pre1.src\dbms\oracle-thin\dist\doc\apidocs-oracle-thin\package-list;
\JavaWeb视频教程_day18-资料源码\day18_res\c3p0资料\c3p0_jar\c3p0-0.9.2-pre1.src\README-SRC;
\JavaWeb视频教程_day18-资料源码\day18_res\c3p0资料\c3p0_jar\c3p0-0.9.2-pre1.src\src\dist-static\CHANGELOG;
\JavaWeb视频教程_day18-资料源码\day18_res\c3p0资料\c3p0_jar\c3p0-0.9.2-pre1.src\src\dist-static\LICENSE;
\JavaWeb视频教程_day18-资料源码\day18_res\c3p0资料\c3p0_jar\c3p0-0.9.2-pre1.src\src\dist-static\README;
\JavaWeb视频教程_day18-资料源码\day18_res\c3p0资料\c3p0_jar\c3p0-0.9.2-pre1.src\src\dist-static\TODO;
\JavaWeb视频教程_day18-资料源码\day18_res\db.txt;
\JavaWeb视频教程_day18-资料源码\day18_res\dbcp\dbcp_jar\doc\META-INF\LICENSE.txt;
\JavaWeb视频教程_day18-资料源码\day18_res\dbcp\dbcp_jar\doc\META-INF\NOTICE.txt;
\JavaWeb视频教程_day18-资料源码\day18_res\dbcp\dbcp_jar\doc\package-list;
\JavaWeb视频教程_day18-资料源码\day18_res\丢失更新\丢失更新.doc;
\JavaWeb视频教程_day18-资料源码\day18_res\使用JDK动态代理完成自定义连接池.doc;
\JavaWeb视频教程_day18-资料源码\day18_res\数据库事务.doc;
\JavaWeb视频教程_day18-资料源码\dbutils.txt;
\JavaWeb视频教程_day18-资料源码\装饰者模式.txt;
\JavaWeb视频教程_day19-资料源码\BaseServlet.txt;
\JavaWeb视频教程_day19-资料源码\day19.doc;
\JavaWeb视频教程_day19-资料源码\Service层处理事务.doc;
\JavaWeb视频教程_day19-资料源码\客户关系管理系统.doc;
\JavaWeb视频教程_day2-资料源码\day02-css&javascript目录.txt;
\JavaWeb视频教程_day2-资料源码\day02-readme-css.txt;
\JavaWeb视频教程_day2-资料源码\day02-readme-javascript.txt;
\JavaWeb视频教程_day2-资料源码\PPT\JavaScript.ppt;
\JavaWeb视频教程_day2-资料源码\PPT\网页设计_CSS.ppt;
\JavaWeb视频教程_day2-资料源码\资料\js的null类型说明.doc;
\JavaWeb视频教程_day2-资料源码\资料\补充.txt;
\JavaWeb视频教程_day20-资料源码\day20.doc;
\JavaWeb视频教程_day20-资料源码\day20_code\kick\kick1\readme.txt;
\JavaWeb视频教程_day20-资料源码\day20_code\kick\踢人.doc;
\JavaWeb视频教程_day20-资料源码\分页.doc;
\JavaWeb视频教程_day20-资料源码\新建文本文档.txt;
\JavaWeb视频教程_day21-资料源码\day21.doc;
\JavaWeb视频教程_day21-资料源码\day21_res\log4j\课件\Log4j.doc;
\JavaWeb视频教程_day21-资料源码\day21_res\log4j\课件\帮助\Log4J1.2帮助\package-list;
\JavaWeb视频教程_day21-资料源码\day21_res\log4j\课件\新建文本文档.txt;
\JavaWeb视频教程_day21-资料源码\新建文本文档.txt;
\JavaWeb视频教程_day21-资料源码\页面静态化.txt;
\JavaWeb视频教程_day22-资料源码\day22.doc;
\JavaWeb视频教程_day22-资料源码\day22_code\day22_5\小项目-网络硬盘.txt;
\JavaWeb视频教程_day22-资料源码\day22_res\JavaMail.txt;
\JavaWeb视频教程_day22-资料源码\day22_res\MyEclipse中JavaMail冲突问题.txt;
\JavaWeb视频教程_day22-资料源码\day22_res\有图片的邮件.txt;
\JavaWeb视频教程_day22-资料源码\上传.txt;
\JavaWeb视频教程_day22-资料源码\下载.txt;
\JavaWeb视频教程_day23-资料源码\ajax_res\json\appdoc\package-list;
\JavaWeb视频教程_day23-资料源码\ajax_res\XStream\xstream-1.4.7\BUILD.txt;
\JavaWeb视频教程_day23-资料源码\ajax_res\XStream\xstream-1.4.7\LICENSE.txt;
\JavaWeb视频教程_day23-资料源码\ajax_res\XStream\xstream-1.4.7\README.txt;
\JavaWeb视频教程_day23-资料源码\ajax_res\XStream\xstream-1.4.7\xstream-benchmark\src\benchmarks\xmlfriendly-joehni.txt;
\JavaWeb视频教程_day23-资料源码\ajax_res\XStream\xstream-1.4.7\xstream-benchmark\src\test\com\thoughtworks\xstream\tools\benchmark\strings\targets\eclipse-build-log.txt;
\JavaWeb视频教程_day23-资料源码\ajax_res\XStream\xstream-1.4.7\xstream-distribution\README.txt;
\JavaWeb视频教程_day23-资料源码\day23.doc;
\JavaWeb视频教程_day23-资料源码\笔记.txt;
\JavaWeb视频教程_day24-资料源码\day24_code\ok的\bookstore\readme.txt;
\JavaWeb视频教程_day24-资料源码\day24_code\ok的\hobby分隔时的异常.txt;
\JavaWeb视频教程_day24-资料源码\day24_res\bookstore\只有前台\bookstore\readme.txt;
\JavaWeb视频教程_day24-资料源码\day24_res\day24.doc;
\JavaWeb视频教程_day24-资料源码\day24_res\后台功能.txt;
\JavaWeb视频教程_day24-资料源码\day24_res\在线支付\易宝\在线支付.ppt;
\JavaWeb视频教程_day24-资料源码\day24_res\易宝支付中文问题.txt;
\JavaWeb视频教程_day24-资料源码\day24_res\综合练习.doc;
\JavaWeb视频教程_day24-资料源码\json的省市联动.txt;
\JavaWeb视频教程_day24-资料源码\项目.doc;
\JavaWeb视频教程_day25-资料源码\项目.doc;
\JavaWeb视频教程_day26-资料源码\项目.doc;
\JavaWeb视频教程_day27-资料源码\反射泛型信息.txt;
\JavaWeb视频教程_day27-资料源码\反射注解.txt;
\JavaWeb视频教程_day27-资料源码\泛型.txt;
\JavaWeb视频教程_day27-资料源码\注解.txt;
\JavaWeb视频教程_day28-资料源码\day28.doc;
\JavaWeb视频教程_day28-资料源码\day28_res\包上的注解.txt;
\JavaWeb视频教程_day28-资料源码\javaWeb内容.txt;
\JavaWeb视频教程_day28-资料源码\Servlet3.0.txt;
\JavaWeb视频教程_day28-资料源码\动态代理.txt;
\JavaWeb视频教程_day28-资料源码\类加载器.txt;
\JavaWeb视频教程_day3-资料源码\day03-javaScript基础&DOM目录.txt;
\JavaWeb视频教程_day3-资料源码\day03-readme.txt;
\JavaWeb视频教程_day3-资料源码\day03.doc;
\JavaWeb视频教程_day3-资料源码\PPT\JavaScript.ppt;
\JavaWeb视频教程_day4-资料源码\day04-javaScript基础&DOM目录.txt;
\JavaWeb视频教程_day4-资料源码\day04-readme.txt;
\JavaWeb视频教程_day4-资料源码\day04.doc;
\JavaWeb视频教程_day4-资料源码\PPT\JavaScript.ppt;
\JavaWeb视频教程_day5-资料源码\day05-DOM&XML目录.txt;
\JavaWeb视频教程_day5-资料源码\day05-readme.txt;
\JavaWeb视频教程_day5-资料源码\day05.doc;
\JavaWeb视频教程_day5-资料源码\PPT\xml基础.ppt;
\JavaWeb视频教程_day5-资料源码\资料\Myeclipse安装文件和安装文档\Myeclipse安装文档.doc;
\JavaWeb视频教程_day6-资料源码\day06-DOM&XML目录.txt;
\JavaWeb视频教程_day6-资料源码\day06-readme.txt;
\JavaWeb视频教程_day6-资料源码\day06.doc;
\JavaWeb视频教程_day6-资料源码\PPT\xml基础.ppt;
\JavaWeb视频教程_day6-资料源码\PPT\xml的schema约束.ppt;
\JavaWeb视频教程_day6-资料源码\资料\dom4j-1.6.1\docs\apidocs\package-list;
\JavaWeb视频教程_day6-资料源码\资料\dom4j-1.6.1\lib\test\JUnitPerf_LICENSE;
\JavaWeb视频教程_day6-资料源码\资料\dom4j-1.6.1\LICENSE.txt;
\JavaWeb视频教程_day7-资料源码\day07-Java基础加强目录.txt;
\JavaWeb视频教程_day7-资料源码\day07-readme.txt;
\JavaWeb视频教程_day7-资料源码\day07.doc;
\JavaWeb视频教程_day7-资料源码\PPT\Java基础加强.ppt;
\JavaWeb视频教程_day7-资料源码\资料\Eclipse最实用快捷键.txt;
\JavaWeb视频教程_day8-资料源码\day01.doc;
\JavaWeb视频教程_day8-资料源码\day08.doc;
\JavaWeb视频教程_day8-资料源码\day08.txt;
\JavaWeb视频教程_day8-资料源码\day08_res\catalana.bat详解.doc;
\JavaWeb视频教程_day8-资料源码\day08_res\httpwatch\安装说明.doc;
\JavaWeb视频教程_day8-资料源码\day08_res\startup.bat详解.txt;
\JavaWeb视频教程_day8-资料源码\day08_res\tomcat\tomcat内存.txt;
\JavaWeb视频教程_day8-资料源码\day08_res\Tomcat安装.doc;
\JavaWeb视频教程_day8-资料源码\day08_res\问题.txt;
\JavaWeb视频教程_day8-资料源码\httpWatch抓包内容.txt;
\JavaWeb视频教程_day8-资料源码\tomcat与web程序结构与Http协议与HttpUrlConnection(带答案).doc;
\JavaWeb视频教程_day9-资料源码\day09.doc;
\JavaWeb视频教程_day9-资料源码\day09.txt;
\JavaWeb视频教程_day9-资料源码\day09_code\day09_4\src\a.txt;
\JavaWeb视频教程_day9-资料源码\day09_code\day09_4\WebRoot\WEB-INF\classes\a.txt;
\JavaWeb视频教程_day9-资料源码\day09_res\问题.txt;
\JavaWeb视频教程_day9-资料源码\第4天javaweb之servlet(带答案).doc;

SQL SERVER 2008安装的时候提示“该实例名称已在使用”解决办法。_冷雨玫瑰_新浪博客---和这文章描述差不多
http://blog.sina.com.cn/s/blog_672b419f010158ld.html

本想按照此文删除sql server 2008的,发现里面已经有 2008r2 了,想卸载提示:

卸载2008 r2时提示图2这样 而无法卸载,进而不敢卸载2008了,



然后看安装的程序里面 发现已经有图3这样,有一个2008残留,一个2008 R2的完整版(包括连接客户端),点击Management Studio 管理器:图4,两个数据库的属性图5

SQLServer2008(10.50.1600)与(10.00.2531)与(10.0.1600)的区别 - _大师兄_ - 博客园--说到:
http://www.cnblogs.com/zuandilong/articles/3021901.html
10.00.2531是Sqlerver 2008 Express版(学习版)
10.50.1600是sqlserver 2008 r2版本

--------------本系统中的两个

产品名称:Microsoft SQL Server Express Edition
服务器名称:PCADMINISTRATOR 实例名 为空
产品版本:10.50.1600 RTM--也许是2008 r2 的数据库
服务器名称:PCADMINISTRATOR\SQLEXPRESS
实例名:SQLEXPRESS
产品版本:10.0.2531 SP1  ---也许是2008 的数据库

====导入数据:因为之前有同事说版本不一样导入不成功:

SQL Server 2008还原数据库时出现“备份集中的数据库备份与现有的数据库不同”的解决方法  - 博客频道 - CSDN.NET

http://blog.csdn.net/xingyu0806/article/details/50813466
重点是这一步:
========本人笔记本安装出现错误:

VSShellInstalledRule 检查 Microsoft Visual Studio 2008 的早期版本 失败 此计算机上安装了 Microsoft Visual Studio 2008 的早期版本。请在安装 SQL Server 2008 前将 Microsoft Visual Studio 2008 升级到 SP1。Visual Studio SP1 可在 http://go.microsoft.com/fwlink/?LinkId=159627 找到。
本想更新VS2008到sp1的,后来想想还是卸载吧。但是在360软件管理里面不好卸载,到控制面板里面卸载:(可以方便卸载附带的组件)

以前本人以为Telnet通 ping一定也是通的,

telnet能通,表示两台计算机之间建立了连接通道。理论上是能ping通的。
如果不能ping通,可能的原因是对方主机关闭了ping回显,或者是对方的防火墙阻止了ping发送的数据包。
tenelt是经过
路由选择
的,如果对方设置了拒绝直接
ping服务
,直接ping就不通了。
对方机器提供了 telnet 23 端口的服务,所以能 telnet ,但禁用了 ping 功能,因此你不能 ping 到对方的机器。
是不是禁PINGl了呢!因为TELNET和PING的协议是不一样

本人只需在项目中引入sqljdbc4.jar 包即可

-----------------------------------------

在JAVA中如何连接SQL Server数据库 - hanghangde的博客 - 博客频道 - CSDN.NET
http://blog.csdn.net/hanghangde/article/details/50463658

这篇文章说得很好,有链接 2000和 2008的服务器版本;

Java连接SqlServer2008数据库
首先下载JDBC:下载地址:http://www.microsoft.com/zh-cn/download/details.aspx?id=21599
下载 完成后,是个exe文件,点击运行,会提示你选择解压目录.
解压完成后,进入 <你解压到得目录>\sqljdbc_3.0\chs,里边有两个我们需要的东东
一个是:sqljdbc.jar,另外一个是sqljdbc4.jar
这里使用sqljdbc4.jar
首先配置sa身份验证:
由于安装sqlServer2008时是以windows身份验证安装的,并没有为sqlServer2008添加sqlServer身份用户,因此首先添加用户:
打开Microsoft SQL Server Managerment Studio并以windows验证方式登录,左侧的对象资源管理器->安全性->登录名,右击sa->属性,为sa用户添加密码,选择sqlServer身份验证,在"状态"选项中授予连接到数据库和登录启用.右击对象资源管理器的根节点,选择属性->安全性->sqlServer和windows身份验证模式,这样就为sql server 2008创建了以sql server身份验证的用户sa.
在java代码中用两种方式连接sqlserver2008数据库,一种是sa身份验证模式,另外一种是混合身份验证模式:
第一种:sa身份验证模式,用下边java代码的url

importjava.sql.Connection;importjava.sql.DriverManager;importjava.sql.ResultSet;importjava.sql.Statement;public classTest {public static voidmain(String args[]) {//Create a variable for the connection string.
String url= "jdbc:sqlserver://127.0.0.1:1368;databaseName=mydb;user=sa;password=qiaoning";//sa身份连接
String url2= "jdbc:sqlserver://127.0.0.1:1368;databaseName=mydb;integratedSecurity=true;";//windows集成模式连接//Declare the JDBC objects.
        Connection con = null;    
Statement stmt
= null;
ResultSet rs
= null;try{//Establish the connection. System.out.println("begin.");
Class.forName(
"com.microsoft.sqlserver.jdbc.SQLServerDriver");
con
=DriverManager.getConnection(url);
System.out.println(
"end.");//Create and execute an SQL statement that returns some data. String SQL = "SELECT TOP 10 * FROM aud_t_basis";
stmt
=con.createStatement();
rs
=stmt.executeQuery(SQL);//Iterate through the data in the result set and display it. while(rs.next()) {
System.out.println(rs.getString(
4) + " " + rs.getString(6));
}
}
//Handle any errors that may have occurred. catch(Exception e) {
e.printStackTrace();
}
finally{if (rs != null)try{
rs.close();
}
catch(Exception e) {
}
if (stmt != null)try{
stmt.close();
}
catch(Exception e) {
}
if (con != null)try{
con.close();
}
catch(Exception e) {
}
}
}
}

packagepkg;import java.sql.*;public classQueryDemo {public static voidmain(String[] args){
String JDriver
="com.microsoft.sqlserver.jdbc.SQLServerDriver";
String url
="jdbc:sqlserver://127.0.0.1:1433;DatabaseName=GpsDB";
String user
="sa";
String password
="123456";try{
Class.forName(JDriver);
//动态导入数据库的驱动 Connection conn=DriverManager.getConnection(url, user, password);//获取数据库链接 String query="SELECT TOP 50 * FROM dbo.DSC_User";//创造SQL语句 Statement stmt=conn.createStatement();//执行SQL语句 ResultSet rs=stmt.executeQuery(query);while(rs.next()){
System.out.println(rs.getString(
"ID")+"\tName:"+rs.getString(2)+"\t\t[GroupID]:"+rs.getString(3)+"\t\t[Password]:"+rs.getString(4));
}
System.out.println(
"查询数据成功");
rs.close();
stmt.close();
conn.close();
}
catch(Exception e){
e.printStackTrace();
}
}
}

本人实践代码

第二种:混合身份验证模式,
用上边java代码的url2.
在集成模式下需要如下操作:
找到你刚才的解压目录:进入sqljdbc_3.0\chs\auth\x64,我的是64位系统,如果是32位就x86,将一个名为sqljdbc_auth.dll的文件拷贝到:C:\Windows\System32下,就好了
最后就是
sqlserver2008用的是动态端口
,需要你配置一下:
打开配置工具->SQLServer配置管理器->SQLServer网络配置->MSSQLSERVER的协议->TCP/IP启用,把TCP动态端口中的0都删掉,留空;然后把列表拉到最下边(IPALL),配置一个固定端口,以后你连接数据库就用这个端口就可以了:如下图

这里我用的是1368,数据库重启后,就可以用上面的程序连接了.

========================拓展:

Java连接数据库(mysql,sqlserver) - 霁源童 - 博客园
http://www.cnblogs.com/huangxinyuan650/p/5991441.html

java开发相关资料 - keenweiwei的专栏 - 博客频道 - CSDN.NET
http://blog.csdn.net/keenweiwei/article/details/7328611

Java连接并操作SQLServer数据库 - zhangxiaoshuang - 博客园
http://www.cnblogs.com/zhangxiaoshuang/p/6793561.html

mysql-connector-java-5.0.8-bin.jar
sqljdbc.jar
sqljdbc4.jar