有几个问题想问一下。
1、如何在程序中动态连接不同的数据库呢?
2、是否可以在用户电脑上不安装SQL Server而正常运行我的程序呢?如果可以,该如何把程序打包发布呢?
多谢!

解决方案 »

  1.   

    1。可以用下拉框让用户选择数据库服务器
    代码如下:    uses Comobj;
        procedure TForm1.Button1Click(Sender: TObject);
        var
        SQLServer:Variant;
        ServerList:Variant;
        i,nServers:integer;
        sRetValue:String;
        begin
          SQLServer := CreateOleObject('SQLDMO.Application');
          ServerList:= SQLServer.ListAvailableSQLServers;
          nServers:=ServerList.Count;
          for i := 1 to nservers do
          ListBox1.Items.Add(ServerList.Item(i));
          SQLServer:=NULL;
          serverList:=NULL;
        end;2。ADO就行了,安装ADO 2.6或以上版本
      

  2.   

    再问一下,我安装了MDAC2.8,是否还需要去控制面板设置ODBC?如果需要,是否可以通过程序来设置呢?怎么设置呢?给个例子可以吗?
      

  3.   

    我是初学用SQL Server数据库。我在一台电脑上(没有安装SQL Server)安装了MDAC2.8,去设置ODBC的时候总是说连接不上服务器。是不是用SQL Server的话一定要有一个服务器?不管是本地的还是局域网还是远程Internet上的?
      

  4.   

    有没有什么办法可以用ADO不通过ODBC连接数据库?我在网上查到是内嵌连接,不知道是怎么回事,有人可以指导一下吗?
      

  5.   

    我给你写个ADO连接access的例子,数据库文件放在和可执行文件同目录下:
    在FORMCREATE中加入以下语句就可以了:
    procedure TfrmMain.FormActivate(Sender: TObject);
    begin
    if adoconnection1.Connected =false then
    begin
    adoconnection1.Close ;
    adoconnection1.LoginPrompt :=false;//不弹出登录窗口
    adoconnection1.ConnectionString :='Provider=Microsoft.Jet.OLEDB.4.0;User ID=Admin;Data Source='+extractfilepath(application.ExeName)+'your.mdb;';
    adoconnection1.Connected :=true;
    end;
    以连接SQL为例,现提供以下思路
    1、在窗口添加一连接,
    2、将一些参数如服务器名,登录名等参数放在一个INI文件里,直接在软件里从配置文件里去读取
    3、在窗口建立时直接连接
    procedure TDataModul1.DataModuleCreate(Sender: TObject);
    var ConStr, Lpathname:string;
        pini:Tinifile;
    begin
     with AdoCnt do
      begin
        connected:=False;
        pini:=Tinifile.Create(ExtractFilePath(ParamStr(0))+'db.ini');//取得INI文件
        ConStr := 'Provider='+Pini.ReadString('Connect','Provider','SQLOLEDB.1');
        ConStr := ConStr+';Password=12';
        ConStr := ConStr+';Persist Security Info=True;User ID='
                 +Pini.ReadString('Connect','User ID','sa');
        ConStr := ConStr+';Initial Catalog=test10';
        ConStr := ConStr+';Data Source='+Pini.ReadString('Connect','Data Source','SqlServer');
        ConStr := ConStr+';Use Procedure for Prepare=1;Auto Translate=True;Packet Size=4096;'
                 +'Use Encryption for Data=False;Tag with column collation when possible=False';
        Pini.Free;
        Connectionstring := ConStr;
        Try
          Connected:=True;
        except
        end;
      

  6.   

    我的程序其实有两个数据库要求的,一个是数据在客户本地机器上存一份数据,另外还要存一份到我们公司的服务器上。这样是否要在客户的机器上安装SQL Server呢?