- 博客(73)
- 资源 (3)
- 收藏
- 关注
原创 MSSQL 2008 数据库被标记为可疑的解决方法
数据库发生这种操作故障时,可以按如下操作步骤可解决此方法,打开数据库里的Sql 查询编辑器窗口,运行以下的命令。方法一:--1、修改数据库为紧急模式ALTER DATABASE 数据库名 SET EMERGENCYGO--2、使数据库变为单用户模式ALTER DATABASE 数据库名 SET SINGLE_USERGO--3、修复数据库日志重新生成,此命令检查的分配,...
2014-11-20 16:39:03 1122 1
转载 DevExpress 汉化
昨天从 Delphi学习分享和交流这个群(117312472 一个很好的交流群)淘到了一个 'Dev汉化.ini'这个文件,刚开始还不知道怎么用,百度了下了解了下用法,果然是个好东西啊,原先用到DevExpress控件的一些英文的地方都汉化了,这里看起就顺眼多了。特别是日期控件不用再看E文了。1、拖一个TcxLocalizer控件(一些低版本是没有的)2、设置这个控件的一些属性
2012-10-19 13:45:44 1634
转载 UniDAC使用日记
UniDAC使用日记1. UniQuery默认状态为行提交,使用前根据需要设置readonly或cachedupdates属性2. UniQuery.Filter默认大小写区分,请注意设置FilterOptions属性([foCaseInsensitive]),TVirtualtable也存在相同情况3. UniQuery默认情况下,有些var
2012-10-19 13:34:33 911
转载 sql创建作业调度
--定义创建作业DECLARE@jobiduniqueidentifierEXEC msdb.dbo.sp_add_job @job_name= N'作业名称', @job_id=@jobid OUTPUT--定义作业步骤DECLARE@sqlnvarchar(400),@dbname sysnameSELECT@dbname=DB_NAME(), --
2012-10-19 13:32:14 990
转载 Delphi 中,基于接口,封装类为 BPL 包动态加载的程序架构
DELPHI 的普通程序编译出来比较大,一个空程序也要超过1M。其原因是 DELPHI 的程序把所有需要的库都编译到EXE文件里面去了。这样做有个好处:程序发布简单,只要发布一个 EXE 就搞定。 不过,当程序写得很大,又是多人开发,并且程序不断升级,可能还有多个版本的时候,采用包编译方式就有好处了。程序主体 EXE 文件很小,方便升级;程序分成很多BPL包文件,升级某个功能,只需要更换B
2012-10-18 13:25:04 2381
转载 学习使用资源文件[1] - 入门
资源文件(*.res)通过编译指令 $R 关联, 譬如工程文件 Project1 中的 {$R *.res} 就是关联 Project1.res 资源文件, 我们直接写作 {$R Project1.res} 不会有问题(但如果工程文件改名时, 你也得随着改才行). 譬如:pr
2011-09-30 21:33:11 489
原创 SQL 错误 823 I/O error (bad page ID) detected during read【修复方法】
今天一个数据库损坏了,不管对 该表 查询、修改、添加 都会出错, 错误信息如下: I/O error (bad page ID) detected during read at offset 0x0000000171a000 in file “路径\文件”
2011-08-17 19:58:36 6863
原创 SQL 日记文件LDF丢失 或 损坏,只有单独数据文件MDF的修复方法
exec sp_configure 'allow updates',1 RECONFIGURE WITH OVERRIDE /* 打开修改系统表的开关 */GOupdate sysdatabases set status=32768 where name='数据库名' /*
2011-08-17 19:43:57 4975 1
转载 获取某个表的详细情况
SELECT 表名 = case when a.colorder=1 then d.name else '' end, 表说明 = case when a.colorder=1 then isnull(f.value,'') else '' end, 字段序号 = a.colorder, 字段名 = a.name,
2011-08-03 18:33:36 504
转载 获取 某个表 的 主键名
获取主键约束名: 方法一: SELECT TABLE_NAME, COLUMN_NAME, constraint_name FROM INFORMATION_SCHEMA.KEY_COLUMN_USAGE WHERE TABLE_NAME='表名' 方法二: SELECT A.NAME AS 表名,B.NAME AS 主键名
2011-08-03 18:32:40 992
转载 Delphi编程中建议使用的语句
{ No.1 判断逻辑类型 } var B: Boolean; begin B := Boolean(2); //这样只是为了调试//B := True; if B = True then ShowMessage(’B = True’); //不建议//不
2011-07-06 22:53:45 461
转载 html中lable标签的作用
这对标签的的微妙之处在于,选择时不必非得在框内点击鼠标,直接在在文本上选择即可,这一点我觉得有点像flash中设置按钮的感应区,相当于给form标单的input元素添加了一个感应区。废话少说,举例如下:例子1:点击"用户名:"就可以定位光标到输入框用户名:
2011-07-06 22:42:41 519
转载 SQL获得当前连接客户端IP和机器名
create proc usp_getClient_infor as set nocount on Declare @rc int Declare @RowCount int Select @r
2011-07-06 22:35:18 1129
转载 SQL 获取服务器IP/客户端IP
--获取服务器IP create table #(str varchar(100)) insert # exec master..xp_cmdshell 'ipconfig /all' select stuff(str,1
2011-07-06 22:34:34 1217
原创 SQL - 查找 过程、函数、触发器 是否包含 某个指定 字符串
如何查找自己写的sql server 哪些存储过程,函数、触发器包含某个指定的字符串 ?1.查找 过程、函数 外码里是否包含指定的串:SELECT ROUTINE_NAME FROM INFORMATION_SCHEMA.ROUTINES WHERE ROUT
2011-01-28 11:59:00 4046
转载 VGScene 4.05 破解过程
一、介绍VGScene 是KSDEV 公司出品的Delphi 控件,是一款三维动画制作软件,为所有图形应用开发提供了:一个图形编辑器IDE,图形对象,简化动画,先进窗口和控制,最高性能,剥皮引擎,位图效果。 VGScene可作为开发工具,用于监控系统,地理信息系统,计算机辅助设计与信息应用。同时该公司还提供了 DXScene 与Flash Engine 控件。公司网址:http://w
2011-01-22 14:27:00 1060
原创 将图片 按比例 压缩为JPG
{ 将图片保存到数据库时,有时因为图片的大小 太大 或 是BMP没压缩过的图片,而我们在软件只需要看小图, 怎么办呢? 直接保存太慢、而且太占数据库。用以下函数试试. Compress_Jpg 压缩图片。 参数: Apath : 文件名(包括路径); AMaxImgWidth : 图片最大宽度。当图片实际的宽度 超过这个值时,压缩至 最大宽度。 AMaxImgHeight : 图片最大高度。当图片实际的高度 超过这个值时,压缩至 最大高度。 AImgCom
2010-11-22 11:59:00 836
转载 非官方的 TWaitableTimer 类
unit WTimer;interfaceuses Windows, SysUtils, SyncObjs;type TWaitableTimer = class(TSynchroObject) protected FHandle: THandle; FPeriod: LongInt; FDueTime: TDateTime; FLastError: Integer; FLongTime: Int64; publicc
2010-11-21 01:23:00 407
转载 多线程编程(19) - 不使用同步工具, 手动协调线程依次执行
<br />在前面例子的基础上, 探讨新问题.<br /><br />假如我们想让几个线程(例子中是 3 个)依次执行, 我们可以使用临界区、信号、互斥等手段;<br />但下面第一个例子什么同步工具都没用, 也达到了目的; 方法是: 让前一个线程在结束前顺便启动下一个线程.<br /><br />第二个例子使用了互斥对象配合 WaitForSingleObject 函数, 也达到相似的目的. <br /><br />效果图(两个例子的效果图差不多, 但第二个例子的执行顺序不好保证):<br /><br /
2010-11-21 01:22:00 433
转载 多线程编程(18) - 再从一个小例子出发
前面的例子都是让若干线程做同样的事情, 下面这个例子中的三个线程将分别在三个画板上随机画不同颜色的椭圆.接下来的很多事情我想要基于这个例子来做. 本例效果图:代码文件: unit Unit1;interfaceuses
2010-11-21 01:18:00 365
转载 多线程编程(17) - 多线程同步之 WaitableTimer (等待定时器对象)[续三]
<br />根据 WaitableTimer 的主要功用, 现在再把它放在 "线程同步" 的话题中讨论有点不合适了, 就要结束它.<br />//重新看看那个 APC 回调函数的格式:procedure TimerAPCProc( lpArgToCompletionRoutine: Pointer; dwTimerLowValue, dwTimerHighValue: DWORD); stdcall;<br /><br />TimerAPCProc 的后两个参数其实是在传递一个值,
2010-11-21 01:16:00 488
转载 多线程编程(16) - 多线程同步之 WaitableTimer (等待定时器对象)[续二]
<br />喝酒醉了一天, 重装系统一天, 两天没上博客了; 继续学习...<br /><br />想过没有? WaitableTimer 是在 "定时等待", 前面例子中的 WaitForSingleObject 等待函数 "也在等待", 这就 "双重等待" 了, 这不好, 太浪费资源.<br /><br />其实作为同步工具, 前面的几种方法(事件、信号、临界区)基本够用了; WaitableTimer 的作用并不是为了重复前面的功能, 它的主要功用类似 TTimer 类; 譬如每隔多长时间执行一段代码
2010-11-15 20:33:00 600
转载 多线程编程(15) - 多线程同步之 WaitableTimer (等待定时器对象)[续]
<br />本次专门研究下 SetWaitableTimer 的第二个参数(起始时间).<br />它有正值、负值、0值三种情况, 前面已用过 0值.<br />先学习负值(相对时间), 也就是从当前算起隔多长时间开始执行.<br /><br />这个相对时间是已 1/100 纳秒为单位的, 譬如赋值 3*10000000 相当于 3 秒.<br />1 s(秒) = 1,000 ms(毫秒);1 s(秒) = 1,000,000 µs(微妙);1 s(秒)
2010-11-15 20:32:00 501
转载 多线程编程(14) - 多线程同步之 WaitableTimer (等待定时器对象)
function CreateWaitableTimer( lpTimerAttributes: PSecurityAttributes; {安全} bManualReset: BOOL; {True: 可调度多个线程; False: 只调度一个线程} lpTimerName: PWideChar {名称}): THandle; stdcall; {返回句柄}function SetWaitableTimer( hTimer: THandle;
2010-11-15 19:54:00 471
转载 多线程编程(13) - 多线程同步之 Event (事件对象)
<br />据说 Event(事件对象) 是多线程最原始的同步手段, 我觉得它是最灵活的一个.<br />Event 对象(的句柄表)中主要有两个布尔变量, 从它的建立函数中可以看得清楚:<br />function CreateEvent( lpEventAttributes: PSecurityAttributes; {安全设置} bManualReset: BOOL; {第一个布尔} bInitialState: BOOL;
2010-11-14 23:50:00 393
转载 多线程编程(12) - 多线程同步之 Semaphore (信号对象)
<br />之前已经有了两种多线程的同步方法:<br />CriticalSection(临界区) 和 Mutex(互斥), 这两种同步方法差不多, 只是作用域不同;<br />CriticalSection(临界区) 类似于只有一个蹲位的公共厕所, 只能一个个地进; <br />Mutex(互斥) 对象类似于接力赛中的接力棒, 某一时刻只能一个人持有, 谁拿着谁跑.<br /><br />什么是 Semaphore(信号或叫信号量)呢?<br />譬如到银行办业务、或者到车站买票, 原来只有一个服务员,
2010-11-12 23:01:00 511
转载 多线程编程(11) - 多线程同步之 Mutex (互斥对象)[续]
<br />Mutex 作为系统核心对象是可以跨进程的(临界区就不行), 我们可以利用互斥对象禁止程序重复启动.<br /><br />工作思路:<br />先用 OpenMutex 尝试打开一个自定义名称的 Mutex 对象, 如果打开失败说明之前没有这个对象存在;<br />如果之前没有这个对象, 马上用 CreateMutex 建立一个, 此时的程序应该是第一次启动;<br />再重复启动时, 那个 OpenMutex 就有结果了, 然后强制退出.<br />最后在程序结束时用 CloseHandle
2010-11-09 23:24:00 649
转载 多线程编程(10) - 多线程同步之 Mutex (互斥对象)
原理分析:互斥对象是系统内核对象, 各线程都可以拥有它, 谁拥有谁就能执行; 执行完毕, 用 ReleaseMutex 函数释放拥有权, 以让其他等待的线程使用.其他线程可用 WaitForSingleObject 函数排队等候(等候也可以理解为排队申请).使用过程:var hMutex: THandle; {应该先声明一个全局的互斥句柄}CreateMutex {建立一个互斥对象}WaitForSingleObject {用等待函数排队等候}Re
2010-11-08 23:31:00 410
转载 多线程编程(9) - 认识等待函数 WaitForSingleObject
<br />一下子跳到等待函数 WaitForSingleObject, 是因为下面的 Mutex、Semaphore、Event、WaitableTimer 等同步手段都要使用这个函数; 不过等待函数可不止 WaitForSingleObject 它一个, 但它最简单.<br />function WaitForSingleObject( hHandle: THandle; {要等待的对象句柄} dwMilliseconds: DWORD {等待的时间, 单位是毫秒}): DW
2010-11-06 23:14:00 497
转载 多线程编程(8) - 多线程同步之 CriticalSection(临界区)
<br />先看一段程序, 代码文件: unit Unit1;interfaceuses Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, Dialogs, StdCtrls;type TForm1 = class(TForm) ListBox1: TListBox; Button1: TButton; procedure FormCreate(
2010-11-06 22:27:00 473
转载 多线程编程(7) - 从 CreateThread 说起[续五]
function CreateThread( lpThreadAttributes: Pointer; {安全设置} dwStackSize: DWORD; lpStartAddress: TFNThreadStartRoutine; lpParameter: Pointer; dwCreationFlags: DWORD; var lpThreadId: DWORD): THandle; stdcall;CreateThread 的第一个参数 lpThrea
2010-11-06 22:05:00 299
转载 多线程编程(6) - 从 CreateThread 说起[续四]
function CreateThread( lpThreadAttributes: Pointer; dwStackSize: DWORD; {堆栈大小} lpStartAddress: TFNThreadStartRoutine; lpParameter: Pointer; dwCreationFlags: DWORD; var lpThreadId: DWORD): THandle; stdcall;<br /><br />CreateThread 的
2010-11-06 00:26:00 358
转载 多线程编程(5) - 从 CreateThread 说起[续三]
function CreateThread( lpThreadAttributes: Pointer; dwStackSize: DWORD; lpStartAddress: TFNThreadStartRoutine; {入口函数的指针} lpParameter: Pointer; dwCreationFlags: DWORD; var lpThreadId: DWORD): THandle; stdcall;<br /><br />到了入口函数了, 学到这个
2010-11-05 23:47:00 362
转载 多线程编程(4) - 从 CreateThread 说起[续二]
function CreateThread( lpThreadAttributes: Pointer; dwStackSize: DWORD; lpStartAddress: TFNThreadStartRoutine; lpParameter: Pointer; {入口函数的参数} dwCreationFlags: DWORD; var lpThreadId: DWORD): THandle; stdcall;<br /><br />线程入口函数的参数是个无类
2010-11-05 21:36:00 433
转载 多线程编程(3) - 从 CreateThread 说起[续]
function CreateThread( lpThreadAttributes: Pointer; dwStackSize: DWORD; lpStartAddress: TFNThreadStartRoutine; lpParameter: Pointer; dwCreationFlags: DWORD; {启动选项}var lpThreadId: DWORD): THandle; stdcall;<br /><br />CreateThread 的倒数第二个参数
2010-11-05 21:17:00 388
转载 多线程编程(2) - 从 CreateThread 说起
function CreateThread(<br /> lpThreadAttributes: Pointer; {安全设置}<br /> dwStackSize: DWORD; {堆栈大小}<br /> lpStartAddress: TFNThreadStartRoutine; {入口函数}<br /> lpParameter: Pointer; {函数参数}<br /> dwCreationFlag
2010-11-05 20:50:00 328
转载 多线程编程(1) - 先入门再说
多线程应该是编程工作者的基础技能, 但这个基础对我来讲的确有点难(起码昨天以前是这样).开始本应该是一篇洋洋洒洒的文字, 不过我还是提倡先做起来, 在尝试中去理解.先试试这个:procedure TForm1.Button1Click(Sender:
2010-10-28 19:47:00 448
转载 SQL 获取某月 自然天数
create function fn_getDayByYearMonth(@year int,@month int) returns int begin declare @date datetime declare @day int if(@month12) b
2010-10-25 22:01:00 2871 2
转载 sql优化、索引的建立和运用以及多表连接建索引的拙劣见解
<br />一、问题的提出<br /> 在应用系统开发初期,由于开发数据库数据比较少,对于查询SQL语句,复杂视图的编写等体会不出SQL语句各种写法的性能优劣,<br />但是如果将应用系统提交实际应用后,随着数据库中数据的增加,系统的响应速度就成为目前系统需要解决的最主要的问题之一。<br />系统优化中一个很重要的方面就是SQL语句的优化。对于海量数据,劣质SQL语句和优质SQL语句之间的速度差别可以达到上百倍,可见<br />对于一个系统不是简单地能实现其功能就可,而是要写出高质量的 SQL 语
2010-10-08 16:04:00 2537
转载 SQL Server 索引结构及其使用(四)
<br />聚集索引的重要性和如何选择聚集索引<br /><br /> 在上一节的标题中,笔者写的是:实现小数据量和海量数据的通用分页显示存储过程。这是因为在将本存储过程应用于“办公自动化”系统的实践中时,笔者发现这第三种存储过程在小数据量的情况下,有如下现象: <br /><br />1、分页速度一般维持在1秒和3秒之间。 <br /><br />2、在查询最后一页时,速度一般为5秒至8秒,哪怕分页总数只有3页或30万页。 <br /><br /> 虽然在超大容量情况下,这个分页的实现过程是很快的,但
2010-10-08 10:51:00 422
Radmin 3.4 最方便 完美破解 + 中文版
2013-03-09
Devexpress cxGrid 自动 添加行号 补丁
2010-08-10
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人