⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 delphi数据库应用开发读书笔记.txt

📁 是一部详细介绍了DELPHI的经典著作
💻 TXT
字号:
一 动态建表
procedure TForm1.Button1Click(Sender:TObject);
begin
with Table1 do
begin
 active:=false;
 DatabaseName:='DOCTOR';//数据库名称
 TableType:=ttParadox;//数据库类型
 TableName:='DOCTORINF22';//数据库中的表名
 if not Table1.Exists then begin //数据表不存在,而进行如下操作
   with FieldDefs do begin
     clear;
     with AddFieldDef do begin//动态指定字段列表
       Name:='姓名';//字段名
       DataType:=ftString;
       Required:=true;
       Size:=10;
     end;
     with AddFieldDef do begin
       Name:='年龄';
       DataType:=ftInteger;
     end;
     //建立字段,利用AddFieldDef方法返回一个新的TFieldDef对象,然后设置这个新对象的各种属性
     with AddfieldDef do begin
       Name:='职称';
       DataType:=ftString;
       Required:=true;
       size:=10;
     end;
     with IndexDefs do begin
       Clear;
       with AddIndexDef do begin
         name:='MYINDEX';
	 Fields:='姓名';
	 Options:=[ixPrimary];
	 end;
       end;//建立索引
     end;
     CreateTable;
  end;
    //在表中添加记录
    table1.open;
    table1.edit;
    table1.fieldbyname('姓名').asstring:='李飞';
    table1.fieldbyname('年龄').asinteger:=22;
    table1.fieldbyname('职称').asstring:='医师';
    table1.append;
    table1.edit;
    table1.fieldbyname('姓名').asstring:='刘延';
    table1.fieldbyname('年龄').asinteger:=22;
    table1.fieldbyname('职称').asstring:='医师';
    dbgrid1.Datasource:=datasource1;
    table1.acrive:=true;
  end;
  -------------------------------------------------------------------
二  利用Tquery实行带参数的语句查询
procedure TForm1.Button1Click(Sender:Tobject);
begin
if edit1.text='' then
 showmessage('必须输入参数,才能进行查找') //此处不能有分号
 else
begin
query1.sql.clear;
query1.sql.add('select custno,company,city,state from customer.db');
query1.sql.add('where country=(:countryname)');
query1.params[0].asstring:=edit1.text;
query1.execsql;
query1.active:=true;
edit1.text:='';
end;
end;
--------------------------------------------------------------------
三 利用TStoreProce组件
指定StoredProceName属性指定了服务器端的存储过程的名字,然后可以使用下面的确良语句执行存储过程:
StoredPrdcx.paras[0].asstring:=edit1.text;
StoredProcx.Prepare;
StoredProcx.ExecProc;
label1.caption:=StoredProcx.parambyname('line1').asstring;//得到存储过程中的传出参数的值
--------------------------------------------------------------------
四 访问有口令保护的Paradox和dBASE表
var 
mypasswrd:string;
begin
mypasswrd:inputbox('请输入密码:','password:','');
Session.addpassword(mypasswrd);//密码直接添加
try
table1.open;
except 
showmessage('不能打开数据库');
application.terminate;
end;
--------------------------------------------------------------------
五delphi的查询函数
1 locate函数
function locate(const keyfields:string; const keyvalues:variant;options:TLocateOptions;)
keyfields是要查询找的字段
keyvalue是要查找的字段的取值
options是查找时的条件,其中loCaseInsensitive表示大小写不敏感,即不区分大小写;loParialKey部分匹配
例:locate('age','21',lopartialkey);
   locate('name;age',vararrayof['rose','25'],loParialKey);
2 lookup函数
例: 
var
lookupans:variant;
lookupans:=table1.lookup('name','ChenShangDa','age');
查找ChenShangDa的Age
3 setkey与gotokey
例: 
table1.setkey;
table1.fieldbyname('name').asstring:='tom';
table1.gotokey;
4 findkey方法
例:
table1.findkey(['jerry']);
5 setkey与gotonearest
例:
table1.setkey;
table1.fieldbyname('name').asstring:='rose';
table1.gotonearest;
--------------------------------------------------------------------
六 简单的建表方法
table1.fielddefs.add('id',ftinteger,0,true);
table1.fielddefs.add('name',ftstring,0,true);
table1.indexdefs.add('myindex','id',[ixprimary,ixunique]);
--------------------------------------------------------------------
七 rave报表的设计方法
1在窗体中放置table控件,并设置好active,databasename,tablename属性
2在rave标签页中取Trvdatasetconnection放置在窗体中,并把dataset属性设置为table
3选择tools/rave designer菜单项,就可以进入报表设置器.
4选择file/new data object下的菜单,就可以进行设置
  direct data view-->rvdatasetconnect-->save as即可
5回到delphi的窗体,加入rave标签页下的Trvproject组件属性Projectfile,选择刚才保存的文件,然后在窗体上放一个button按钮,并写入click事件,rvproject1.execute;即可进行打印预览
--------------------------------------------------------------------
八 得到可用的数据库别名的函数
function TAdHocQueryDemo.getdatabasenames:olevariant;
var 
 i:integer;
 dbnames:Tstring;
begin
dbnames:Tstringlist.create;
try
session1.getdatabasenames(dbnames);
result:=vararraycreate([0,dbnames.count -1],varolestr);
for i:=0 to dbnames.count -1 do 
  result[i]:=dbnames[i];
finally
  dbnames.free;
end;
end;
--------------------------------------------------------------------





⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -