K. Weblog

This is my weblog,in 2010y.

ASP.NET控件的执行生命周期如表

这几天看petshop详解 

ASP.NET控件的执行生命周期如表6-1所示:

阶段

控件需要执行的操作
要重写的方法或事件
初始化
初始化在传入 Web 请求生命周期内所需的设置。
Init 事件(OnInit 方法)
加载视图状态
在此阶段结束时,就会自动填充控件的 ViewState 属性,控件可以重写 LoadViewState 方法的默认实现,以自定义状态还原。
LoadViewState 方法
处理回发数据
处理传入窗体数据,并相应地更新属性。
注意:只有处理回发数据的控件参与此阶段。
LoadPostData 方法(如果已实现 IPostBackDataHandler
加载
执行所有请求共有的操作,如设置数据库查询。此时,树中的服务器控件已创建并初始化、状态已还原并且窗体控件反映了客户端的数据。
Load 事件(OnLoad 方法)
发送回发更改通知
引发更改事件以响应当前和以前回发之间的状态更改。
注意:只有引发回发更改事件的控件参与此阶段。
RaisePostDataChangedEvent 方法(如果已实现 IPostBackDataHandler
处理回发事件
处理引起回发的客户端事件,并在服务器上引发相应的事件。
注意:只有处理回发事件的控件参与此阶段。
RaisePostBackEvent 方法(如果已实现 IPostBackEventHandler
预呈现
在呈现输出之前执行任何更新。可以保存在预呈现阶段对控件状态所做的更改,而在呈现阶段所对的更改则会丢失。
PreRender 事件OnPreRender 方法
保存状态
在此阶段后,自动将控件的 ViewState 属性保持到字符串对象中。此字符串对象被发送到客户端并作为隐藏变量发送回来。为了提高效率,控件可以重写 SaveViewState 方法以修改 ViewState 属性。
SaveViewState 方法
呈现
生成呈现给客户端的输出。
Render 方法
处置
执行销毁控件前的所有最终清理操作。在此阶段必须释放对昂贵资源的引用,如数据库链接。
Dispose 方法
卸载
执行销毁控件前的所有最终清理操作。控件作者通常在 Dispose 中执行清除,而不处理此事件。
UnLoad 事件(On UnLoad 方法)

表6-1 ASP.NET控件的执行生命周期


一些开源项目(C#)(包含国内和国外)

在SharpDevelop里调试程序

SharpDevelop是一个开源的C#集成开发环境,可以在http://sourceforge.net/project/showfiles.php?group_id=17610&package_id=117376下载到源代码和二进制可执行文件。目前最新的版本是1.0.3.1768版。
其他开源项目:

一、持久层框架 NHibernate
NHibernate是一个面向.NET环境的针对关系型数据库的对象持久化类库。
NHibernate来源于非常优秀的基于Java的Hibernate关系型持久化工具。 NHibernate从数据库底层来持久化你的.Net对象到关系型数据库。NHibernate为你处理这些,你不用自己写SQL去数据库存取对象。你的代码仅仅和对象关联,NHibernat自动产生SQL语句,并确保对象提交到正确的表和字段中去.大量减少开发时人工使用SQL和ADO.NET处理数据的时间. NHibernate可以帮助你消除或者包装那些针对特定数据库的SQL代码,并且帮你把结果集从表格式的表示形式转换到一系列的对象去。因此对于那些在基于.NET的中间层的应用中,它们实现面向对象的业务模型和商业逻辑的应用,NHibernate是最有用的。
二、日志工具 log4net
log4net是一个可以帮助程序员把日志信息输出到各种不同目标的.net类库。它可以容易的加载到开发项目中,实现程序调试和运行的时候的日志信息输出,提供了比.net自己提供的debug类和trace类的功能更多。log4net是从java下有卓越表现的log4j移植过来的。它是apache基金资助的项目的一部分。
三、FCKeditor
FCKeditor是一款功能强大的开源在线文本编辑器(DHTML editor),它使你在web上可以使用类似微软Word 的桌面文本编辑器的许多强大功能。它是轻量级且不必在客户端进行任何方式的安装。
FCKeditor兼容 Firefox, Mozilla, Netscape 和 IE。
四、Ajax.NET Professional
Ajax.NET Professional (AjaxPro)是最先把AJAX技术在微软.NET环境下的实现的AJAX框架之一。它在客户端脚本之上创建代理类来 调用服务器端的方法。
五、NeatUpload
NeatUpload可以让ASP.NET开发人员把磁盘上的文件通过流的方式上传并且可以监视上传进度 。它是开源的且在 Mono''s XSP/mod_mono和微软的ASP.NET下运行得一样好。
包含2个自定义控件:
*用户可以通过INPUTFILE选择一个要上传的文件。
*ProgressBar可以用进度条方式或弹出窗方式显示上传进度。当JavaScript可用时ProgressBar是用类似AJAX的无刷新方式展现,但也允许JavaScript不可用的用户见到上传进度。

 

六、NDoc 【文档工具】
NDoc 可以将 C#.NET 编译生成的程序集和对应的 /doc XML 文档,自动转换成如 .NET Framework SDK 类库文档或者 MSDN Library 在线 .NET 类库文档形式的代码文档,让您快速拥有专业级的类库API 文档。

七、FreeImage 【多媒体工具】
FreeImage是为开发人员提供的开源类库项目,它支持多种流行的图片格式(PNG, JPEG, TIFF, BMP等).FreeImage简单,易用,快速,多线程安全,兼容所以32位的windows并且是跨平台的(Linux和Mac OS X).
八、NUnit 【测试工具】
NUnit一款单元测试框架,它可以应用于遵循.NET框架标准的所有语言下。NUnit最初是从JUnit移植过来的。NUnit完全使用C#编写且设计时考虑了多数.NET语言的特性,例如自定义属性和其它反射特性。
九、Freetextbox 【文本编辑】
FreeTextBox 是一个基于 Internet Explorer 中 MSHTML 技术的 ASP.NET 开源服务器控件。这是一款优秀的自由软件(Free Software),我们可以轻松地将其嵌入到 Web Forms 中实现 HTML 内容的在线编辑,在新闻发布、博客写作、论坛社区等多种 Web 系统中都会有用途。
十、GmailerXP 【Email客户端】
GmailerXP是为Google的Gmail服务提供了全套的工具开源程序。在线所能做的GmailerXP都允许用户做,它也整合了你任何时候在Gmail需要的其它一些程序的特点(GML, Gmailto,等)。
十一、MagicAjax.NET 【Ajax框架】
MagicAjax.NET是一款在ASP.NET下创建Web页面提供AJAX技术的框架。它使开发人员很容易把AJAX整合到他们的页面而不需要替换ASP.NET控件或自己写javascript脚本代码。
十二、Rss Bandit 【RSS和RDF工具】
Rss Bandit是C#开发的开源RSS阅读器,它内建多国语系,支持Atom 1.0以及其他各种的RSS feed格式。它画面漂亮,拥有分页浏览功能,软件细部设置弹性度高。它的操作画面直观简单易懂,有一个很好的Command模式和ListViewEx来使用,可让使用者很快的上手。
十三、DockPanel Suite 【其它C#开源项目】
DockPanel Suite是一款开源的.Net Windows Forms开发环境下的停靠控件(docking)类库。它模仿Visual Studio .Net的效果开发的。
十四、NPlot 【图表制作】
NPlot是一款.NET下的开源图表类库.它值得称道的地方是优雅且灵活的API设计.NPlot包含了Windows Form控件, ASP.NET控件和一个创建Bitmap图片的类。还有一个可用的GTK#控件。
十五、MediaPortal 【多媒体工具】
MediaPortal试图帮你把电脑变成一个高级的Multi-Media Center / HTPC。它允许你听你喜欢的音乐&收音机,看你的video和DVD,观看,确定和记录实况电视等其它功能。MediaPortal是开源的系统,你可以完全免费的获得它。任何人都可以帮组开发MediaPortal 或者根据自己的需要把Media Portal 进行调整。
十六、ndCMS 【内容管理系统(CMS)】
ndCMS是 ASP.net (C#)下的一个内容管理系统。它提供了用户管理,文件管理,一个WYSIWYG编辑器,模板管理,拼写检查和内置的http压缩。ndCMS的目标是提供一个简单而快速的方式部署.Net站点以节省你的时间和金钱。
十七、netBPM 【工作流(workflow)】
NetBPM是JBpm移植到.net平台下的一款开源工作流软件。NetBpm可以很容易和.Net应用程序集成在一起,可以创建,执行和管理工作流程序。
Bpm Tool支持将业务模型转换成软件模型。业务开发人员可以使用模型驱动的方法设计,实现,执行和跟踪业务流程。因此开发人员能够更容易的关注业务逻辑的变化。
十八、NeatUpload 【网络服务器】
NeatUpload可以让ASP.NET开发人员把磁盘上的文件通过流的方式上传并且可以监视上传进度 。它是开源的且在 Mono''s XSP/mod_mono和微软的ASP.NET下运行得一样好。
包含2个自定义控件:
*用户可以通过INPUTFILE选择一个要上传的文件。
*ProgressBar可以用进度条方式或弹出窗方式显示上传进度。当JavaScript可用时ProgressBar是用类似AJAX的无刷新方式展现,但也允许JavaScript不可用的用户见到上传进度。
十九、dasBlog 【博客(Blog)】
dasBlog是从BlogX 网上日志引擎发展而来。像Trackback ,Pingback 一样增加许多附加的特征,有完整的Blogger/MovableType API支持,API注释,完整的Radio-style模板定制,支持Mail-To-Weblog/POP3的附件和内嵌图片,基于WEB的DHTML,OPML,配置的编辑器。

二十、SharpDevelop 【开发工具(IDE)】
SharpDevelop是一个DotNet平台下的免费开发工具,支持C#和VB.NET。


本文内容系原创,转载请注明:

作者:小K

QQ:6661635

来源:http://blog.kidx.cn

最近在看一本CSS的书籍,准备总结下,顺便给各位落伍只会灌水的JJ们看看,互相学习学习。

本文内容以简单实用为主,不讲虚的,只讲实际的,每天内容长短不定。

第一天:

首先是弄清楚,什么是HTML,什么是XHTML,什么是CSS

说白了,HTML+XML就是XHTML,以XML的格式来写HTML,就变成了XHTML。目前版本号是1.0;

CSS就是用来描述页面样子的,目前版本是2.0;

目前三种XHTML的标准:

Transitional:松散点的,用点别的也行;

Strict:严格的,不能使用任何其他的样式表现的标签和属性;

Frameset:有框架就用这个;

http://www.w3.org/QA/Tools/#validators 这里提供了多种校验工具

HTML、XHTML、CSS、RDF、P3P、XML,有几种我不明白是什么

用了Web标准后,表格还有用吗?

有用,表格是用来展示数据的,不是用来布局的。

使用Div+CSS来布局比较好。

第一天就讲这么多,都记住了,明天继续


摘自 TJVictor的专栏

Winform中多国语言窗体的设计以及.NET中资源文件的使用

最近在做一些多国语言的软件,就学习了一下.NET中的多国语言相应知识,受益不少,下面我就简单介绍一下winform中关于多国语言的实现方法。分为七个部分来讲:资源文件概述资源文件的分类资源文件的创建、利用IDE来制作多国语言版本、利用资源文件来做多国语言版本、常用.NET资源文件生成器的使用总结这七个部分。前两个部分都是一些理论性的东西,如果大家不感兴趣可以跳过,直接看三、四、五这三个部分。

第一部分:资源文件概述

资源文件顾名思义就是存放资源的文件。资源文件在程序设计中有着自身独特的优势,他独立于源程序,这样资源文件就可以被多个程序使用。同时在程序设计的时候,有时出于安全或者其它方面因素的考虑,把重要东西存放在资源文件中,也可以达到保密、安全的效果。

资源文件中一般存三种类型的数据:byte流(byte[])、对象(object)和字符串(string)。对于一些纯文件的信息可以用string类型来保存,对于图片(Image)、图标(Icon)等用object来保存,其它的可以用byte流来保存。

System.Resources命名空间中有大量的类和方法来处理资源文件,我将在下面的篇章中进行介绍。

 

第二部分:资源文件的分类

资源文件可以分为两类,一类是以.resx为后缀名的文件,一类是以.resources为后缀名的文件。二者的区别在于:

1. resx虽然是以resx结尾的文件,但是它却是XML格式的文件,你可以用记事本等工具直接打开它修改里面的东西;而resources是二进制的文件,相对来说安全性更好一些。

2. resources作为内嵌资源,在指定路径正确的前提下,可以在程序中直接引用;而resx虽然也是内嵌资源,但它却是要依附于.CS文件存在的。也就是说它是作为winform窗体的一个描述性资源存在的,要想在程序中直接使用它,在解决方案中必须有与它同名(只是名字相同,后缀名不同)的.CS文件存在(见图一)。这一点我会在下面的示例中作详细说明。

3. 我们可以利用CSC命令把resx文件转换成resources文件。

RESGEN.EXE LitwareStrings.resx LitwareStrings.resources

注意变量环境为framework1.1。

第三部分:资源文件的创建

这里我介绍两种资源文件的创建方法,一个是利用System.Resources下的ResourceWriter类,另一个是利用资源文件生成器。本节重点讲利用ResourceWriter类来创建资源文件的方法,第二个方法请详见第六部分。

首先要实例化一个ResourceWriter类型的变量:

ResourceWriter rw = new ResourceWriter ( "My.resources" ) ;其中My.resources就是你要生成的文件名。其次要在磁盘上产生这个文件:调用rw.Generate ( ) ;就可以了。

接下来就要为这个资源文件来增加内容了。在ResourceWriter类中提供了一个AddResource ( )方法,这个方法的作用就是往资源文件中添加资源的。在C#中对不同的资源有着不同的加入方式。

1.加入字节数组,语法格式为:

public void AddResource ( string , byte [ ] ) ;

注释:其中string是在使用资源文件的时候,此字节数组在程序中的的唯一标识符

2. 加入对象,语法格式为:

public void AddResource ( string , object );

注释:其中string是在使用资源文件的时候,此对象在程序中的唯一标识符

在本文程序中,我们利用这种调用方式来加入图标和图象,具体如下:

Icon ico = new Icon ( "main.ico" ) ;
Image Turnoff = Image.FromFile ("Turn-off.png") ;
Image Turnon = Image.FromFile ( " Turn -on.png" ) ;

rw.AddResource ( " main.ico" , ico ) ;//在资源文件中加入图标
//以下是在资源文件中加入图象
rw.AddResource ( " Turn -off.png" , Turnoff ) ;
rw.AddResource ( " Turn -on.png" , Turnlon ) ;

3. 加入字符串,具体语法如下:
public void AddResource ( string1 , string2) ;

注释:其中string1是在使用资源文件的时候,此字符串在程序中的唯一标识符在本文的程序中,是如此使用的:

rw.AddResource ( "MyStr" , "从资源文件中读取字符串" );

至此我们已经创建了一个资源文件,并且在资源文件中加入了若干个资源,当然在这之后,还应该注意,保存此资源文件,并关闭资源文件,具体如下:

rw.Close ( ) ;

以上我介绍了用ResourceWrite类来创建resources文件的方法,对于resx文件,我们可以在vs2003的IDE中在解决方案管理中点右键->添加新项目中->控件资源档来添加。

第四部分:利用IDE来制作多国语言版本

终于进入主题了,但是这一节的内容和前几节关系不大,因为我主要讲如何使用VS的IDE来制作多国语言版本。每一个Form1.cs文件都有一或多个相应的resx文件作为附属资源。他们的命名规则为Form1.cs的资源文件为Form1.resx,Form1.zh-CHS.resx,Form1.zh-CHT.resx等,其中Form1.resx是缺省的窗体资源文档,其它是在不同语言环境要使用的资源文档,其中Form1.zh-CHS.resx是中文简体系统,Form1.zh-CHT.resx是中文繁体系统(如下图一)。关于命名可不是随便起的,可以参见msdn中关于不同地区的命名规则。

(图一)

每一个窗体都有Localizable和Language这两个属性,其缺省值如下图:

(图二)

Localizable表示是否使用本地化资源,当其为true时,可以在Language中选择一种语种,例如选繁体中文,如下图:

(图三)

这时,窗体的布局会发现变化,你要重新布局窗体上的控件位置、大小、内容等等。布局好以后,你可以继续选择其它的语种来布局。不用担心,它们之间不会有冲突,因为所有不同语种之间的布局差别都被保存到相应的resx文件中了,如图一。最后保存、编译。

为了测试结果,我们可以改变机器的语言环境,方法有二:一是在控件面板中的更改语言选项。另一个是用程序来改。下面我介绍一下第二种方法,用程序来改变当前进程的语言环境。

在程序运行时,会自动检测当前的系统语言环境,我们可以通过修改System.Threading.Thread.CurrentThread.CurrentUICulture这个属性来改变当前UI运行的语言环境,代码如下:

static void Main()

{

        System.Threading.Thread.CurrentThread.CurrentUICulture = new System.Globalization.CultureInfo( "zh-CHS" );

        Application.Run(new Form1());

}

效果图如下:

(图四)

更改System.Threading.Thread.CurrentThread.CurrentUICulture = new System.Globalization.CultureInfo( "zh-CHT" );后,效果如下:

(图五)

第五部分:利用资源文件来做多国语言版本

在第三节我们已经说过如何利用ResourceWriter类来创建资源文件,本节就讲讲怎么来使用这些资源文件。利用第三节介绍的方法分别建立三个文件MyResource.resources、MyResourceZH_TW.resources和MyResourceEn.resources分别对应缺省、繁体和英文三个系统。每个文件中有两个string和一个object对象,分别对应button,textbox和Icon。

图四、图五中的language的菜单栏对应代码如下:

private void English_Click(object sender, System.EventArgs e)

{

        ResourceManager rm = new ResourceManager( "EmbedResource.MyResourceEn" , Assembly.GetExecutingAssembly() );

        textBox1.Text = rm.GetString( "TextBoxValue" );

        button1.Text = rm.GetString( "ButtonValue" );

this.Icon = (Icon)rm.GetObject( "Demo.ico" );

}

private void ChineseTraditional_Click(object sender, System.EventArgs e)

{

        ResourceManager rm = new ResourceManager( "EmbedResource.MyResourceZH_TW" , Assembly.GetExecutingAssembly() );

        textBox1.Text = rm.GetString( "TextBoxValue" );

        button1.Text = rm.GetString( "ButtonValue" );

this.Icon = (Icon)rm.GetObject( "Demo.ico" );

}

效果图如下:

在第二部分中,我说过resx和resources调用的方法不同,下面我再说说resx文件如何来调用。由于resx是cs文件的附属文文件,所以项目中一定要有同名的cs文件存在。如图一。

调用resx使用如下代码:

ResourceManager rm = new ResourceManager( "EmbedResource.Form1" ,     Assembly.GetAssembly(typeof(EmbedResource.Form1)));

textBox1.Text = rm.GetObject( "textBox1.Visible" ).ToString();

其中EmbedResource是namespace,Form1为资源文件名(不包含后缀名),第二个参数Assembly.GetAssembly(typeof(EmbedResource.Form1))中EmbedResource是namespace,而Form1是resx附属的cs文件的名称。注意区分。

第六部分:常用.NET资源文件生成器的使用

在网上相关的软件已经很多了,我给大家介绍一个Resourcer.exe,它是开源的,可以在http://www.aisto.com/roeder/dotnet/ 中下载。其运行界面如下:

该软件可以自动保存成text、resx和resources三种格式的文件。前面的资源可以很方便的使用此软件来创建。大家可以自己下载下来试试。我在这里就不多说了。

第七部分:总结

通过上面的介绍我们已经具备了制作多国语言的基础,当然这只是对多国语言制作的初步介绍。有什么不妥的地方,请在评论中指正,我会尽快改过来的。

本文地址:http://read.newbooks.com.cn/info/123873.html


加密SQL连接字符串 .NET2.0

cd  %windows%\Microsoft.NET\Framework\versionNumber
aspnet_regiis -pe "connectionStrings" -app "/SampleApplication" –prov RsaProtectedConfigurationProvider

Whilst writing this, I was listening to -


ye。。Live Writer功能貌似安装上去了

我这篇日志就是在Live Writer里面写的,看看能不能发上去。。

如果发成功了,就是支持该功能了。。

如果没有发成功,就是不支持了。

测试下。嘿。。


成功升级到1.5版本

下午的时候把这个升级了下,成功升级到1.5版本了

不知道加了些什么东西,反正就是升级了。。


把风格调整成符合中文的

风格是英文的,不是太符合中文,

有时间调整下,现在就是不知道为什么本地打开项目有错误提示。

比较郁闷,有空调整下。


Access过大的若干解决方案

给被Access过大问题困扰的网站,提供几种解决方案。
http://www.im286.com/viewthread.php?tid=1892988

作者:小K(Kid)
网站:http://www.kidx.cn
QQ:6661635

问题:

1、我的Access数据库里面没存多少数据,为什么体积很大,别人和我存一样的数据为什么只有我的文件体积的1/10。
2、为什么我删除了数据,但是数据库体积没有减小?
3、为什么我存了几张图片到ole字段里面数据库体积就变大,而且变大的速度超过图片的总体积?
4、为什么我的数据库没有几条记录,体积就20多MB
5、每次体积变大后都要手动压缩?有没有办法自动压缩?


回答:

1、2、你只要在Access里面菜单 工具->数据库实用工具 -> 压缩修复数据库 就可以了
原因是:Access在删除记录或者进行其他需要临时数据的操作后,并不物理删除这些无用数据,只有压缩修复数据库的时候才真正删除。就象windows中将文件放进回收站中无法增加可用空间必须清空回收站是一个道理。

如何操作请参考以下 FLASH 动画:
手动压缩修复数据库。
http://access911.net/down/eg/swf/rc.htm
http://access911.net/down/eg/swf/rc.swf

3、手动将文件插入ole字段的文件,实际保存在数据库中时ole引擎会在文件数据的前面增加一段信息,用于让ole引擎处理你放进去的文件,所以体积会变大。

4、请查看一下,你的数据库里面是否有包含ole字段的表,ole字段可以存储体积非常大的文件,导致体积增长很正常。再看一下你的数据库中窗体、报表中有没有嵌入使用图片做背景。Access中的背景图片全部是以bmp图片格式存放的,即使你原先指定的是jpg格式,Access也会自动将文件格式转换为bmp再存放。
无论是背景还是控件,只要有图片,体积就会不正常地增大。还有,如果你的程序设计成运行时会使用大量临时数据,用完了再删除的,也会造成体积暴增。

5、可以设置退出时自动压缩,步骤如下:
菜单 -> 工具 -> 选项 -> 常规关闭时压缩 -> 前面打上勾

以上为转贴,以下为原创。

上面的是几种数据库变大后的解决方案。

我想说的是如何防止数据库变的如此大。

站在程序员的角度来说,所以不一定对各位站长有用。

只是或许可以给各位Asp+Access的程序作者一点小小的建议而已。。

采用多个数据库,而不是一个数据库。

可以大概指定一定范围,例如从0到1W使用1号数据库。

1W到2W使用2号数据库。

如何使用?。。

con和rs定义多个。。

con1是一号数据库的,con2是二号数据库的。。

rs1是一号数据库的,rs2是二号数据库的。。

添加:

当数据达到XW条时使用新的conX和rsX。。

修改:

查询要修改的ID号。。去指定是数据库执行操作。

删除:

同修改。

用这个有一个不是很好解决的地方。比如我要查询用户排行,查询积分最大的10个用户。

由于用的多个数据库,而且用的多个rs。。

找到了两种方法,各位依照喜好使用。

第一种:

Private Function UnionRs(rsA As Recordset, rsB As Recordset) As Recordset
Dim rs As New Recordset, i%
For i = 0 To rsA.Fields.Count - 1
''设置记录集标题列
rs.Fields.Append rsA.Fields(i).Name, rsA.Fields(i).Type, adFldMayBeNull + adFldIsNullable + adFldUpdatable
Next
''添加rsA到rs
If Not rsA.EOF Then
rsA.MoveFirst
If rs.State = adStateClosed Then rs.Open
While Not rsA.EOF
rs.AddNew
For i = 0 To rs.Fields.Count - 1
rs(i) = rsA(i)
Next
rsA.MoveNext
Wend
rs.UpdateBatch
End If
''添加rsB到rs
If Not rsB.EOF Then
rsB.MoveFirst
If rs.State = adStateClosed Then rs.Open
While Not rsB.EOF
rs.AddNew
For i = 0 To rs.Fields.Count - 1
rs(i) = rsB(i)
Next
rsB.MoveNext
Wend
rs.UpdateBatch
End If
''返回合成后的新的记录集
Set UnionRs = rs
End Function
''调用合并函数
Private Sub Command1_Click()
Dim rs As Recordset
Set rs = UnionRs(rsA, rsB) ''合并rsA和rsB
Set DataGrid1.DataSource = rs
End Sub

第二种:

当记录条数很多的时候,用循环的方法确实比较慢,比较快一点的,可以借助临时表来做:
假设你的两个数据库位置为:C:\testA.mdb和C:\testB.mdb
Dim cnA As New ADODB.Connection, cnB As New ADODB.Connection, rs As New ADODB.Recordset
cnA.Open "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=C:\TestA.mdb;User Id=admin;Password=;"
cnB.Open "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=C:\TestB.mdb;User Id=admin;Password=;"
cn.Execute ("select * into temp from tableA") ''把tableA的数据插入到临时表temp里(具体的查询数据的语句自己改)
cn1.Execute ("INSERT INTO [C:\testA.mdb].temp SELECT * From tableB") ''tableB的数据追加testA的临时表temp里(具体的查询数据的语句自己改)
rs.Open "temp", cnA, adOpenDynamic, adLockReadOnly, adCmdTable

采用多个相同数据库,访问时随机选择数据库。

这个相对来说方便一点,不过不会减少数据库的体积,而是减少数据库的连接数。

也在一定程度上减轻了数据库的压力。

灵感来自镜像站点的访问。

conn.asp(通常为数据库文件)里面加个随机数。。

例如有10个相同数据库,那么随机小于10的整数就OK。

这样以前一个数据库的压力会分配给10个数据库。

虽然不一定平均。。(如果你算法不错,做到平均也不难)

记得后台要有个克隆数据库的操作选项,当然手工也可以。

OK。写完了。希望对各位程序员有点小小的作用。

期望你们写出更优秀的程序来。谢谢。


复制Discuz,“火车头”的不厚道。

作者:Kid(小K)

地址:http://Blog.KidX.Cn

前几天听闻火车头推出直接复制 Discuz/PHPWind 的模块/工具。

(有几张截图,目前未正式发布,不能完全断定真假)

终于还有有人打破了那最后一道屏障。

就像有的人说的,这仿佛就是采集这一块的原子弹。

目的是什么?。。

为了火车头的名气?。(目前是首创)

为了利益?。(改成收费软件)

为了炫耀?。(呵。)

我没用过这套软件,因为我从来不采集东西。我根本不作站。

我知道这是一套好软件。

但我现在有点怀疑作者不厚道了。。

站在程序员的角度说。

复制Discuz目前没什么太大难度,一般懂一点采集的人都可以办到。

但大家都没有去做。

就好像复制别的站点一样。

记得我以前给你们一个演示,把整个落伍复制了的(不是那个小偷)

只是复制,不是采集。有本质区别的。

网上见多了,也不算稀奇,但基本上,能够做到的人,都没有把方法公布出来。

这是为什么?。。

大家都遵守一个底线。

那是人家的成果,落伍是鱼一手搞起来的。

当然,也离不开我们这些落伍者的支持。

让网上“落伍”泛滥,能有什么好处?。。

名?利?。

把RP丢了,名利又有什么用?。。

采集,采集。。

给互联网带来了什么?。。

大量的垃圾站。大量的病毒。

是的,带动了产业链的发展。

域名,空间,seo等都超速发展起来了。

但后果是什么?。。

为什么现在报道互联网没有什么好消息?。。

流氓软件,木马,银行卡,游戏B。

现在作站都是为了什么?。。

利益至上。

是的。

人都是为了金钱活着。。

你放个马,一个3毛。。

人家可能为了这个格盘,损失岂止3毛?。。

站长们。做人要厚道。

唉。。不多说了。。

钱嘛。。呵呵。。




Name:Kid
Mail:guanjun#live.cn
QQ:6661635
Work:Coder&Designer

最近评论

Comment RSS

主机提供

风云互联提供高速稳定带宽支持