回 帖 发 新 帖 刷新版面

主题:求助:一个打开SQL中的某个数据库的小程序

最近要写一个打开多个数据表的程序,这个数据表是用SQL建立的
我的想法是:1。选中这个表所在的数据库,并显示库中所有表
            2。在几个列表中选出需要的这个表。
我想想法应该没有太大的问题吧,但是在第一步就出了问题
编译可以通过,但是在选择某个数据库的时候提示exe文件出现EOleException错误,无授权说明。。。。

我使用的是ADOConnection,ADOTable,DataSource,OpenDialog控件,加上一个用来显示路径的Edit和用来显示数据表名字的ListBox。
程序如下:

procedure TForm1.Button1Click(Sender: TObject);
var
access:string;
const
link_str='Provider=%s; Data Source=%s';
dataprovider='SQLOLEDB.1';
begin
 Opendialog1.FileName :='*.mdf';
  if Opendialog1.Execute then
  begin
    access:=Opendialog1.FileName ;
    edtopen.Text :=access;
    adoconnection1.Connected :=false;
    adoconnection1.ConnectionString :=format(link_str,[dataprovider,access]);
    adoconnection1.Connected :=true;
    adoconnection1.GetTableNames(ListBox1.Items,false);
  end;
end;

procedure TForm1.ListBox1Click(Sender: TObject);
begin
adotable1.Close ;
adotable1.TableName :=listbox1.Items.Strings[listbox1.itemindex];
adotable1.Open ;
end;

请大家帮忙看看啊,不胜感激了~~

回复列表 (共2个回复)

沙发

能直接打开*.mdf文件吗?
在SQL Server中有一个记录所有表名的表sysobjects,还和另一个表系统表(大概是syscolumns)连在一起,就可以得到你所需要的表名。你可以在google所有一下相关信息。

板凳

貌似mdf是不能直接打开

感谢1楼的提示,但是我不知道怎么把sql语言写进去
于是用了adoqury
adoquery1.sql.text := 'select name from sysobjects where type = 'U''
还是出错,说无效的列名'U'
U不是用户表吗~`
抓头中~~

我来回复

您尚未登录,请登录后再回复。点此登录或注册