收藏 分享(赏)

delphi开发文档.doc

上传人:11xg27ws 文档编号:7806429 上传时间:2019-05-26 格式:DOC 页数:16 大小:84.50KB
下载 相关 举报
delphi开发文档.doc_第1页
第1页 / 共16页
delphi开发文档.doc_第2页
第2页 / 共16页
delphi开发文档.doc_第3页
第3页 / 共16页
delphi开发文档.doc_第4页
第4页 / 共16页
delphi开发文档.doc_第5页
第5页 / 共16页
点击查看更多>>
资源描述

1、1开发文档一ADO 的动态数据库连接procedure TDataModule2.DataModuleCreate(Sender: TObject);beginADOConnection1.ConnectionString :=Provider=Microsoft.Jet.OLEDB.4.0;Password=“;Data Source=+getcurrentdir+house.mdb;Persist Security Info=False;ADOConnection1.Open();end;其中 getcurrentdir 为获得当前路径的函数 function GetCurrentDir:

2、 string;.二ADOQuery 的动态创建和释放1先定义一个 TADOQuery 的变量 Query;创建 Query :Query :=TADOQuery(self);3连接数据源 :Query.connection :=ADOConnection;4Query 的 SQL 的清空 :Query.SQL.Clear;5Query 的 SQL 语言的赋予: Query.SQL.Text 或者 Query.SQL.Add();6Query 的参数赋值:Query.Parameters.ParamByName().Vale;7Query 的 SQL 语句的执行: Query.Open 或者

3、Query.ExecSQL;8Query 的关闭:Query.Close;9Query 的释放:Query.Free;function TDataModule2.CheckUserName(username :string):boolean;varQuery :TADOQuery; /核查用户名beginQuery :=TADOQuery.Create(self);2Query.Connection :=ADOConnection1;Query.SQL.Text :=select * from 用户表 where 用户名 =:name;Query.Parameters.ParamByName(

4、name).Value :=username;Query.Open ;if Query.RecordCount =1 thenresult :=trueelseresult :=false;Query.Close ;Query.Free ;end;/密码的核查function TDataModule2.CheckUserPassword(username,userpassword:string):boolean;varQuery :TADOQuery;beginQuery :=TADOQuery.Create(self);Query.Connection :=ADOConnection1;Qu

5、ery.SQL.Text :=select * from 用户表 where 用户名 =:name;Query.Parameters.ParamByName(name).Value :=username;Query.Open ;if Query.fieldByName(密码).Value =userpassword thenresult :=trueelseresult :=false;Query.Close;Query.Free ;end; /添加用户function TDataModule2.AddUser(username,userpassword,jibie :string):bool

6、ean;varQuery :TADOQuery;beginQuery :=TADOQuery.Create(self);Query.Connection :=ADOConnection1;Query.SQL.Clear ;Query.SQL.Text :=insert into 用户表 (用户名,密码,级别) values 3(:name,:password,:jb);Query.Parameters.ParamByName(name).Value :=username;Query.Parameters.ParamByName(password).Value :=userpassword;Qu

7、ery.Parameters.ParamByName(jb).Value :=jibie;Query.Prepared ;tryADOConnection1.BeginTrans;Query.ExecSQL ;ADOConnection1.CommitTrans;result :=true;exceptADOConnection1.RollBackTrans;result :=false;end;Query.Close ;Query.Free ;end;/删除用户function TDataModule2.DeleteUser(username,userpassword :string):bo

8、olean;varQuery :TADOQuery;beginQuery :=TADOQuery.Create(self);Query.Connection :=ADOConnection1;Query.SQL.Clear ;Query.SQL.Text :=delete from 用户表 where 用户名=:name and 密码=:password;Query.Parameters.ParamByName(name).Value :=username;Query.Parameters.ParamByName(password).Value :=userpassword;Query.Pre

9、pared ;Query.ExecSQL ;tryADOConnection1.BeginTrans ;ADOConnection1.CommitTrans ;result :=true;exceptADOConnection1.RollbackTrans;result :=false;4end;Query.Close ;Query.Free ;end;/修改用户密码function TDataModule2.EditUserPassword(username,oldpassword,newpassword :string):boolean;varQuery :TADOQuery;beginQ

10、uery :=TADOQuery.Create(self);Query.Connection :=ADOConnection1;Query.SQL.Clear ;Query.SQL.Text :=update 用户表 set 密码=:newword where 用户名=:name and 密码=:oldword;Query.Parameters.ParamByName(newword).Value :=newpassword;Query.Parameters.ParamByName(name).Value :=username;Query.Parameters.ParamByName(oldw

11、ord).Value :=oldpassword;Query.Prepared ;tryADOConnection1.BeginTrans;Query.ExecSQL ;ADOConnection1.CommitTrans;result :=true;exceptADOConnection1.RollBackTrans;result :=false;end;Query.Close ;Query.Free ;end;end.三 ADOConnection 的事务在 ADOQuery 执行中的使用使用 try.Except.End 语句来控制执行结构;ADOConnection 事务的开始:ADO

12、Connection.BeginTrans;5ADOQuery 的执行;ADOConnection 事务的提交:ADOConnection.CommitTrans;ADOConnection 事务的回滚:ADOConnection.RollBackTrans;tryADOConnection1.BeginTrans;/事务的开始Query.ExecSQL ; 执行ADOConnection1.CommitTrans; 事务的提交result :=true;exceptADOConnection1.RollBackTrans;失败的话,事务回滚result :=false;end;四 ADOQu

13、ery 一些对象、方法和属性的使用 ADOQuery.Parameters.ParamByName(Const value :WideString).Value 用来给 SQL 语句中的变量参数赋值; ADOQuery.FieldByName(Const FieldName :String).as*,用来获得当前ADOQuery 所指的记录的字段值,其中* 为字段的数据类型; ADOQuery.Prepared 是用来将 SQL 语句所用到的变量值传进去,即做好执行的准备。 ADOQuery.Append 用来新增一个空白记录; ADOQuery.Post 用来写将数据写入到数据库文件; AD

14、OQuery.FieldValuesconst FieldName :string用来获得当前记录的字段值,其类型为 Variant; ADOQuery.IsEmpty 判断记录是否为空;五 常用的 SQL 语句6 Select Field1,Field2,. From Table where express; Update Table Set Field? =Value,Field?=Value where express; Insert into Table (Field?,Field?,) value (A,B,); Delete From Table Where express;六 S

15、QL 参数的几种传递ADOQuery1.SQL.Text :=select * from 来访表 where 来访日期=:A and 来访时间=结束时间;ADOQuery1.Parameters.ParamByName(A).Value :=DateToStr(date);ADOQuery1.SQL.Add(select * from 学生信息表 where 学号=+Trim(Edit1.Text) +); 其中两个单引号代语句中的一个单引号。七 窗体的动态创建和释放 窗体创 Application.CreateForm(InstanceClass:TComponentClass,var Re

16、ference); 窗体的显示:Form.Show 或者 Form.ShowModal; 窗体的释放:Form.Free;Application.CreateForm(TForm14,Form14);Form14.ShowModal;Form14.Free ;八 编程经验和技巧点滴7 Query.SQL.Text :=update 寝室表 set 实住人数=( 实住人数+1),状态=:A where 寝室号=:B; 此语句中设当前一个字段的值为现在该字段的值加一个值构成一个新的值,这一定要打上个() ,否则编译能通过,但不能执行得到正确的结果。 控制读取的键盘数值来做文本框等的限制输入:pro

17、cedure TForm8.Edit5KeyPress(Sender: TObject; var Key: Char);beginif not(Key in 09,#8) thenbeginMessageBox(handle,只能输入数字,警告,MB_OK+MB_ICONWARNING);Key :=#0;end; end; 常用的几种类型转换:DateToStr(DateTimePicker1.Date) ;StrToInt(trim(Edit2.Text);IntToStr( );StrToDateTimeDef(const S: string; const Default: TDateT

18、ime):StrToCurr(const S: string): Currency;StrToDate(const S: string): TDateTime;StrToDateTime(const S: string): TDateTime;8StrToFloat(const S: string): Extended;StrToInt64(const S: string): Int64;StrToTime(const S: string): TDateTime;function StrToCurr(const S: string): Currency;FloatToCurr(const Va

19、lue: Extended): Currency;FloatToDateTime(const Value: Extended): TDateTime;FloatToStr(Value: Extended): string;TimeToStr(Time: TDateTime): string; ADOQuery 和 DBGrid 绑定时,DBGrid 中的记录的改变会带动ADOQuery 中记录的变动,它们的变动是同步的,此时读取 DBGrid中的当前数据时,可转化为读取 ADOQuery 中的当前数据。 ShowMessage(const Msg :string)和 MessageBox(hW

20、and :HWND,IpText :PAsichar,IpCation :PAsichar, uType :Cardinal);九 数据库的备份与还原function ExtractFilePath(const FileName: string): string;/ Returns the drive and directory portions of a file name.function FileExists(const FileName: string): Boolean;/Tests if a specified(:具体指定) file exists.9function Delete

21、File(const FileName: string): Boolean;/Deletes a file from disk.function RenameFile(const OldName, NewName: string): Boolean;/Changes a file name.procedure Sleep(milliseconds: Cardinal);/Delay program execution for a specified number of microseconds. 数据库的备份procedure TForm1.BitBtn2Click(Sender: TObje

22、ct);vardbname :string;beginif DataModule2.ADOConnection1.Connected=true thenDataModule2.ADOConnection1.Connected :=false;dbname:=ExtractFilePath(Application.ExeName )+permis.bak;if FileExists(dbname) then DeleteFile(dbname);CopyFile(Pchar(house.mdb),Pchar(dbname),true);MessageBox(handle,数据库备份成功!,提示,

23、MB_OK+MB_ICONINFORMATION);if DataModule2.ADOConnection1.Connected=false thenDataModule2.ADOConnection1.Connected :=true;end; 数据库的还原procedure TForm1.BitBtn3Click(Sender: TObject);vardbname,dbbname :string;begin10if MessageBox(self.handle,确认要还原数据么?,提示,MB_YESNO+MB_ICONINFORMATION)=IDYES thenbeginif Dat

24、aModule2.ADOConnection1.Connected =true thenDataModule2.ADOConnection1.Connected :=false;dbname:=ExtractFilePath(Application.ExeName )+house.mdb;dbbname:=ExtractFilePath(Application.ExeName )+permis.bak;if not FileExists(dbbname) thenMessageBox(self.Handle ,没有备份的数据库 ,不能还原!, 提示,MB_OK+MB_ICONINFORMATI

25、ON)elsebeginCopyFile(Pchar(dbbname),Pchar(dbname),true);MessageBox(handle,数据库还原成功!,提示,MB_OK+MB_ICONINFORMATION);end;if DataModule2.ADOConnection1.Connected =false thenDataModule2.ADOConnection1.Connected :=true;end;end;十 Access 数据库的压缩注:CreateOleObject(const ClassName)是个 API,要在单元中申明 uses comobj;才能通过编

26、译。procedure Sleep(milliseconds: Cardinal);/Delay program execution for a specified number of microseconds.procedure TForm1.BitBtn1Click(Sender: TObject);vardbname :string;beginif DataModule2.ADOConnection1.Connected =true thenDataModule2.ADOConnection1.Connected :=false;Sleep(500);11dbname :=Extract

27、FilePath(Application.ExeName )+house.mdb;CompactAccess(dbname);MessageBox(handle,数据库压缩成功!,提示,MB_Ok+MB_ICONINFORMATION);if DataModule2.ADOConnection1.Connected =false thenDataModule2.ADOConnection1.Connected :=true;end;procedure TForm1.CompactAccess(dbName :string;JetId:string=4.0);varAVariant :Varia

28、nt;beginif FileExists(dbName+.tmp) then DeleteFile(DbName+.tmp);AVariant := CreateOleObject(JRO.JetEngine);AVariant.CompactDataBase(Provider=Microsoft.Jet.OLEDB.+JetId+;Data Source=+dbName,Provider=Microsoft.Jet.OLEDB.+JetId+;Data Source=+dbName+.tmp);DeleteFile(DbName);ReNameFile(dbName+.tmp,DbName

29、);end;十一Access 数据库的加密为了给 Access 数据库加密,首先关闭所使用的数据库程序,然后在 Access 中以独占方式打开数据库,通过菜单工具安全设置数据库密码为数据库设置密码。在 Delphi 中,双击 ADOConnection 控件,然后单击 Build.按键,在“提供者”页中选择“Microsoft Jet 4.0 OLE DB Provider”,然后单击下一步,在“连接”页中选择要连接的Access 数据库的路径和数据库的文件名,这时单击“测试连接”按钮时,出现“初始化提供者时发生错误,测试连接失败,密码无效“的错误提示。此时应该单击”所有“页,然后双击”Jet

30、 OLE DB :Database Password”出现对话框,填入密码后,选择“连接”页中的“测试连接”按钮。如果出现“测试连接成功”的对话框则说明设置成功!12procedure TDataModule2.DataModuleCreate(Sender: TObject);beginADOConnection1.ConnectionString :=Provider=Microsoft.Jet.OLEDB.4.0;Data Source=+getcurrentdir+house.mdb;Persist Security Info=True;Jet OLEDB:Database Passw

31、ord=hjp;ADOConnection1.Open();end;十二ListView 的使用procedure TForm1.BitBtn1Click(Sender: TObject);beginListView1.Items.Clear ;ADOQuery1.Close ;ADOQuery1.SQL.Clear ;ADOQuery1.SQL.Text :=select * from 学生信息表;ADOQuery1.Open;while not ADOQuery1.Eof dobeginwith ListView1.Items.Add dobegincaption :=ADOQuery1.

32、fieldByName(学号).AsString ;13SubItems.Add(ADOQuery1.fieldByName(姓名).AsString) ;SubItems.Add(ADOQuery1.fieldByName(性别).AsString) ;SubItems.Add(ADOQuery1.fieldByName(系别).AsString) ;SubItems.Add(ADOQuery1.fieldByName(班级).AsString) ;end;ADOQuery1.Next;end;end;十三动态创建控件在动态创建的单元的 uses 中要加入要创建的控件所在单元。创建过程中所要

33、申明的变量最好在类的公有或私有域中申明,在 var 后申明的变量将占用系统堆栈空间,而在类的私有或公有域中申明的变量则只占用 windows 全局堆的空间,所谓全局堆是所有未占用的内存的集合。相对于全局堆,系统的堆栈要小,更为宝贵。而一般要动态创建控件的程序,动态创建的数量往往是比较多的,这就要消耗大量内存,所以从应用程序的性能出发,动态创建控件的变量最好在类中。CPageControl :=TPageControl.Create(self); /创建CPageControl.Parent :=Form1;/要指定其父窗体,否则它是游离的CPageControl.CapTion :=fdds;

34、CPageControl1.Name :=dfdsf;/必须给其命名14十四窗体创建和显示的一些说明 启动时创建窗体和运行时创建窗体的区别:窗体启动时创建是指这个窗体启动时由工程文件自动将这个窗体的代码部分加载到内存去。将一个窗体设为启动时创建往往是因为这个窗体使用的频率高,所以,为了加快使用这个窗体的速度,就在应用程序的运行过程中,让这个窗体一直加载在内存。而运行时创建窗体则是恰恰相反,窗体设为运行时创建往往是因为使用频率不高,其使用的速度也可以相应的慢一些,所以,这种窗体的使用方法是到使用时才将这个窗体加载到内存中去,然后使用它显示,最后,应该释放窗体所占用的资源。 在 Delphi 和

35、C+Builder 中窗体分自动创建(Auto-create)窗体和可用(Aviailable)窗体。不管使用与不使用,自动创建窗体是应用程序一启动就创建的窗体,即使释放了对窗体的引用,也不会关闭此窗体,只有等到应用程序退出时,才将它们销毁。而可用窗体只有在要使用时才创建,在不使用时即可销毁它们。 Show 和 ShowModal:Show 方法是来显示一个非模态(Modeless) 窗体,即把窗体的 Visible 属性设置为 true,并把窗体移到屏幕最前面。ShowModal 方法是来显示一个模态(Model)窗体。当一个窗体用模态状态显示时,只有把此窗体关闭后,应用程序才能执行其它部分

36、的代码。 窗体的 KeyPreview 属性: KeyPreview 属性规定了窗体是否先于活15动组件获取键盘事件。当 KeyPreview 属性设为 false 时,拥有输入焦点的控件将接收所有的键盘事件。当 KeyPreview 属性设为true 时,先由窗体接收键盘事件,后才是拥有输入焦点的控件接收键盘事件。procedure TForm1.FormKeyPress(Sender: TObject; var Key: Char);beginKey :=UpCase(Key);/将键盘输入的键转为大写的,此时获得end; /焦点的 Edit1.text 将接收和是大写的字符了十五命令按钮

37、的 ModalResult 属性该属性决定此按钮是否或如何关闭它的父窗体(此窗体必须是模态窗体) 。通过设置命令按钮的 ModalResult 属性来关闭一个模态窗体是一个简捷的方法。当一个按钮被单击后,该组件的父窗体的ModalResult 属性被设置为此按键的 ModalResult 属性的值,例如一个对话框中有一个“确定”按钮和一个“取消”按钮,我们只需要把它们的 ModalResult 属性分别设置为 mrOK 和 MrCancel。在运行期间,单击“确定”按钮就会把对话框的 ModalResult 属性设置为 mrOK;单击“取消”按钮就会把对话的 ModalResult 属性设置为 mrCancel。除非要进一步的处理,否则根本无须为这两个按钮编写 OnClick 事件响应函数的代码。16十六值得注意的一点当一个可聚集的控件的 Enable 设为假时,它便不能再接受的焦点了,比如:Edit.Enable :=false; Edit.SetFourse 便会发生错误!

展开阅读全文
相关资源
猜你喜欢
相关搜索
资源标签

当前位置:首页 > 企业管理 > 管理学资料

本站链接:文库   一言   我酷   合作


客服QQ:2549714901微博号:道客多多官方知乎号:道客多多

经营许可证编号: 粤ICP备2021046453号世界地图

道客多多©版权所有2020-2025营业执照举报