如何获取数据库中表的列信息(100分)

  • 主题发起人 主题发起人 christinadog
  • 开始时间 开始时间
C

christinadog

Unregistered / Unconfirmed
GUEST, unregistred user!
用Session控件的GetTableName可以获得表的名字,但是如何根据这个表名来获取与该表有关的列信息呢?所有与列定义有关的信息,比如列名,列类型,长度,是否可空等等,以及该表有多少列等等。另外,我如何知道每个数据库中支持的数据类型是些什么?如果要在不同的数据库中导入导出数据的时候,怎么定义目标库的类型?比如从库A导入到库B的时候,把A库中的表C完全导入到库B中,数据类型如何修改?
请高手尽快解答,很急,非常感谢啊!!!
 
你既然知道使用GetTableName,干吗不知道使用GetFieldNames,以下
摘自Delphi帮助文件:
Populates a string list with the names of fields in a table.
Delphi syntax:
procedure GetFieldNames(const TableName: String;
List: TStrings);
C++ syntax:
void __fastcall GetFieldNames(const AnsiString TableName, Classes::TStrings* List);
Description
Call GetFieldNames to retrieve a list of fields in a table. The names of the fields are put into the already-existing string list object specified in the List parameter. Specify the table for which to retrieve the names of fields in the TableName property.
ADOConnection1.GetFieldNames('Employee', ListBox1.Items);
ADOConnection1->GetFieldNames("Employee", ListBox1->Items);
 
GetFieldNames可以获得列名,至于相关信息好像不行
 
如果是SQL Server,那还是使用系统提供的存储过程吧!如sp_databases、sp_tables 、
sp_columns 。以下摘自SQL Server在线帮助
文件:
目录过程
sp_column_privileges sp_special_columns
sp_columns sp_sproc_columns
sp_databases sp_statistics
sp_fkeys sp_stored_procedures
sp_pkeys sp_table_privileges
sp_server_info sp_tables
 
如果你是要导数据的话那你要取得表的每个字段的信息,岂不是很累?
其实你可以试试直接用sql语句,比如
select * into newtable from sourcetable where ....
新表会自动创建的,不一定解决你的问题,但值得试试
 
Oracle中的dba_tab_columns, user_tab_columns, all_tab_columns, col 视图中都可以查出指定表的列信息。
 
谢谢大家的回答。
我现在要做的是在不同的数据源中导数据,所以迷糊的方法不可行,因为那个只限于相同的数据源。比如从Oracle导入到SQL Server就不能那样做。还有就是各个数据源的数据类型是不一样的,所以我要做的就是还要对数据类型进行转换,不然这些数据就不能很容易地插入到目的数据源。另外还要做一些列拆分或者合并的工作。比如把日期拆分成年,月,日各一列,或者把姓和名合并成为姓名一列,等等。
 
后退
顶部