我在网上查了资料,下面2两句就是备份与还原

mysqldump.exe -h 152.152.152.32 -u root -p123456 tsingtest > C:\123.sql 数据库导出

mysqldump.exe -h 152.152.152.32 -u root -p123456 tsingtest < C:\123.sql数据库导入

 

可是数据库备份可以,但还原不可以!!不知道为什么??

请帮帮看看,哪里出错了!谢谢

还有今天是不是中邪了!!!cmd 妈的都给我过不去,连一个目录都进步去了!!!!

 

posted @ 2008-08-15 15:53 zitsing 阅读(33) | 评论 (0)编辑

数据库系统是管理信息系统的核心,基于数据库的联机事务处理(OLTP)以及联机分析处理(OLAP)是银行、企业、政府等部门最为重要的计算机应用之一。从大多数系统的应用实例来看,查询操作在各种数据库操作中所占据的比重最大,而查询操作所基于的SELECT语句在SQL语句中又是代价最大的语句。举例来说,如果数据的量积累到一定的程度,比如一个银行的账户数据库表信息积累到上百万甚至上千万条记录,全表扫描一次往往需要数十分钟,甚至数小时。如果采用比全表扫描更好的查询策略,往往可以使查询时间降为几分钟,由此可见查询优化技术的重要性。
笔者在应用项目的实施中发现,许多程序员在利用一些前端数据库开发工具(如PowerBuilder、Delphi等)开发数据库应用程序时,只注重用户界面的华丽,并不重视查询语句的效率问题,导致所开发出来的应用系统效率低下,资源浪费严重。因此,如何设计高效合理的查询语句就显得非常重要。本文以应用实例为基础,结合数据库理论,介绍查询优化技术在现实系统中的运用。
分析问题
许多程序员认为查询优化是DBMS(数据库管理系统)的任务,与程序员所编写的SQL语句关系不大,这是错误的。一个好的查询计划往往可以使程序性能提高数十倍。查询计划是用户所提交的SQL语句的集合,查询规划是经过优化处理之后所产生的语句集合。DBMS处理查询计划的过程是这样的:在做完查询语句的词法、语法检查之后,将语句提交给DBMS的查询优化器,优化器做完代数优化和存取路径的优化之后,由预编译模块对语句进行处理并生成查询规划,然后在合适的时间提交给系统处理执行,最后将执行结果返回给用户。在实际的数据库产品(如Oracle、Sybase等)的高版本中都是采用基于代价的优化方法,这种优化能根据从系统字典表所得到的信息来估计不同的查询规划的代价,然后选择一个较优的规划。虽然现在的数据库产品在查询优化方面已经做得越来越好,但由用户提交的SQL语句是系统优化的基础,很难设想一个原本糟糕的查询计划经过系统的优化之后会变得高效,因此用户所写语句的优劣至关重要。系统所做查询优化我们暂不讨论,下面重点说明改善用户查询计划的解决方案。 
解决问题
下面以关系数据库系统Informix为例,介绍改善用户查询计划的方法。
1.合理使用索引
索引是数据库中重要的数据结构,它的根本目的就是为了提高查询效率。现在大多数的数据库产品都采用IBM最先提出的ISAM索引结构。索引的使用要恰到好处,其使用原则如下:
●在经常进行连接,但是没有指定为外键的列上建立索引,而不经常连接的字段则由优化器自动生成索引。
●在频繁进行排序或分组(即进行group by或order by操作)的列上建立索引。
●在条件表达式中经常用到的不同值较多的列上建立检索,在不同值少的列上不要建立索引。比如在雇员表的“性别”列上只有“男”与“女”两个不同值,因此就无必要建立索引。如果建立索引不但不会提高查询效率,反而会严重降低更新速度。
●如果待排序的列有多个,可以在这些列上建立复合索引(compound index)。
●使用系统工具。如Informix数据库有一个tbcheck工具,可以在可疑的索引上进行检查。在一些数据库服务器上,索引可能失效或者因为频繁操作而使得读取效率降低,如果一个使用索引的查询不明不白地慢下来,可以试着用tbcheck工具检查索引的完整性,必要时进行修复。另外,当数据库表更新大量数据后,删除并重建索引可以提高查询速度。
2.避免或简化排序
应当简化或避免对大型表进行重复的排序。当能够利用索引自动以适当的次序产生输出时,优化器就避免了排序的步骤。以下是一些影响因素:
●索引中不包括一个或几个待排序的列;
●group by或order by子句中列的次序与索引的次序不一样;
●排序的列来自不同的表。
为了避免不必要的排序,就要正确地增建索引,合理地合并数据库表(尽管有时可能影响表的规范化,但相对于效率的提高是值得的)。如果排序不可避免,那么应当试图简化它,如缩小排序的列的范围等。
3.消除对大型表行数据的顺序存取
在嵌套查询中,对表的顺序存取对查询效率可能产生致命的影响。比如采用顺序存取策略,一个嵌套3层的查询,如果每层都查询1000行,那么这个查询就要查询10亿行数据。避免这种情况的主要方法就是对连接的列进行索引。例如,两个表:学生表(学号、姓名、年龄……)和选课表(学号、课程号、成绩)。如果两个表要做连接,就要在“学号”这个连接字段上建立索引。
还可以使用并集来避免顺序存取。尽管在所有的检查列上都有索引,但某些形式的where子句强迫优化器使用顺序存取。下面的查询将强迫对orders表执行顺序操作:
SELECT * FROM orders WHERE (customer_num=104 AND order_num>1001) OR order_num=1008
虽然在customer_num和order_num上建有索引,但是在上面的语句中优化器还是使用顺序存取路径扫描整个表。因为这个语句要检索的是分离的行的集合,所以应该改为如下语句:
SELECT * FROM orders WHERE customer_num=104 AND order_num>1001
UNION
SELECT * FROM orders WHERE order_num=1008
这样就能利用索引路径处理查询。
4.避免相关子查询
一个列的标签同时在主查询和where子句中的查询中出现,那么很可能当主查询中的列值改变之后,子查询必须重新查询一次。查询嵌套层次越多,效率越低,因此应当尽量避免子查询。如果子查询不可避免,那么要在子查询中过滤掉尽可能多的行。
5.避免困难的正规表达式
MATCHES和LIKE关键字支持通配符匹配,技术上叫正规表达式。但这种匹配特别耗费时间。例如:SELECT * FROM customer WHERE zipcode LIKE “98_ _ _”
即使在zipcode字段上建立了索引,在这种情况下也还是采用顺序扫描的方式。如果把语句改为SELECT * FROM customer WHERE zipcode >“98000”,在执行查询时就会利用索引来查询,显然会大大提高速度。
另外,还要避免非开始的子串。例如语句:SELECT * FROM customer WHERE zipcode[2,3] >“80”,在where子句中采用了非开始子串,因而这个语句也不会使用索引。
6.使用临时表加速查询
把表的一个子集进行排序并创建临时表,有时能加速查询。它有助于避免多重排序操作,而且在其他方面还能简化优化器的工作。例如:
SELECT cust.name,rcvbles.balance,……other columns
FROM cust,rcvbles
WHERE cust.customer_id = rcvlbes.customer_id
AND rcvblls.balance>0
AND cust.postcode>“98000”
ORDER BY cust.name
如果这个查询要被执行多次而不止一次,可以把所有未付款的客户找出来放在一个临时文件中,并按客户的名字进行排序:
SELECT cust.name,rcvbles.balance,……other columns
FROM cust,rcvbles
WHERE cust.customer_id = rcvlbes.customer_id
AND rcvblls.balance>0
ORDER BY cust.name
INTO TEMP cust_with_balance
然后以下面的方式在临时表中查询:
SELECT * FROM cust_with_balance
WHERE postcode>“98000”
临时表中的行要比主表中的行少,而且物理顺序就是所要求的顺序,减少了磁盘I/O,所以查询工作量可以得到大幅减少。
注意:临时表创建后不会反映主表的修改。在主表中数据频繁修改的情况下,注意不要丢失数据。
7.用排序来取代非顺序存取
非顺序磁盘存取是最慢的操作,表现在磁盘存取臂的来回移动。SQL语句隐藏了这一情况,使得我们在写应用程序时很容易写出要求存取大量非顺序页的查询。
有些时候,用数据库的排序能力来替代非顺序的存取能改进查询。
               
实例分析

下面我们举一个制造公司的例子来说明如何进行查询优化。制造公司数据库中包括3个表,模式如下所示:
1.part表
零件号零件描述其他列
(part_num)(part_desc)(other column)
102,032Seageat 30G disk……
500,049Novel 10M network card……
……
2.vendor表
厂商号厂商名其他列
(vendor _num)(vendor_name) (other column)
910,257Seageat Corp……
523,045IBM Corp……
……
3.parven表
零件号厂商号零件数量
(part_num)(vendor_num)(part_amount)
102,032910,2573,450,000
234,423321,0014,000,000
……
下面的查询将在这些表上定期运行,并产生关于所有零件数量的报表:
SELECT part_desc,vendor_name,part_amount
FROM part,vendor,parven
WHERE part.part_num=parven.part_num
AND parven.vendor_num = vendor.vendor_num
ORDER BY part.part_num
如果不建立索引,上述查询代码的开销将十分巨大。为此,我们在零件号和厂商号上建立索引。索引的建立避免了在嵌套中反复扫描。关于表与索引的统计信息如下:
表行尺寸行数量每页行数量数据页数量
(table)(row size)(Row count)(Rows/Pages)(Data Pages)
part15010,00025400
Vendor1501,000 2540
Parven13 15,000300 50
索引键尺寸每页键数量页面数量
(Indexes)(Key Size)(Keys/Page)(Leaf Pages)
part450020
Vendor45002
Parven825060
看起来是个相对简单的3表连接,但是其查询开销是很大的。通过查看系统表可以看到,在part_num上和vendor_num上有簇索引,因此索引是按照物理顺序存放的。parven表没有特定的存放次序。这些表的大小说明从缓冲页中非顺序存取的成功率很小。此语句的优化查询规划是:首先从part中顺序读取400页,然后再对parven表非顺序存取1万次,每次2页(一个索引页、一个数据页),总计2万个磁盘页,最后对vendor表非顺序存取 1.5万次,合3万个磁盘页。可以看出在这个索引好的连接上花费的磁盘存取为5.04万次。
实际上,我们可以通过使用临时表分3个步骤来提高查询效率:
1.从parven表中按vendor_num的次序读数据:
SELECT part_num,vendor_num,price
FROM parven
ORDER BY vendor_num
INTO temp pv_by_vn
这个语句顺序读parven(50页),写一个临时表(50页),并排序。假定排序的开销为200页,总共是300页。
2.把临时表和vendor表连接,把结果输出到一个临时表,并按part_num排序:
SELECT pv_by_vn,* vendor.vendor_num
FROM pv_by_vn,vendor
WHERE pv_by_vn.vendor_num=vendor.vendor_num
ORDER BY pv_by_vn.part_num
INTO TMP pvvn_by_pn
DROP TABLE pv_by_vn
这个查询读取pv_by_vn(50页),它通过索引存取vendor表1.5万次,但由于按vendor_num次序排列,实际上只是通过索引顺序地读 vendor表(40+2=42页),输出的表每页约95行,共160页。写并存取这些页引发5*160=800次的读写,索引共读写892页。
3.把输出和part连接得到最后的结果:
SELECT pvvn_by_pn.*,part.part_desc
FROM pvvn_by_pn,part
WHERE pvvn_by_pn.part_num=part.part_num
DROP TABLE pvvn_by_pn
这样,查询顺序地读pvvn_by_pn(160页),通过索引读part表1.5万次,由于建有索引,所以实际上进行1772次磁盘读写,优化比例为 30∶1。笔者在Informix Dynamic Sever上做同样的实验,发现在时间耗费上的优化比例为5∶1(如果增加数据量,比例可能会更大)。

小结

20%的代码用去了80%的时间,这是程序设计中的一个著名定律,在数据库应用程序中也同样如此。我们的优化要抓住关键问题,对于数据库应用程序来说,重点在于SQL的执行效率。查询优化的重点环节是使得数据库服务器少从磁盘中读数据以及顺序读页而不是非顺序读页。

posted @ 2008-08-11 14:13 zitsing 阅读(92) | 评论 (0)编辑

代码如下:

 

Code
posted @ 2008-08-11 14:11 zitsing 阅读(40) | 评论 (2)编辑

背景:

1、数据10万条

2、查询语句select count(*) as number from TBL_BAS_DRUGINFO where AUTHORNO='国药准字H11021781'

3、数据库是MySql 5.2

结果:

1、AUTHORNO字段没建索引,查询时间平均0.85s

2、AUTHORNO字段建索引,类型为Normal,查询时间平均2.3s

3、AUTHORNO字段建索引,类型为Unique,查询时间品均为0.04s

 

以前只知道有差别,今天才知道,怎么差别就这么大呢!

从感性认识提升到了理性认识。

posted @ 2008-08-01 15:38 zitsing 阅读(52) | 评论 (1)编辑

一句话,在链接字符串后加上charset=gb2312

例 "server = localhost; databasse = test; user id = root; password = 123; charset=gb2312"

 

这可是我几个小时的成果啊!!!

posted @ 2008-07-31 18:29 zitsing 阅读(54) | 评论 (1)编辑

     本教程实现的功能是一个dropdownlist1 值改变另一个dropdownlist2的内容随着dropdownlist1 改变而改变,这个改变的数据是从数据库调出来的。

1、首先下载AJAX类库Ajax.dll

2、引用Ajax.all类库

3、在Web.config里配置Ajax

   在<system.web></system.web>里加上这样一句话:

   <httpHandlers>
   <add verb="POST,GET" path="ajax/*.ashx" type="Ajax.PageHandlerFactory,Ajax"/>
   </httpHandlers>

3、在页面Page_Load()时间里注册要使用ajax页面,如:

  private void Page_Load(object sender, System.EventArgs e)
  {
          Ajax.Utility.RegisterTypeForAjax(typeof(WebForm2));//WebForm2是这个页面的类名
  }

4、写在html页面里写javascript代码,如:

  <script language="javascript">
  function sWinNoResult()     //这一个方法是html控件调用的,如:onchange="sWinNoResult();"
  {
     var swinno =document.getElementById("ddl_sWinNo");
     WebForm2.GetDataSet(swinno.value,get_city_Result_CallBack);

//GetDataSet这个方法就是WebForm2.aspx.cs里的方法,如下:

[Ajax.AjaxMethod(Ajax.HttpSessionStateRequirement.Read)]这一句是必须的。

Code

//get_city_Result_CallBack这个就是返回数据后要调用的javascript的方法,如下:

      }
  function get_city_Result_CallBack(response)//response就是后台返回的值
   {
    if (response.value != null)
    {
   
     document.all("ddl_sItemNo").length=0;       
       var ds = response.value;
                    var strtext="";
     if(ds != null && typeof(ds) == "object" && ds.Tables != null)
     { 
         document.all("ddl_sItemNo").options.add(new Option("==请选择==",""));    
      for(var i=0; i<ds.Tables[0].Rows.length; i++)
        {
         var name=ds.Tables[0].Rows[i].AUTHORNAME;
          var id=ds.Tables[0].Rows[i].AUTHORNO;
          document.all("ddl_sItemNo").options.add(new Option(name,id));  
         }
     }
    }    
    return
   }
  </script>

5、参考以上代码,自己慢慢练吧。

posted @ 2008-07-30 15:24 zitsing 阅读(110) | 评论 (0)编辑

1、获取表结构,TBL_BAS_DRUGINFO为表明

SELECT CASE IsNull(I.name, '')
When '' Then ''
Else '*'
End as IsPK,
Object_Name(A.id) as t_name,
A.name as c_name,
IsNull(SubString(M.text, 1, 254), '') as pbc_init,
T.name as F_DataType,
CASE IsNull(TYPEPROPERTY(T.name, 'Scale'), '')
WHEN '' Then Cast(A.prec as varchar)
ELSE Cast(A.prec as varchar) + ',' + Cast(A.scale as varchar)
END as F_Scale,
A.isnullable as F_isNullAble
FROM Syscolumns as A
JOIN Systypes as T
ON (A.xType = T.xUserType AND A.Id = Object_id('TBL_BAS_DRUGINFO') )
LEFT JOIN ( SysIndexes as I
JOIN Syscolumns as A1
ON ( I.id = A1.id and A1.id = object_id('TBL_BAS_DRUGINFO') and (I.status & 0x800) = 0x800 AND A1.colid <= I.keycnt) )
ON ( A.id = I.id AND A.name = index_col('TBL_BAS_DRUGINFO', I.indid, A1.colid) )
LEFT JOIN SysComments as M
ON ( M.id = A.cdefault and ObjectProperty(A.cdefault, 'IsConstraint') = 1 )
ORDER BY A.Colid ASC

 

 

提取数据库内所有表的字段详细说明的SQL语句

SELECT
(case when a.colorder=1 then d.name else '' end) N'表名',
a.colorder N'字段序号',
a.name N'字段名',
(case when COLUMNPROPERTY( a.id,a.name,'IsIdentity')=1 then '√'else ''
end) N'标识',
(case when (SELECT count(*)
FROM sysobjects
WHERE (name in
(SELECT name
FROM sysindexes
WHERE (id = a.id) AND (indid in
(SELECT indid
FROM sysindexkeys
WHERE (id = a.id) AND (colid in
(SELECT colid
FROM syscolumns
WHERE (id = a.id) AND (name = a.name))))))) AND
(xtype = 'PK'))>0 then '√' else '' end) N'主键',
b.name N'类型',
a.length N'占用字节数',
COLUMNPROPERTY(a.id,a.name,'PRECISION') as N'长度',
isnull(COLUMNPROPERTY(a.id,a.name,'Scale'),0) as N'小数位数',
(case when a.isnullable=1 then '√'else '' end) N'允许空',
isnull(e.text,'') N'默认值',
isnull(g.[value],'') AS N'字段说明'
FROM syscolumns a
left join systypes b
on a.xtype=b.xusertype
inner join sysobjects d
on a.id=d.id and d.xtype='U' and d.name<>'dtproperties'
left join syscomments e
on a.cdefault=e.id
left join sysproperties g
on a.id=g.id AND a.colid = g.smallid
order by object_name(a.id),a.colorder

posted @ 2008-07-25 12:02 zitsing 阅读(32) | 评论 (0)编辑
方法一:修改

1。先安装UltraEdit-32二进制编辑器。

2。找到pdfilm12.dll文件.        安装磁盘:"Sybase"PowerDesigner 12"pdflm12.dll 。

     3。修改pdflm12.dll文件.使用UltraEdit-32打开此文件,查找:83 C4 14 8B 85 E4 FE FF FF将此字符串改为83 C4 14 33 C0 90 90 90 90。

 

方法二:覆盖

直接下载下载pdflm12.dll,覆盖即可,这次定能行.

 

posted @ 2008-07-24 16:46 zitsing 阅读(65) | 评论 (0)编辑
     我在的公司是一个小公司,我进去的时候就是修改这个公司以前作的一个delphi做的进销存软件,其界面很丑(包括控件布局,和整体设计,其实界面就没做,主窗体上面top放上一个MainMenu,其下放一个ToolButton,下面就一个很大的淡蓝色图片),公司拿给客户看,客户说界面太丑让改。我花了6天时间把界面重新做。公司领导看了还比较满意的界面,可到那周给我的评语是追求太完美导致效率不高。首先我不是美工师,我师程序员,让我改界面已经是够为难我的了,光做图片就做了上百个。哎,最可气的是项目经理说怎么做这么慢不就是Ctrl C,Ctrl V吗?50个按钮一下午不就做完了,我当时气的只想抽他。妈的,你怎么不做界面,几天前我把主界面做出来(单做在另一个程序里),你兴冲冲的说:“发过我来我整合”。(靠,你整合让我干啥去啊。),妈的,最后他整合了一上午,没整合好,下午说:“还是你整合吧,怎么老报一个内存错误!”。日,最后又退给我做了。
不知道你们工作可发牢骚!!
posted @ 2008-07-11 11:07 zitsing 阅读(125) | 评论 (5)编辑
       我向来喜欢,敬佩,崇拜那些评批我,教训我,并跟我辩论的人,他们的存在使我看到了自己的不足,意识到自己还需要改进和完善,同时我也感到欣慰,因为我知道他们已经对我的言行进行了思考,这种思考不管对还是错都是可敬的。因为大国的崛起都先从思想开始的。
posted @ 2008-07-03 17:21 zitsing 阅读(45) | 评论 (0)编辑

1. 这个是java编写的WebService地址:http://152.152.152.41:7001/WebServer/ServerBusiness?wsdl

2. 通过Delphi的File——New——Other——WebServices——WSDL Importer 导入这个地址(http://152.152.152.41:7001/WebServer/ServerBusiness?wsdl,上面有
一个文本框让你输入这个网址的。)会生成一个Unit单元文件,保存。

3. 在想调用的Unit单元中uses上面生成的单元。

4. 在调用的时间中这样写:代码如下:
procedure TFrmPerson.BtnOkClick(Sender: TObject);
var
  person: PersonInfo;//声明WebService单元中一个对象
  port: ServerBusinessPort;//WebService一个执行方法的对象
  Result: string; //这个方法的返回值
begin
    port := GetServerBusinessPort();//返回一个对象
    person := PersonInfo.Create;//创建这对象相对于C# 中的new关键字吧
   person.PERSON_ID := PERSONNO.Text; //人员编号
    person.PERSON_NAME := PERSONNAME.Text; //人员姓名
    person.DEPT_NAME := DEPT_NAME.Text; //所属部门
    Result := port.AddPersonInfo(person);//调用方法了,person就是传过去的对象了。
    if Result='1' then begin
    ShowMessage('成功!');
    end else begin
    ShowMessage('失败');
    end;
end;

5. Ok,over 了。

posted @ 2008-07-02 16:41 zitsing 阅读(75) | 评论 (0)编辑
        中国的高级软件工程师你们难道上网只看技术吗?悲哀啊。
        我还是忍不住发了。

《赞美》查良铮(1918--1977),笔名穆旦

走不尽的山峦的起伏,河流和草原,
数不尽的密密的村庄,鸡鸣和狗吠,
接连在原是荒凉的亚洲的土地上,
在野草的茫茫中呼啸着干燥的风,
在低压的暗云下唱着单调的东流的水,
在忧郁的森林里有无数埋藏的年代
它们静静地和我拥抱:
说不尽的故事是说不尽的灾难,沉默的
是爱情,是在天空飞翔的鹰群,
是干枯的眼睛期待着泉涌的热泪,
当不移的灰色的行列在遥远的天际爬行;
我有太多的话语,太悠久的感情,
我要以荒凉的沙漠,坎坷的小路,骡子车,
我要以槽子船,漫山的野花,阴雨的天气,
我要以一切拥抱你,你
我到处看见的人民呵,
在耻辱里生活的人民,佝偻的人民,
我要以带血的手和你们一一拥抱,
因为一个民族已经起来。
 
一个农夫,他粗糙的身躯移动在田野中,
他是一个女人的孩子,许多孩子的父亲,
多少朝代在他的身上升起又降落了
而把希望和失望压在他身上,
而他永远无言地跟在犁后旋转,
翻起同样的泥土溶解过他祖先的,
是同样的受难的形象凝固在路旁。
在大路上多少次愉快的歌声流过去了,
多少次跟来的是临到他的忧患,
在大路上人们演说,叫嚣,欢快,
然而他没有,他只放下了古代的锄头,
再一次相信名辞,溶进了大众的爱,
坚定地,他看着自己溶进死亡里,
而这样的路是无限的悠长的,
而他是不能够流泪的,
他没有流泪,因为一个民族已经起来。

在群山的包围里,在蔚蓝的天空下,
在春天和秋天经过他家园的时候,
在幽深的谷里隐着最含蓄的悲哀:
一个老妇期待着孩子,许多孩子期待着
饥饿,而又在饥饿里忍耐,
在路旁仍是那聚集着黑暗的茅屋,
一样的是不可知的恐惧,一样的是
大自然中那侵蚀着生活的泥土,
而他走去了从不回头诅咒。
为了他我要拥抱每一个人,
为了他我失去了拥抱的安慰,
因为他,我们是不能给以幸福的,
痛哭吧,让我们在他的身上痛哭吧,
因为一个民族已经起来。
一样的是这悠久的年代的风,
一样的是从这倾圮的屋檐下散开的
无尽的呻吟和寒冷,
它歌唱在一片枯槁的树顶上,
它吹过了荒芜的沼泽,芦苇和虫鸣,
一样的是这飞过的乌鸦的声音,
当我走过,站在路上踟蹰,
我踟蹰着为了多年耻辱的历史
仍在这广大的山河中等待,
等待着,我们无言的痛苦是太多了,
然而一个民族已经起来,
然而一个民族已经起来。

posted @ 2008-07-01 20:16 zitsing 阅读(244) | 评论 (3)编辑

我不知道EhLib在其他系统安装可有这样的问题。
按照网上的delphi 7中的安装方法
1. 把 EhLib 中的 common 和 DataService 文件拷贝到 Delphi7 目录中.
2.在 TOOLS->Environment Options->Library->Library Path 中添入EHLIB路径。
3.打开新建文件夹中的 EHLIB70.DPK ,编译一下,但不要安装。
4.打开Ehlib中的DclEhLib70.DPK,编译,安装
5. 在Delphi 7中打开DclEhLib70.dpk,编译并安装。
6. 组件面板中出现一个EhLib的组件页。
7. 打开附带的DEMOS,编译并运行,测试安装成功。

我按照上面的安装方法出现如下问题:
3.打开新建文件夹中的 EHLIB70.DPK ,编译一下,但不要安装。(我出现了要求在D盘建立一个D7outtmp目录,否则无法继续。
4.打开Ehlib中的DclEhLib70.DPK,编译,安装 (Ehlib目录中根本没有DclEhLib70.DPK
第5. 在Delphi 7中打开DclEhLib70.dpk,编译并安装。 (这一步的时候出现Can't load package D:\D7outtmp\DclEhLib70.bpl 找不到指定模块

解决办法:把第3步生成的D:\D7outtmp中的DclEhLib70.bplDclEhLibDataDrivers70.bplEhLib70.bpl,EhLibDataDrivers70.bpl四个文件复制到C:\WINDOWS\system32中。
我搜索了一下,网上没有解决办法。我是花了4个小时,重做2次系统,才解决的。

 

posted @ 2008-06-30 12:06 zitsing 阅读(68) | 评论 (0)编辑
      我现在才理解生命的意义。高中觉得生活很枯燥,以为大学就好了,没想到大学也一样,在大学觉得以后工作就好了,可工作了生活更枯燥。经过我反复的思考得到一个结论,日子他不管你流着泪,还是笑着都会过去,所以要珍惜现在,展望未来。
posted @ 2008-06-26 18:16 zitsing 阅读(82) | 评论 (0)编辑
    我一直没对这件事进行评论,我觉得在没经过调查、观察的情况下评论是一种不负责任的。经过这段时间通过网络,媒体,特别是“一虎一席谈”节目我对范美忠老师的独立思想有崇高的敬意。就像他说的舍生救人是一种选择。
    我很喜欢这样的老师。对他的任何辱骂或责备我都反对。要以人为本,不爱己,怎能爱人。不要像文革那样残害有志之士。中国社会并不缺乏有崇高道德的人,缺乏的是有思想的人。
    我只所以现在也评价了,因为我发现有些人想用吐沫淹死他。也许我这篇文章无法让更多的人原谅,理解范美忠。但至少可以影响几个人,我相信星星之火可以燎原,真理永远在少数人手里。

我觉得他除了自己跑出去之前没有喊一下同学,他没有任何行为上的错误。再则根据地震安全手册介绍,地震发生时是不能惊慌,乱跑的。而应该躲在桌子下,等待地震平息减小后,才迅速跑到安全地带。假如当时他喊了,造成了学生发生踩踏事件,那他就有造谣、夸大地震的罪。有一点可以肯定他很坚强,思想很成熟,不成熟的思想是经不起你们这些人炮轰的,早就站出来向人民道歉——“我对不起党,对不起祖国人民,对不起养育我的父母,对不起我的学生,对不起领导,给他们添麻烦了,我一定痛改前非,好好做人,接受改造。”这句话是多么的好说,可他没说,就这一点就值得我们尊敬,他虽然不是什么英雄,从这一点至少他不会做汉奸,叛徒。
posted @ 2008-06-17 09:34 zitsing 阅读(199) | 评论 (9)编辑
    这几天每当看到地震的场面,我都忍不住流泪。我要珍惜生命,珍惜身边每一个人。
posted @ 2008-05-18 10:50 zitsing 阅读(82) | 评论 (0)编辑
大学政治考2次都没过,还得等最后一次补考。而我已经凭借直接的实 力找到了软件开发的工作。 本来上大学一心想做技术,可最后确被政治困扰。 我们班就我一个没过,也就我一个找到对口的工作。
posted @ 2008-05-01 15:07 zitsing 阅读(96) | 评论 (3)编辑

    我想实现的功能是现实一频道下的所有栏目下的前8篇文章。
html代码如下:
<asp:Repeater ID="repChannel" runat="server" >
                <HeaderTemplate>
   <div class="leftList">
                </HeaderTemplate>
                <ItemTemplate>
                                <asp:Repeater ID="repCategory" runat="server" DataSource='<%# GetCategoryArticle(Eval("ID").ToString()) %>'>
                <HeaderTemplate>
                <div class="blank20"></div>
                <ul>
                </HeaderTemplate>
                <ItemTemplate>
                <li>
           <h5>[<a href='ShowCategory.aspx?CategoryID=<%# DataBinder.Eval(Container.DataItem, "CategoryID")%>'><%# DataBinder.Eval(Container.DataItem, "CategoryID")%></a>] <a href='ShowArticle.aspx?CategoryID=<%# DataBinder.Eval(Container.DataItem, "CategoryID")%>&ArticleID=<%# DataBinder.Eval(Container.DataItem, "Article.ID")%>'><%# DataBinder.Eval(Container.DataItem, "Article.Title")%></a></h5>
           <h6><%# DataBinder.Eval(Container.DataItem, "PubDate")%></h6>
          </li>
                </ItemTemplate>
                <FooterTemplate></ul></FooterTemplate>
                </asp:Repeater>
                </ItemTemplate>
                <FooterTemplate>
                </div>
                </FooterTemplate>
                </asp:Repeater>
cs代码如下:
    protected OleDbDataReader GetCategoryArticle(string cid)
    {
        string StrConn = ConfigurationManager.ConnectionStrings["jcbConnectionString"].ConnectionString;
        string strSql = "select top 8 * from CCListView where CategoryID=" + cid + " order by Article.ID desc";
        OleDbConnection objConn = new OleDbConnection(StrConn);
        OleDbCommand objCmd = new OleDbCommand(strSql, objConn);
        objConn.Open();
        return objCmd.ExecuteReader(CommandBehavior.CloseConnection);
    }

CCListView视图如下:

执行结果:
DataBinding:“System.Data.Common.DbDataRecord”不包含名为“Article”的属性。

难道不可以这样吗??

posted @ 2008-04-17 20:35 zitsing 阅读(167) | 评论 (0)编辑
    
    今碰到一个头疼的问题,我在javascript中有一个url链接,其中这个url有两个参数,用&链接。本来我想是javascript处理特殊字符问题。所以我就在ShowArticle.aspx?CategoryID=5&ArticleID=27改成ShowArticle.aspx?CategoryID=5\&ArticleID=27,可是不行。找了大量资料,原来不是javascript处理特殊字符物体,而是url处理特殊字符问题。所以我把ShowArticle.aspx?CategoryID=5&ArticleID=27
换成ShowArticle.aspx?CategoryID=5%26ArticleID=27,行了

javascript中的特殊字符如下:
\’ 单引号 
\" 双引号 
\& 和号 
\\ 反斜杠 
\n 换行符 
\r 回车符 
\t 制表符 
\b 退格符 
\f 换页符 
url中的特殊字符如下:
+ 表示空格(在 URL 中不能使用空格)         %20
/ 分隔目录和子目录                          %2F
? 分隔实际的 URL 和参数                      %3F
% 指定特殊字符                               %25
# 表示书签                                  %23
& URL 中指定的参数间的分隔符                 %26

解决问题有时候得全面考虑不要只看一面!!
posted @ 2008-04-15 10:49 zitsing 阅读(202) | 评论 (1)编辑
    本来想把这个blog作为一个学习总结来写的,可人都是有感情的,生活中除了学习还有很多事情要发生。程序员是孤独的,不善言谈,很多事情都放在心里,真的很压抑。就像我来到这里一样,希望的不仅是学到更多技术,同时也是希望找到知己。
    自从我希望做程序员以来就打定主意要全心全意做技术,做技术上的牛人,不管外界发生的事情。可是通过慢慢的学习中技术并不是启主导作用,这让我深深思考了很久,也困惑了很久。有时候我想难道我是那么执着吗?就不能改变一下自己吗?我想只是我没下定决心改变,如果我下定决心一定改变的让你意外。
posted @ 2008-04-09 13:10 zitsing 阅读(70) | 评论 (0)编辑

java 既然出现double类型×2的n次方的时候计算结果出现偏差
代码如下:
package Com.Aftvc.tsing;

public class example {
 /**
  * @param args
  */
 public static void main(String[] args) {
  //EXE p = new EXE(8);
  //p.decrease();
  //p.add();
  //p.mult(); 
  Figure tri = new Triangle(3,4,5);
  System.out.println("此三角形的周长是:"+tri.GetGirth());
  System.out.println("此三角形的面积是:"+tri.GetArea());
  Figure cir = new Circle(5);
  System.out.println("此圆的周长是:"+cir.GetGirth());
  System.out.println("此圆的面积是:"+cir.GetArea());
  Figure tra = new Trapezoid(3,9,4,5,5);
  System.out.println("此梯形的周长是:"+tra.GetGirth());
  System.out.println("此梯形面积是:"+tra.GetArea());
 }

}



package Com.Aftvc.tsing;

public class Circle implements Figure{
 double r;
 public Circle(double r1){
  r=r1;
 }
 public double GetArea(){
  return PI*r*r*2;
 }
 public double GetGirth(){
  return PI*r*2;//如果*3结果47.1 *4结果很长!!我测试了1,2,3,4,5,6,7,8,9,10,11,12,16只要是2的n次方就出现很长的结果。
 }
}
此三角形的周长是:12.0
此三角形的面积是:6.0
此圆的周长是:31.400000000000002
此圆的面积是:157.0
此梯形的周长是:22.0
此梯形面积是:24.0

return PI*r*2;

posted @ 2008-04-08 13:41 zitsing 阅读(119) | 评论 (0)编辑
    放清明节的前一天同学请我吃麦当劳(平生第一次啊,大家可不要笑话我!),他们买彩票我为了换零钱也买了一张。今天才想起来查看,一看大喜啊,中奖了!——5元。买第一张的时候想了老半天才想到一个有意思的号码,这次准备把5元的彩票兑换了,再买2张。可到底买什么号码难住我了。为了以后买彩票方便,顺便写了一个生成双色球号码的控制台程序。
程序如下:
using System;
public class DoubleColorBall
{
 public static void Main()
 {
  int p;
         int[] b = new int[7];
         Random r = new Random();
         b[0] = r.Next(1, 34);
         for (int j = 1; j < 6;)
         {
              b[j] = r.Next(1, 34);
              for (p = 0; p < j; p++)
              {
                  if (b[p] == b[j])
                  {
                       break;
                  }
             }
             if (p == j)
             {
                 j++;
             }
         }
         b[6] = r.Next(1, 17);
         for (int k = 0; k < 7; k++)
         {
              System.Console.Write(b[k]+"-");
         }
  System.Console.ReadLine();
 }
}
我知道这个程序根本不符合实际,我想过几天再写个真正模拟双色球抽奖程序。呵呵
posted @ 2008-04-05 20:14 zitsing 阅读(159) | 评论 (2)编辑

    给别人做了几个东西,占用了我大量的时间,为了尽快完成使用的都是一些并不深入成熟的技术,所以技术并没有什么提高。我要研究性学习,再深入一下,做到尽善尽美,这样对以后的发展才更有利

posted @ 2008-04-05 20:03 zitsing 阅读(105) | 评论 (0)编辑
    忽然想到以后我的处境,也许是一段非常艰难的时期。我思考我应该怎样面对?我想我应该快乐的面对。不能自卑,不能惆怅,不能为了失败而流泪,我要乐观的面对这个世界。再过一个月我将离开生活了16年的校园生活。心里好担心。
posted @ 2008-04-05 10:20 zitsing 阅读(84) | 评论 (2)编辑