我想实现用我同学的机器做SQL数据库服务器,,在我的机器上连接他的数据库,
只要输入数据库服务器的IP或计算机名字,然后选择数据库名字,,就能连接我同学的SQL数据库,,请问怎么实现???或是哪里有这样的源代码下载,,我找了好多源代码,可都不是这种的。

解决方案 »

  1.   

    如果用TDataBase按你输入的IP和用户,口令修改连接Params;
    如果用TADOConnection按你输入的IP和用户,口令生成ConnectionString
      

  2.   

    用服务器名,数据库名,用户名,密码构造一个adoconection的连接字符串,写道ini文件里
    程序的datamoudle里读取此字符串,就行了
      

  3.   

    在管理工具里配置数据源
    在ConnectionString里声名数据源
      

  4.   

    adoconection 用到了ODBC呀,,我的确是用adoconection连接到了我同学的机器,可我把程序拿到其他人的机器上,,就连接不上拉,,,只能在我机器上用??请问为什么??
      

  5.   

    托一个TADOConnection,点右键/////////////////
    或者
    //////////////////////////////////////////////////////////////////
    // Function:   adoconnection
    //             连接 TADOConnection
    // Parameters: conn                 待连接的adoconnect控件名
    //             userid               用户名
    //             password             用户密码
    //             initcatalog          数据库名称
    //             datasource           服务器名称
    // Result:     连接是否成功
    // By:         kkkkkkkkkkkkk
    //////////////////////////////////////////////////////////////////function adoconnection(Conn: TADOConnection; UserId, Password, Initcatalog,
        DataSource: string): boolean;
    var
        ConnString: string;
    begin
        try
            Conn.close;
            ConnString := 'Provider=SQLOLEDB.1';
            ConnString := connstring + ';Persist Security Info=False';
            ConnString := connstring + ';User ID=' + userid;
            ConnString := connstring + ';Initial Catalog=' + initcatalog;
            ConnString := connstring + ';Data Source=' + datasource;
            Conn.KeepConnection := true;
            Conn.loginprompt := false;
            Conn.ConnectionString := connstring;
            Conn.Open(userid, password);
            result := true;
        except
            result := false;
        end;
    end;
      

  6.   

    回复人: sanren2000(散人2000) ( ) 信誉:100  2004-09-22 11:33:00  得分: 0  
     
     
       adoconection 用到了ODBC呀,,我的确是用adoconection连接到了我同学的机器,可我把程序拿到其他人的机器上,,就连接不上拉,,,只能在我机器上用??请问为什么??
     
     
    ----------不要用ODBC,用连接字符串,
        adoconection。ConnectionString :=‘Provider=SQLOLEDB.1;Password=1;Persist Security Info=True;User ID=sa;Initial Catalog=数据库名;Data Source=数据库服务器名(或IP)’
      

  7.   

    to:theone_jxm()  我用了您的方法,,当连接本地SQL数据库提示错误“sa登陆失败,未能与SQL取得信任”,,连接其他机器的SQL数据库提示连接不上,提示“无法找到服务器”,,请问怎么回事????
      

  8.   

    把EMAIL放上去,我传给你,我有现成的程序。
      

  9.   

    看看你的几台机器的系统是什么。有的时候98的系统找不到2k的系统的sql服务器。
    我这里也碰到过这种问题。最后改成access数据库了郁闷中。
      

  10.   

    使用一个TADOConnection就可以了
      

  11.   

    看看这个吧,不知道对你有没有用:
    http://www.connectionstrings.com/你可以调用数据库连接属性对话框:var cs:string;
    procedure Tform.Button1Click(Sender: TObject);
    begin
      cs:=PromptDataSource(Application.Handle,'');
      AdoConnect.connectionstring:=cs;
    end;
      

  12.   

    to:theone_jxm()  我用了您的方法,,当连接本地SQL数据库提示错误“sa登陆失败,未能与SQL取得信任”,,连接其他机器的SQL数据库提示连接不上,提示“无法找到服务器”,,请问怎么回事????
    --------------------------------------------------------------
    username和password是你同学机器上的帐号密码,不能照抄!
      

  13.   


     TO:wujiabao(wjb) 能传给我吗???谢谢拉!!!!非常感谢!!
    TO: thunderniao(寒冷的火) 帐号密码是他的,,这个我知道。
      

  14.   

    1:配置ODBC是否能连接上对方.
    2:将两台机器的防火墙都关掉。
      

  15.   

    从INI文件读取参数进行数据库连接,到时只是填服务器名,数据库,SA,密码就可以了
      

  16.   

    连接你同学的机器可以,换机器就不行,当然了,换机器之后密码,服务器名都改了,要重新写ADOCONNECTION.CONNECTINGSTRING才可以呀.
      

  17.   

    有服务器将数据库设置好,然后在客户端用ADO组件页的Adoconnection组件进行连接!
      

  18.   

    请问我如何得到SQL数据库中所有表的名字,和表的搜有字段,,,我现在想实现,在第一个下拉框中选择数据库名字,,然后第二个下拉框就会自动添加这个数据库里所有表的名字,如果选择好表名字之后,,第三个下拉框就会出现这个表的所有字段,,,,请问怎么实现呀,,,急,,,急 ,,,,
      

  19.   

    系统表里有...
    连接master库
    select * from sysdatabases
    name字段就是库中的所有数据库名
    连接目标数据库
    select * from sysobject where type = u(u 就是用户表)
    name字段就是表名
    select * from syscolumns,sysobject where syscolumns.id = sysobject.id
    name字段就是字段名
    怎么添加到combox里就不用我说了吧??
      

  20.   

    http://community.csdn.net/Expert/topic/3419/3419794.xml?temp=.6761438
      

  21.   

    adoconection 用到了ODBC呀,,我的确是用adoconection连接到了我同学的机器,可我把程序拿到其他人的机器上,,就连接不上拉,,,只能在我机器上用??请问为什么??
    =================================
    用了AdoConnection还用ODBC干嘛????
      

  22.   

    将SQL Server的身份验证方式改为混合验证方式,不要用Windows验证方式,这样就无论在哪台机器上,用sa都可以连接上,必须在同一个局域网中。
      

  23.   

    unit DataModuleUnit;interfaceuses
      SysUtils, Classes, DB, ADODB,Forms,inifiles;type
      TQxDataModule = class(TDataModule)
        ADOConnection1: TADOConnection;
        CompQuery: TADOQuery;
        procedure DataModuleCreate(Sender: TObject);
      private
        { Private declarations }
      public
        { Public declarations }
      end;var
      QxDataModule: TQxDataModule;implementation
    function getadoconnectstring(lstruser, lstrpwd: Pchar;  pLoginStr: Pchar): Boolean;
    const  LOCINIFILE='server.ini' ;
    var strconnect:string;
        strappdir:string;
        lstrdatasource:string;
        InitialCatalog:string;
        ini:tinifile;
    begin
      Result:=False;
      strappdir := ExtractFilePath(Application.ExeName);
      if strappdir = '' then
      Begin
        StrPCopy(pLoginStr,'');
        Result:=True;
        Exit;
      End;
      if (fileexists(strappdir + LOCINIFILE)) then      //strappdir + LOCINIFILE
      begin
       ini := TIniFile.Create(strappdir + LOCINIFILE);
       lstrdatasource  := ini.readstring('dbconnect','datasource','');
       InitialCatalog  := ini.readstring('dbconnect','initial catalog','');
       strconnect := '';
       strconnect := strconnect + 'Provider=SQLOLEDB.1;';
       strconnect := strconnect + 'password=';
       strconnect := strconnect + strpas(lstrpwd);
       strconnect := strconnect + ';persist Security Info=True;';
       strconnect := strconnect + 'User ID=';
       strconnect := strconnect + StrPas(lstruser);
       strconnect := strconnect + ';Initial Catalog=';
       strconnect := strconnect + InitialCatalog;
       strconnect := strconnect + ';Data Source=';
       strconnect := strconnect + lstrdatasource;
       StrPCopy(pLoginStr,strconnect);
       Result:=True;
      end;
    end;
    //============================================================================//
    procedure DBConnect;
    const  LOCINIFILE='server.ini' ;
    var pLoginStr:pchar;
        ini:tinifile;
        strappdir:string;
        yhms,mimas:string;
        yhm:Pchar;
        mim:Pchar;
    begin
      yhm:=strAlloc(20*SizeOf(char));
      mim:=strAlloc(20*SizeOf(char));  strappdir := ExtractFilePath(Application.ExeName);
      ini := TIniFile.Create(strappdir + LOCINIFILE);
      yhms:=ini.readstring('dbconnect','user','');
      strpcopy(yhm,yhms);
      mimas:=ini.readstring('dbconnect','pswd','');
      strpcopy(mim,mimas);
     pLoginStr:=StrAlloc(200);
     getadoconnectstring(yhm,mim,pLoginStr);
     QxDataModule.ADOConnection1.ConnectionString:=StrPas(pLoginStr);
     QxDataModule.ADOConnection1.Connected:=true;
     StrDispose(pLoginStr);
    end;{$R *.dfm}procedure TQxDataModule.DataModuleCreate(Sender: TObject);
    begin
     DBConnect;
    end;end.