对于BDE会话期对象来说 BDE别名特别重要 许多方法都需要传递一个数据库的别名作为参数 Tsession提供了管理BDE别名的功能 但是作者往往等到要发布程序时才发现 你的程序由于找不到别名而无法运行 必须在一台已经装了BDE管理程序的机上才能用 你一定非常失望 不要紧 只要在程序中加入以下语句 你的程序就又可以执行 AddAlias用于为Paradox dBase或文本创建别名 不需要连接参数 只需指定一个路径和默认的驱动程序 AddStandardAlias函数则需要传递三个参数 Name参数用于指定名称 Driver参数用于指定SQL Links驱动程序 List参数用于指定连接参数 procedure TForm FormCreate(Sender: Tobject); begin with Session do begin ConfigMode := cmSession; try AddStandardAlias( WorkMen ExtractFilePath(ParamStr( )) PARADOX ); finally ConfigMode := cmAll; end; end; end;
上面的是单机版的创建别名方法 还有创建SQL服务器别名的方法 procedure TForm FormCreate(Sender: Tobject); var MyList: TStringList; begin MyList := TStringList Create; try with MyList do begin Add( SERVER NAME=IB_SERVER:/PATH/DATABASE GDB ); Add( USER NAME=MYNAME ); end; Session AddAlias( WorkMen INTRBASE MyList); finally MyList Free; end; end;
要说明的是 调用AddStandardAlias或AddAlias函数创建的别名只存在于内存中 程序关闭后就没有了 要把别名永远的保存到BDE配置文件中 请调用SaveConfigFile函数来保存到设置文件中 一 数据库别名(Alias) 的定义和检测方法
当Type 为STANDARD 时 别名定义最为简单 这时仅能采用PARADOX DBASE ASCIIDRV 三种数据库作为缺省的驱动程序(DEFAULT DRIVER)
另外 还要定义数据库存放路径(PATH) 和ENABLE BCD 才能建立一个完整的数据库别名
Delphi 的数据库应用程序能自动提供一个Session 组件 这个Session 组件即为应用程序与BDE 的接口
检测别名
通过调用Session GetAliasNames(list:Tstrings) 方法 可将当前BDE 配置中的所有数据库别名的名称存放到List 字符 串列表中 list IndexOf( 需要检测的别名 ) 的值会告诉我们这个别名是否存在 ( 其值为 时不存在)
增加一个新的别名
Session 组件的过程AddStandardAlias(const Name Path DefaultDriver: string) 可以增加一个标准类型的数据库别名 例如增加一个名为Cntssamp 缺省数据库驱动程序为PARADOX 存放路径为c:\delphp 的别名
Session AddStandardAlias( Cntssamp c:\delphp Paradox );
BDE 配置文件存盘
Session SaveConfigFile;
二 数据库中表格的定义和检测方法
数据库中表格的定义 维护和使用 只有在数据库别名正确设置的情况下才有意义 以TTable 组件为例 必须设置其DatabaseName 为一个实际存在的别名
检测表格是否存在
通过调用Session GetTableNames(const DatabaseName Pattern: string; Extensions SystemTables: Boolean; List: TStrings) 方法 可将当前指定数据库别名中所这个表格是否存在( 其值为 时不存在)
建立一个表格
第一步 设置TTable 组件的DataBase Name( 别名) TableName ( 表格名) TableType( 数据库类型);
第二步 调用Table FieldDefs Add(const Name: string;
DataType: TFieldType; Size: Word; Required: Boolean) 增加表格的各个字段 其中Name 为字段名 DataType 为字段类型(常用的有 ftInteger ftString ftDate ftBoolean 等) Size 为字段长度 Required 为该字段是否允许有空值
第三步 调用Table IndexDefs Add(const Name Fields: string; Options: TIndexOptions) 方法增加表格的索引文件 其中Name为索引文件名 Fields 为索引字段 options 为索引参数的集合 常用的索引参数有ixPrimary( 主键) ixDescending( 降序) ixUnique( 具有唯一值)等
第四步 调用Table CreateTable 建立表格
三 一个实例
在Form Formcreate 事件中写入如下代码 程序启动时 将自动检测是否存在数据库别名Cntssamp 如果没有则建立之 自动检测别名Cntssamp 中是否存在表格TSK( 图书库) 如果没有则自动建立表格TSK
procedure TForm FormCreate(Sender: TObject); var ap:TStringList; {字符串列表变量} answer:Integer; begin ap:=TStringlist Create; Session GetAliasNames(ap); {取得别名列表} if (ap IndexOf( Cntssamp )= ) then {判断别名是否存在} begin answer:=Application MessageBox( 别名Cntssamp不存在 现在创建吗? BDE信息窗口 mb_OKCancel); {增加一个名为Cngzsamp的数据库别名} if answer=IDCANCEL then begin ap Free; Exit; end; Session AddStandardAlias ( Cntssamp c:\delphp Paradox ); Session SaveConfigFile; {BDE配置文件存盘} end ;
lishixinzhi/Article/program/Delphi/201311/25034
没有区别吧,如果表名过长,起别名可以简化sql语句,如果涉及一个表,就不用,在性能方面的影响微乎其微啊。
查询优化器首先先执行from子句,碰到表名有别名就直接使用了,而后面不是每次都解析的。
但是自身连接时必须使用两个别名。
比如:
1、selec name as “姓名” ,sex as "性别" from user
2、select uname as “姓名”,oname as "英文名" ,usex as "性别" from user u ,other o where uid = oid;
as不是给表里的字段取别名,而是给查询的结果字段取别名。
其目的是让查询的结果展现更符合人们观看习惯,在多张表查询的时候可以直接的区别多张表的同名的字段。
扩展资料:
SQL别名:
SQL别名用于为表或表中的列 提供临时名称。
SQL别名通常用于使表名或列名更具可读性。
SQL一个别名只存在于查询期间。
别名使用AS关键字赋予。
在下列情况下使用别名:
1,查询涉及多个表
2,用于查询函数
3,需要把两个或更多的列放在一起
4,列名长或可读性差
语法
1、表名的别名语法:
SELECT 列名
FROM 表名 AS 别名;
2、列名的别名语法:
SELECT 列名 AS 别名
FROM 表名
3、表名和列名的别名混合使用语法:
SELECT 列名 AS 别名
FROM 表名 AS 别名
语法举例
1、使用表名称别名
有两个表分别是:"Persons" 和 "Product_Orders"。分别为它们指定别名 "p" 和 "po"。列出 "John Adams" 的所有定单。
SELECT poOrderID, pLastName, pFirstName
FROM Persons AS p, Product_Orders AS po
WHERE pLastName='Adams' AND pFirstName='John';
2、使用列名称别名
查询 Persons 表中的 LastName 列 (为其定义别名 '姓氏')和 FirstName 列(为其定义别名 ‘名字’),输出所有结果值。
SELECT LastName AS 姓氏, FirstName AS 名字
FROM Persons
咳绻��菘獠荒苌柚帽鹈�幕澳俏�裁聪低呈�菘獠淮�肪赌兀课蚁胂笫褂孟低呈�菘饽茄�褂米约旱氖�菘狻J莄#和sql sever2005 回答: 我用的是MFC+ODBC,数据库路径在数据源设置中已经存在,程序中不用关心路径。我想C#应该也一样,要么用ODBC,要么用ADO,不会直接 *** 作数据库吧,直接 *** 作为影响程序的应用。 追问: sql数据库,在属性里面或者创建时候设置的那个逻辑名,怎么修改啊?对象资源管理器里面显示的那个名字不应该是逻辑名吗?但是我的显示的还带路径,该怎么让它只显示一个逻辑名呢 回答: 也许我未懂你的应用,实在想不出你表达的意思,对不起!
生效和mysql版本有关。useOldAliasMetadataBehavior这个参数的意思是,使用别名作为返回的key的名称,如selectidas‘ID’fromdual,使用ID而不是id。所以生效和mysql版本有关。
1、对于516版本,亲测useOldAliasMetadataBehavior这个参数不起作用,对于5132版本,working,所以先检查驱动版本。
2、useOldAliasMetadataBehavior这个参数的意思是,使用别名作为返回的key的名称,如selectidas'ID'fromdual,使用ID而不是id。
3、如此MyBatis才会working的更好
4、如果你用apacheDbUtils,最好设置上这个对数,对于springJdbcTemplate没测过。
以上就是关于检测、建立数据库别名和表格全部的内容,包括:检测、建立数据库别名和表格、数据库表别名问题、mysql中 ,如何用 as 取别名 谢谢大家!!!等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)