精灵巫婆 发表于 2015-1-16 22:26:49

MSSQL网站制作之数据库综合开辟理论

两个到底是哪一个给出了MySQL这个名字至今依然是个迷,包括开发者在内也不知道。数据|数据库数据库综合开辟理论
马磊、张万里
一套本来在Access上开辟的桌面体系,网页调阅利用ASP编程,数据保护体系利用C++Builder编程。因为Access是一个桌面的共享型数据库,以是在通用性和收集开辟方面都存在一些成绩。因而,必要将该体系移植到服务器型的数据库上。使体系既能够经由过程桌面软件保护数据,又能够有大批用户经由过程网页调看数据(了局)。体系初始软件为:Windows98第二版、Access97、C++Builder4.0、C++Builder5.0、MDAC(MicrosoftDataAccessComponent2.6中文版)。1、移植到Oracle的实验在呆板上安装Oracle7.3桌面版,因为利用不纯熟,以是选择默许安装,除选择言语SimplifiedChinese外,其他都选择默许,一起装下往,没有成绩,从头启动体系。运转NetEasyConfig,设置必要的数据库别号,然后用SQLNet毗连实验,用户名输出system,暗码输出manager,毗连服务器注重,不要输出服务器的地点,而是输出方才创建的别号,出来了。Ok!此时入手下手测试ODBC,创建ODBC数据源。此时,ODBC中有两个有关Oracle的驱动,一个是MicrosoftODBCforOracle,另外一个是Oracle7.3,这是该公司本人开辟的驱动。但是怎样选择驱动程序都不可,不是提醒Oracle的驱动没有安装,就是说某个DLL文件找不到。真是说不可,就不可,行也不可。屡次实验均有效。。。。反省AUTOEXEC.BAT文件,个中有ORACLE的路径。那么,成绩会在甚么中央呢?本着嫌疑统统的立场,在MSDOS体例下顺手输出了一个PATH命令,奇异,内里竟然没有ORACLE的路径!翻开AUTOEXEC.BAT文件一揣摩,路径是否是太长?把路径中的其他目次全都正文失落,重启体系,嘿!数据源能够创建了,并且两个驱动程序哪一个都可以事情。本来因为体系中安装了C++Builder的两个版本,而该软件的目次又出格深,形成PATH情况变量的溢出,而在WINDOWS情况下启动时的提醒我们看不到,以是没有发明这个成绩。如今晓得了,从头调剂一下AUTOEXEC.BAT文件,保存一个C++Builder的路径。今后得记着安装C++Builder时最好本人指定一个目次,如许能够延长路径。这但是说行就行,不可也行。经由对Oracle的测试,发明将Access数据库间接移植到Oracle数据库中时,对文本字段(TEXT,MEMO)的迁徙总有成绩,且该体系利用、安装过于庞大,对呆板设置的请求也太高,而该体系必要安装的用户较多,且利用者程度乱七八糟,以是决意改用如今在自在软件界对照盛行的收费数据库体系MySQL。2、移植到MySQL的履历1.该体系的安装对照复杂,若以为本人没有才能安装该软件的话,还能够从收集高低载一个叫PHPTriadforwindows的软件,该软件安装时没有任何选项,主动安装好MySQL。(实践上,该软件同时还安装好了APACHE服务器、PHP言语注释器,这恰好切合未来把ASP的网页换到PHP上往;别的,该软件还同时安拆卸置好了一个网页数据库保护工具PHPMyAdmin,PHPMyAdmin关于SQL言语不算熟的人来讲办理数据库极为便利。)2.再安装MYODBC(即ODBCforMySQL,我的是2.5版本),注重下载该软件时,要分清95版仍是NT版的。安装也很复杂,一起OK。好了,创建数据源work,填好IP地点,数据库名填mymember(这时候体系供应的数据库),举行测试,不可?改用体系主动安装的sample-mysql数据源毗连,链上了。细心反省设置,没有毛病,为何体系本人做的数据源能够用,我做的就不可呢?把本人创建的删失落,把sample-mysql更名为work,再毗连,嘿嘿,不可了!哈哈,本来就出在名字上,在work前面加上-mysql,再毗连,好了,本来myodbc请求它的数据源称号必需以mysql开头!办理了数据源,上面入手下手移植本来的Access数据库。移植事情对照复杂,翻开Access数据库,选中第一张表,从File菜单当选择“另存为/导出”,选择“另存为一个内部文件或数据库”,选断定,在弹出的对话框中的“保留范例”下拉选单当选择“ODBC数据库”,又弹出一个“导出”的对话框,假如盘算给该数据表更名的话,如今能够输出新的名字,然后选择断定,在弹出的“选择数据源”对话框中点MachineDataSource(呆板数据源),找到本人创建的work-MySQL数据源,按断定。此时会回到Access数据库,假如数据表很年夜的话,形态栏中会有一个导出的进度,不然,导出已完成。导出乐成后,经由过程PHPMYADMIN反省导出的数据库,布局、内容都一般。必要注重的是,假如数据表顶用到了Access供应的ID(主动增量)字段的话,必要手工在方针数据库中修正对应字段的属性(这在PHPMyAdmin中很简单完成,找到该字段后点“改动”,在该字段的属性最初一项“分外”的下拉选单当选择auto_increment,然后保留。PHPMyAdmin的界面是英文的?实在只需在安装有PHPMyAdmin的目次ApacheHtdocsPHPMyAdmin中找到config.inc.php文件,搜刮require,把引号中的“english.inc.php”改成“chinese_gb.inc.php”,再往挪用网页中的PHPMyAdmin,嘻嘻,是否是酿成中文了?实在chinese_gb.inc.php是一个文件名,就在该目次下,你还能够把界面酿成BIG5码呢)。3.终究把移植的事情做完了,上面入手下手用C++BUILDER编程。对数据库利用ADO来会见。步骤以下:在ADO控件标签当选ADOTable,在主窗口上先安排一个ADOTable1,然后点击右边工具察看器(ObjectInspector)中ConnectionString右侧的“…”图标,选“UseConnectionString”,点“Build”,在“Provider”标签当选择“MicrosoftOLEDBProviderforODBCDrivers”,点“Next>>”按钮,在“specifythesourceofdata”当选“usedatasourcename”,从下拉选单当选择数据源work-MySQL,点“TestConnection”,显现毗连乐成,断定,OK,前往,在工具察看器中TableName属性点下拉选单,选择必要的数据表。再从DataAccess控件标签当选DataSource,在主窗口上安排一个DataSource1,在工具察看器中DataSet属性点下拉选单,选择ADOTable1,上面举行界面输入的结构,选择“DataControls”控件标签中的DBEdit依据必要安排,并把DataSource属性设置为DataSource1,DataField属性设置为所必要的字段名。云云安排几个字段,最初从“DataControls”控件标签当选“DBNavigator”放在窗口上。再把ADOTable1的Active属性改成true,咦,怎样有的字段显现成(MEMO),先不论他,运转程序,输出一些内容,点击提交,怎样没了?有的字段还延长了,多试几回,发明新输出的内容不克不及凌驾本来的长度,那末本来是空的字段就永久没法输出内容了。这是怎样回事?这类用法一定没有成绩,之前在Access数据库上就是这么用的。那末,就是MySQL的ODBC有成绩,加入C++Builder,翻开数据源的选项细心剖析,个中第一项vaaaa很象。把它选中,断定,从头运转C++Builder,再运转程序,统统OK。本来MySQL如许的自在软件,其ODBC选项良多,是为了顺应各方面必要,不象微软或其他的数据库那样默许值就能够用。这个选项多是为了优化一些收集上的使用,而把数据库字段的默许值老是假定为最小形态,从而形成这个成绩。这大概也是自在软件的一个小弱点吧。3、ASP会见MySQL数据库的成绩本来的主页中大批利用了ASP会见数据库,个中典范的用法是:dimLK_CONNsetLK_CONN=server.createobject("ADODB.CONNECTION")LK_CONN.open"onduty_mysql","root",""‘以上创建数据库的毗连dimRS_NEWSsetRS_NEWS=server.createobject("adodb.recordset")sql="SELECT*FROMNewsPic"RS_NEWS.opensql,LK_CONN,1,1‘以上创建对表的会见‘上面显现内容,为表达复杂,没有格局,引号中为字段名=RS_NEWS("Extract")=RS_NEWS("Pic")这一段代码没有成绩,完成了光滑过渡;可是有一般中央,有写进操纵,数据不克不及一般读出。该段代码以下:dimRS_COUNTsetRS_COUNT=server.createobject("adodb.recordset")RS_COUNT.open"SELECT*FROMcount",LK_CONN,3,3会见计数器dimZcountZcount=RS_COUNT("Count")Zcount=Zcount+1RS_COUNT("Count").Value=ZcountRS_COUNT.UpdateRS_COUNT.Close入手下手嫌疑这一段前面有写进操纵,以是不克不及准确实行,但经由细心对照和测试,发明成绩不在是不是写进上。这一段的代码次要是用了ASP会见Access数据库时间接填进数据库名的办法,而没有利用SQL语句,我们把翻开数据库的中央改成“select*from表名”,程序遂事情一般。结论:编程时应当只管利用通用性好的办法,如许关于体系的通用性、可移植性来讲,仍是很主要的。4、ODBC的成绩在C++Builder中有的中央要用到SQL查询,因而,有一段程序利用的是ADOQuery控件,原本这类用法在其他呆板上用过,没有成绩,但是在这里却不可。详细情形以下:安排一个ADOQuery,ConnectionString属性、TableName属性和后面的ADOTable属性设置一样,Active属性坚持false,再增加一个DataSource控件和几个DBText控件,设置同前。然后在FormCreate(表单机关函数)中增加以下代码:ADOQuery1->Active=false;ADOQuery1->SQL->Clear();ADOQuery1->SQL->Add("select*fromNamesorderbyID");ADOQuery1->Active=true;while(!ADOQuery1->Eof){ComboBox1->Items->Add(ADOQuery1->FieldByName("Name")->AsString);ADOQuery1->Next();}//后一段ADOQuery1->Active=false;ADOQuery1->SQL->Clear();ADOQuery1->SQL->Add("select*fromDutysorderbyID");ADOQuery1->Active=true;while(!ADOQuery1->Eof){ComboBox2->Items->Add(ADOQuery1->FieldByName("Duty")->AsString);ADOQuery1->Next();}就这么一段代码,在该呆板上怎样都不克不及运转,体系老是提醒“BOF或EOF中有一个为真。。。。”的毛病,将正文前面的一段删失落,体系能够运转,但加入程序时呈现不法毛病,申明是带妨碍运转。重复检察找不出程序的分明毛病,把程序拿到其他呆板上能够经由过程,两个呆板的最次要不同就是ODBC的版本分歧。因而想将ODBC降为2.5英文版,找到MDAC2.5版安装了几回都不可,只妙手工删除,在WINDOWS目次中搜刮出一切前缀为ODBC的文件,然后删除programfilescommonfiles中的system目次,再从头安装MDAC(MicrosoftDataAccessComponent2.5英文版),再运转该程序,统统一般。结论:不晓得是MDAC2.6版本的成绩,仍是由于它是中文版的成绩,总之,形成体系的兼容性不是很好,倡议人人在编程时也应当只管利用已熟习的情况,而不要老是往实验太新的东东。固然,假如是我这一段代码有成绩,还但愿有妙手能出来引导。以上是我们在一次数据库体系的移植开辟过程当中呈现成绩息争决办法的实在纪录,固然成绩都很小,可是让我们在开辟过程当中走了很多弯路,以是把它纪录上去,供人人参考,但愿对伴侣们的开辟有所匡助。个中的成绩也但愿有伴侣可以指出更好的办理举措。mysql的prepare其实是本地PHP客户端模拟的,并没有根据你mysql的设置做字符集的调整。应该交与mysqlserver端做prepare,同时得调用mysql_set_character_set去操作,server才会按照字符集去做转义。

谁可相欹 发表于 2015-1-19 12:41:50

对于微软系列的东西除了一遍遍尝试还真没有太好的办法

莫相离 发表于 2015-1-28 07:05:29

Mirror可以算是SQLServer的Dataguard了。但是能不能被大伙用起来就不知道了。

再现理想 发表于 2015-2-5 19:36:43

但换公司用MSSQL2K感觉自己好像根本就不了解MSSQL。什么DTS触发器以前根本没用过。

仓酷云 发表于 2015-2-13 08:49:00

比如日志传送、比如集群。。。

活着的死人 发表于 2015-3-3 19:46:29

如果你是从“学习某一种数据库应用软件,从而获得应聘的资本和工作机会”的角度来问的话。

爱飞 发表于 2015-3-11 13:16:08

始终遗憾SQLServer的登陆无法分配CPU/内存占用等指标数。如果你的SQLServer给别人分配了一个只可以读几个表的权限,而这个家伙疯狂的死循环进行连接查询,会给你的系统带来很大的负担。

变相怪杰 发表于 2015-3-26 16:08:54

连做梦都在想页面结构是怎么样的,绝非虚言
页: [1]
查看完整版本: MSSQL网站制作之数据库综合开辟理论