当然连 SQL SERVER 用ADO是首选了,但某些场合还是要用到BDE的。
   好像一定要先建一个 ODBC DSN ,然后将DATABASE的PARAMS中这样设置:
  "ODBC DSN=localserver
   USER NAME=sa
   PASSWORD="
   但如果我不先建localserver数据源,我怎么设置参数连接SQL SERVER呢?   用BDE连接上SQL SERVER之后呢,又发觉一个奇怪的问题:
   Northwind表中有一个Products表,我用网格控件取表的字段时发觉凡是char(varchar)数据类型的字段就取不到,列表中根本就看不到。
   这可能是一个老问题了,只是我在这里还是盲点,各位别见笑。

解决方案 »

  1.   

    版主说:你说的两个问题其实都不是问题,建议你看看Delphi关于数据库开发的入门书和Delphi自带的Demo程序。
      

  2.   

    用BDE连SQL SERVER的DEMO少啊。
      

  3.   

    拉一个Database下来,驱动选“MSSQL",写好连接参数即可。
      

  4.   

    不必一定建ODBC DSN。以我的程序为例,在BDE中建别名misdata,剩下的在login.pas中
        Database.Connected:=False;
        Database.Params.Values['user name']:='sa';
        Database.Params.Values['pass word']:='';
        Database.LoginPrompt:=false;
        database.DatabaseName:='misdata';
        database.Connected:=true;      
    with query1 do
    begin
       close;
       sql.clear;
       sql.add('select * from  person where id=:user');
       parambyname('user').asstring :=i_user.text;
       try
          open;
          if fields[1].AsString=i_passwd.Text then
          begin
           showmessage('ok');
              F_main.login:=True;
             end
          else
           Application.MessageBox('请重新输入密码。'+#13+'注意大小写!','密码错误',MB_OK);
       except
         Application.MessageBox('请确认用户名大小写是否正确!','无此用户',MB_OK);
       end;
    end;
       if F_main.login then F_login.Close;
     end;
      

  5.   

    MSSQL 和 Sql server 驱动有什么不同了?
    MSSQL 的参数怎样设置啊?
    不要吐。
      

  6.   

    我也是刚刚学,MS SQL是直接连到SQL SERVER 的数据库,SQL SERVER 好象是先要通过ODBC建数据原
      

  7.   

    拉一个 database 
     drivername 选择 mssql
     指定databasename:test双击 params 
    指定:
    DATABASE NAME=myinfosys    //  这里是你的sqlserver 上的databse 设备
    SERVER NAME=jinke-svr      //  这是存放mssqlserver 的服务器名称
    USER NAME=sa               //  超级用户
    PASSWORD=                  //  密码
    点击connected =true 
       ok 
      

  8.   

    BDE连SQL SERVER还是问题多多.
    我刚才按: IUPRG(遨云独行,琢符弄图) 老兄的方法连,连上了.
    我就打开本地SQL SERVER2000中的NORTHWIND数据库中的PRODUCTS表,结果还是VARCHAR,NVHARCHAR,CHAR数据类型的字段还是不能取出,报错:
    Translate Error. Value out of bounds.
    尝试转换源字段中因语法错误而停止的数据。
      

  9.   

    不會吧。
    1.先在BDE中建一個新的庫,類型為MSSQL
    2.然後在右邊的屬性中設定:
      datebase name= SQl 中要連的數據庫名
      server name=本機名稱
      host name=本機名稱
      user name=sa
    3.最後刷新就可以了
      

  10.   

    看来BDE是不能看到unicode字段的, 如所有的nvarchar, nchar字段都是看不到的.  但是无论是BDE或ADO 都是用cache的模式来处理数据, 即是每次 'Open'
    表格时, 都需要把一定数量的数据取出, 假如数据数量极大的话, 这方面的负担也不少呢.
      

  11.   

    BDE 中处理 nvarchar/nchar 类型的数据有问题,会提示不支持的数据类型。
    给 Delphi 打上一个 Update Pack 试一下。
      

  12.   

    哪里有 Update Pack for delphi 下载呀?
    怎么会一个数据引擎居然连 UNICODE 都不支持呢
      

  13.   

    根据楼主说的,好象是SQLServer字符集的问题。我以前也碰到过类似的问题。但在安装时SQLServer好象会自动选择字符集的,只要我们不去改变它。另外SQLServer自带了一个程序好象叫RebuildeDM,它可以重新设置好字符集。楼主可以试试!
    另外可以在Delphi中动态配置BDE;以下代码仅供参考(这是本地SQLServer):
    function configbde(const servername,aliasename,datafile: string): boolean;
    var
      paramstr:Tstrings;
      function getcomputename:string;
      var
        cname:array [0..50] of char;
        lens:Dword;
      begin
        lens:=MAX_COMPUTERNAME_LENGTH + 1;
        getcomputername(cname,lens);
        result:=cname;
      end;
    begin
      paramstr:=Tstringlist.Create;
      try
        session.GetAliasNames(paramstr);
        if paramstr.IndexOf(aliasename)>=0 then
           session.DeleteAlias(aliasename);
        paramstr.Clear;
        if trim(servername)='' then
          paramstr.Add('SERVER NAME='+trim(getcomputename))
        else
          paramstr.Add('SERVER NAME='+trim(servername));
        paramstr.Add('DATABASE NAME='+datafile);
        paramstr.add('USER NAME=用户');
        session.AddAlias(aliasename,'MSSQL',paramstr);
        try
          session.SaveConfigFile;
        except
          messagebox(0,pchar('数据配置错误!'),pchar('提示'),mb_ok or mb_iconwarning);
          result:=false;
          exit;
        end;
      finally
        paramstr.Free;
      end;
      result:=true;
    end;