易截截图软件、单文件、免安装、纯绿色、仅160KB
热门标签: c c# c++ asp asp.net linux php jsp java vb Python Ruby mysql sql access Sqlite sqlserver delphi javascript Oracle ajax wap mssql html css flash flex dreamweaver xml
 最新文章 : delphi

Oracle性能优化与Delphi代码

Oracle性能优化与Delphi代码

刚学了点oracle方面的知识,感觉以前写代码只凭喜好写,完全没有深究缘由,导致在内行人看来,写的都是垃圾代码,现在就把学到的一些东西写出来,也算是给刚入门的朋友一点帮助吧。
以前,写数据库访问代码,感觉很简单,不就是sql语句嘛,所以什么语句都是这样写:
A:
 
qry1.Close;
  qry1.SQL.Text := edt1.Text ;
  qry1.Open
;
感觉挺好,语句自己拼,拼好了,直接执行。
还有另外一种写法:
B:
  qry1.Close;
  qry1.SQL.Text := edt1.Text
;
  qry1.Parameters.ParamByName('vvv').Value := edt2.Text ;
 
qry1.Open
;
感觉这样写也是达到一样的结果,而用参数的方法,感觉很麻烦,多余,edt1.Text里变量还都得写成参数,所以从来不这样写,似乎也看不出和A方法有什么区别,只是更多了些麻烦。
最近学了点oracle性能优化方面的知识,知道了oracle的共享池,及其对性能的影响。共享池保存的是最近使用的sql语句,如果有相同的sql语句在共享池中,就不会再做分析、生成执行计划,效率就会提高很多,但是select
* from tableA where aa='a'和sel ......

Oracle性能优化与Delphi代码

Oracle性能优化与Delphi代码

刚学了点oracle方面的知识,感觉以前写代码只凭喜好写,完全没有深究缘由,导致在内行人看来,写的都是垃圾代码,现在就把学到的一些东西写出来,也算是给刚入门的朋友一点帮助吧。
以前,写数据库访问代码,感觉很简单,不就是sql语句嘛,所以什么语句都是这样写:
A:
 
qry1.Close;
  qry1.SQL.Text := edt1.Text ;
  qry1.Open
;
感觉挺好,语句自己拼,拼好了,直接执行。
还有另外一种写法:
B:
  qry1.Close;
  qry1.SQL.Text := edt1.Text
;
  qry1.Parameters.ParamByName('vvv').Value := edt2.Text ;
 
qry1.Open
;
感觉这样写也是达到一样的结果,而用参数的方法,感觉很麻烦,多余,edt1.Text里变量还都得写成参数,所以从来不这样写,似乎也看不出和A方法有什么区别,只是更多了些麻烦。
最近学了点oracle性能优化方面的知识,知道了oracle的共享池,及其对性能的影响。共享池保存的是最近使用的sql语句,如果有相同的sql语句在共享池中,就不会再做分析、生成执行计划,效率就会提高很多,但是select
* from tableA where aa='a'和sel ......

Delphi时间和Java时间的转换类。

这样一来,Delphi使用Webservice和JAVA通讯时,可以将DELPHI的时间直接传给JAVA。从而免去了时间字符串parse之间的消耗,提高的程序效率。
Delphi时间实质就是double类型,整数部分表示天,小数部分表示当天时间,每毫秒为1/86400000。考虑到时区的转换后,JAVA和DELPHI时间之间的转换类如下:
import java.util.Calendar;
import java.util.Date;
/**
 *
 * Java时间和Delphi时间转换类
 * @author Jim Wu
 *
 */
public class UtilDelphiTime {
  private static Calendar calendar = Calendar.getInstance();
  private static int gmtOffset = calendar.get(Calendar.ZONE_OFFSET) + calendar.get(Calendar.DST_OFFSET);
  public static double JTime2DTime(Date javaTime){
    long sysMillis = javaTime.getTime() + gmtOffset;
    return sysMillis / 86400000 + 25569 + ((double) (sysMillis % 86400000) / 86400000);
 }
  public static Date JTime2DTime(double delphiTime){
    long timeLong = (long)(delphiTime * 86400000L) - (255 ......

Delphi时间和Java时间的转换类。

这样一来,Delphi使用Webservice和JAVA通讯时,可以将DELPHI的时间直接传给JAVA。从而免去了时间字符串parse之间的消耗,提高的程序效率。
Delphi时间实质就是double类型,整数部分表示天,小数部分表示当天时间,每毫秒为1/86400000。考虑到时区的转换后,JAVA和DELPHI时间之间的转换类如下:
import java.util.Calendar;
import java.util.Date;
/**
 *
 * Java时间和Delphi时间转换类
 * @author Jim Wu
 *
 */
public class UtilDelphiTime {
  private static Calendar calendar = Calendar.getInstance();
  private static int gmtOffset = calendar.get(Calendar.ZONE_OFFSET) + calendar.get(Calendar.DST_OFFSET);
  public static double JTime2DTime(Date javaTime){
    long sysMillis = javaTime.getTime() + gmtOffset;
    return sysMillis / 86400000 + 25569 + ((double) (sysMillis % 86400000) / 86400000);
 }
  public static Date JTime2DTime(double delphiTime){
    long timeLong = (long)(delphiTime * 86400000L) - (255 ......

DELPHI常用快捷键(转)

.pas ---- pascal的缩写, 单元原始程式档( unit source files )
.dpr ---- 专案档 ( project files )
.dpk ---- 包裹原始程式档/组件包 ( package source files )
.dfm ---- 表单档 (记录form的内容,除去这个内容就等于删除了form这个表单)
.dcu ---- 是编译好的单元文件.若只有一个dcu文件,则不能看到源代码.
1.代码模板(Code Templates): Ctrl+J           ------可通过这种方式先取你所需的代码
2.查询说明文件(Help):F1 
3.代码补缺(Code Completion):Ctrl+Space       ------自动显示物件的属性及事件,或在输入“.”后直接出现
4.代码参数(Code Parameters):Ctrl+Shift+Space
5. 重复寻找( Search Again ) : F3
6.物件检视器(Object Inspector): F11      -----物件的属性,事件  
7.  切换表单(Form)/程式编辑区(Unit) : F12
8. 物件关联检视器(Object TreeView): Alt + Shlft + F11  展示各元件,可选取、删除元件,拖元件改变其Parent
9. 开启专案档(Open Project& ......

Delphi 7 的一个奇怪的Bug

近来发现一个Delphi莫名其妙的bug,当使用SetOptionalParam时,不能使用一连串数字的字符串,如'101',注意,是带引号的。在SaveToFile时,就会出现'Invalid field type'的异常,真是百思不得其解!连'001'这种串也不行,去掉引号,直接按数字赋值,则正常。
procedure TForm1.Button1Click(Sender: TObject);
var
  cds:TClientDataSet;
begin
  cds:=TClientDataSet.Create(nil);
  with cds do
  begin
    FieldDefs.Add('f1',ftString,50);
    CreateDataSet;
  end;
  cds.SetOptionalParam('ppppp','101');
  cds.SaveToFile('c:\sss.dat'); //出现异常:Invalid field type!,把101改为abc,正常
  cds.Free;
end; ......

Delphi 7使用ADOConnection访问MySQL

今天心血来潮在自己的电脑上安装了mysql-5.1.41-win32和mysql-connector-odbc-5.1.6-win32。以前,我曾经尝试使用DELPHI6去联接MYSQL但是在网上找很多资料都不很好用;今天突然也想起这个问题就干起回来了。
  1. 建立数据库
    use mysql;
    drop database myDB;
    create database myDB;
    use myDB;
    CREATE TABLE Table_01 (
     FLD_01 int not null auto_increment,
     FLD_02 varchar(50) ,
     FLD_03 int NOT NULL DEFAULT 0,
     key(FLD_01)
    );
  2. 使用ODBC建立一个MYSQL的DSN,名称(MYSQL_DB)什么都可以。
  3. 在FORM中增加了Adoconnection,AdoQuery,DataSource和DBGrid.
    AdoConnection.connectionstring := 'MYSQL_DB';
    AdoQuery.sql.text :='select * from Table_01';
  4. 全部ACTIVE :=TRUE;
搞好。
......

DELPHI 2007中使用ADO调用ORACLE有返回游标的存储过程


ADO 使用 ORACLE provider FOR  OLE DB 驱动时
调用存储过程需要返回游标时,在连接字符串中增加
PLSQLRSet=1 参数。
存储过程中的游标不需要付初始值
 
如:
  sp1: TADOStoredProc;
 
 
 sp1.Close;
 sp1.ProcedureName := 'pkg_ScanList_By_JobNo.sp_GetScanList';  //存储过程名
 sp1.Parameters.Clear;
 sp1.Parameters.CreateParameter('S_JobNo',ftstring,pdInput,20,'2191544508');  //输入类型的参数
 sp1.open;
......

DELPHI 2007中使用ADO调用ORACLE有返回游标的存储过程


ADO 使用 ORACLE provider FOR  OLE DB 驱动时
调用存储过程需要返回游标时,在连接字符串中增加
PLSQLRSet=1 参数。
存储过程中的游标不需要付初始值
 
如:
  sp1: TADOStoredProc;
 
 
 sp1.Close;
 sp1.ProcedureName := 'pkg_ScanList_By_JobNo.sp_GetScanList';  //存储过程名
 sp1.Parameters.Clear;
 sp1.Parameters.CreateParameter('S_JobNo',ftstring,pdInput,20,'2191544508');  //输入类型的参数
 sp1.open;
......
总记录数:644; 总页数:108; 每页6 条; 首页 上一页 [48] [49] [50] [51] 52 [53] [54] [55] [56] [57]  下一页 尾页
© 2009 ej38.com All Rights Reserved. 关于E健网联系我们 | 站点地图 | 赣ICP备09004571号