var
ts:Tstrings;
i:integer;
begin
ts:=Tstringlist.Create;
//adoconnection1.GetTableNames(ts,false);
//for i:=0 to ts.Count-1 do
// showmessage('第'+inttostr(i+1)+'个表名是'+ts.Strings[i]);
adoconnection1.GetFieldNames('stu',ts);
for i:=0 to ts.Count-1 do
showmessage('第'+inttostr(i+1)+'个字段名是'+ts.Strings[i]);
end;
//注:用session控件也可以完成以上的功能
ts:Tstrings;
i:integer;
begin
ts:=Tstringlist.Create;
//adoconnection1.GetTableNames(ts,false);
//for i:=0 to ts.Count-1 do
// showmessage('第'+inttostr(i+1)+'个表名是'+ts.Strings[i]);
adoconnection1.GetFieldNames('stu',ts);
for i:=0 to ts.Count-1 do
showmessage('第'+inttostr(i+1)+'个字段名是'+ts.Strings[i]);
end;
//注:用session控件也可以完成以上的功能
我的本意是指获得数据表的所有主键字段的名称,我是通过ODBC同异地数据库(Microsoft SQL Server 2000)关联的!
left join sysindexkeys on syscolumns.colid=sysindexkeys.colid and sysobjects.id=sysindexkeys.id
where sysindexkeys.indid=1 and sysobjects.name='你的表名'
PS;你提到的ODBC问题我不清楚怎么回事,但应该不会存在这样的问题,你重新建ODBC看看,或者更新ODBC驱动,在SQL里上面的语句可以找到一个表中的关键字段
在Delphi自带的SQL Explore 使用 SQL语句"select * from syscolumns "这条简单的语句的.
如果创建数据库别名时数据库类型用MSSQL,即通过Micrsosoft SQL Server 2000与数据库连接,这时使用SQL语句"select * from syscolumns "返回的结果中包括"name"字段;如果创建数据库别名时数据库类型用SQL Server,即通过ODBC数据源与数据库连接,这时使用SQL语句"select * from syscolumns "返回的结果中就不包括"name"字段,好像返回的记录数倒是相同.你们说奇不奇怪?
用'sp_pkeys tablename'也出现类似的现象:无'COLUMN_NAME'字段!与本地数据库连接,结果也是如此!不信吗?我试过好几台机子!!! 我之所以测试用ODBC与异地数据库进行连接是由于ODBC驱动程序是windows(Win2000)系统自带的,不需要额外再用专门的Micrsosoft SQL Server!请楼上的各位兄弟帮忙解决!
如果ODBC可以的话,当然采用ODBC了!楼上的兄弟们,前面所说的情况,如果真是delphi的bde的问题,该如何解决?
是不是没有办法了?