怎样用DELPHI程序建数据库表的结构?
建议参考以下资料:DELPHI中操作ACCESS数据库(建立。mdb文件,压缩数据库)以下代码在WIN2K,D6,MDAC2。6下测试通过,编译好的程序在WIN98第二版无ACCESS环境下运行成功。 //在之前uses ComObj,ActiveX//声明连接字符串ConstSConnectionString = 'Provider=Microsoft。Jet。OLEDB。4。0;Data Source=%s;' 'Jet OLEDB:Database Password=%s;';//==================================================...全部
建议参考以下资料:DELPHI中操作ACCESS数据库(建立。mdb文件,压缩数据库)以下代码在WIN2K,D6,MDAC2。6下测试通过,编译好的程序在WIN98第二版无ACCESS环境下运行成功。
//在之前uses ComObj,ActiveX//声明连接字符串ConstSConnectionString = 'Provider=Microsoft。Jet。OLEDB。4。0;Data Source=%s;' 'Jet OLEDB:Database Password=%s;';//=============================================================================// Procedure: GetTempPathFileName// Author : ysai// Date : 2003-01-27// Arguments: (None)// Result : string//=============================================================================function GetTempPathFileName():string;//取得临时文件名varSPath,SFile:array [0。
。254] of char;beginGetTempPath(254,SPath);GetTempFileName(SPath,'~SM',0,SFile);result:=SFile;DeleteFile(result);end;//=============================================================================// Procedure: CreateAccessFile// Author : ysai// Date : 2003-01-27// Arguments: FileName:String;PassWord:string=''// Result : boolean//=============================================================================function CreateAccessFile(FileName:String;PassWord:string=''):boolean;//建立Access文件,如果文件存在则失败varSTempFileName:string;vCatalog:OleVariant;beginSTempFileName:=GetTempPathFileName;try vCatalog:=CreateOleObject('ADOX。
Catalog'); vCatalog。Create(format(SConnectionString,[STempFileName,PassWord])); result:=CopyFile(PChar(STempFileName),PChar(FileName),True); DeleteFile(STempFileName);except result:=false;end;end;//=============================================================================// Procedure: CompactDatabase// Author : ysai// Date : 2003-01-27// Arguments: AFileName,APassWord:string// Result : boolean//=============================================================================function CompactDatabase(AFileName,APassWord:string):boolean;//压缩与修复数据库,覆盖源文件varSTempFileName:string;vJE:OleVariant;beginSTempFileName:=GetTempPathFileName;try vJE:=CreateOleObject('JRO。
JetEngine'); vJE。CompactDatabase(format(SConnectionString,[AFileName,APassWord]), format(SConnectionString,[STempFileName,APassWord])); result:=CopyFile(PChar(STempFileName),PChar(AFileName),false); DeleteFile(STempFileName);except result:=false;end;end;2。
ACCESS中使用SQL语句应注意的地方及几点技巧以下SQL语句在ACCESS XP的查询中测试通过建表: Create Table Tab1 ( ID Counter, Name string, Age integer, [Date] DateTime);技巧: 自增字段用 Counter 声明。
字段名为关键字的字段用方括号[]括起来,数字作为字段名也可行。建立索引: 下面的语句在Tab1的Date列上建立可重复索引 Create Index iDate ON Tab1 ([Date]); 完成后ACCESS中字段Date索引属性显示为 - 有(有重复)。
下面的语句在Tab1的Name列上建立不可重复索引 Create Unique Index iName ON Tab1 (Name); 完成后ACCESS中字段Name索引属性显示为 - 有(无重复)。
下面的语句删除刚才建立的两个索引 Drop Index iDate ON Tab1; Drop Index iName ON Tab1;ACCESS与SQLSERVER中的UPDATE语句对比: SQLSERVER中更新多表的UPDATE语句: UPDATE Tab1 SET a。
Name = b。Name FROM Tab1 a,Tab2 b WHERE a。ID = b。ID; 同样功能的SQL语句在ACCESS中应该是 UPDATE Tab1 a,Tab2 b SET a。
Name = b。Name WHERE a。ID = b。ID;即:ACCESS中的UPDATE语句没有FROM子句,所有引用的表都列在UPDATE关键字后。上例中如果Tab2可以不是一个表,而是一个查询,例: UPDATE Tab1 a,(Select ID,Name From Tab2) b SET a。
Name = b。Name WHERE a。ID = b。ID;访问多个不同的ACCESS数据库-在SQL中使用In子句: Select a。*,b。* From Tab1 a,Tab2 b In 'db2。
mdb' Where a。ID=b。ID; 上面的SQL语句查询出当前数据库中Tab1和db2。mdb(当前文件夹中)中Tab2以ID为关联的所有记录。缺点-外部数据库不能带密码。在ACCESS中访问其它ODBC数据源下例在ACCESS中查询SQLSERVER中的数据 SELECT * FROM Tab1 IN [ODBC] [ODBC;Driver=SQL Server;UID=sa;PWD=;Server=127。
0。0。1;DataBase=Demo;]外部数据源连接属性的完整参数是: [ODBC;DRIVER=driver;SERVER=server;DATABASE=database;UID=user;PWD=password;]其中的DRIVER=driver可以在注册表中的 HKEY_LOCAL_MACHINESOFTWAREODBCODBCINST。
INI中找到ACCESS支持子查询ACCESS支持外连接,但不包括完整外部联接,如支持 LEFT JOIN 或 RIGHT JOIN但不支持 FULL OUTER JOIN 或 FULL JOINACCESS中的日期查询注意:ACCESS中的日期时间分隔符是#而不是引号 Select * From Tab1 Where [Date]>#2002-1-1#;在DELPHI中我这样用 SQL。
Add(Format( 'Select * From Tab1 Where [Date]>#%s#;', [DateToStr(Date)]));ACCESS中的字符串可以用双引号分隔,但SQLSERVER不认,所以为了迁移方便和兼容,建议用单引号作为字符串分隔符。
收起