以前我学VB,学了几天delphi没有找到C/S的工作所以放下了,后来学了一个月ASP+SQL,可以一个人写后台了,昨天去应聘问的一些问题:
1,VB,delphi发邮件
2,delphi如何自己动读出运行的SQL服务器名并进行自己动连接
3,多线程
4,C/S的网络通讯问题(TCP/IP,sock)
5,ACCESS和SQL中如何存图片和声音,请问C/S开发有经验的朋友这些难吗?我没做过大的C/S开发,请指教

解决方案 »

  1.   

    1、发邮件的目前在Delphi下可以使用Indy控件完成,比较简单的
    2、不是很清楚,应该是一个服务列表的读取和事件的出发过程
    3、多线程,目前书上都有的,使用多线程在分布式的应用系统中常出现
    4、网络通讯可以用Indy控件完成
    5、图片和声音在数据库中都是OLE对象存储的
      

  2.   

    1,Indy Demo就OK
    2,ADOConnection
    3,TThread搞定
    4,当然是Indy的
    5,用OLE字段http://lysoft.7u7.net
      

  3.   

    2:
        问问各位高手,如果终端机上不装SQL SERVER,怎么在终端机上来显示SQL SERVER服务器列表。
     注:终端机没有安装SQL SERVER
      

  4.   

    如果不写成这样:。
    -------------------------------------------------------------------------------------
    转贴:
      我一直想在我的应用程序中获得关于 SQL Server 更详细的信息。直到最近利用 SQLDMO(SQL Distributed Management Objects) 才得以实现这个想法。SQLDMO 提供了非常强大的功能,我们几乎可以利用程序实现任何 SQL Server 拥有的功能。在这篇文章中我将向您展示如何得到局域网中所有 SQL Servers 服务器、如何连接、如何获得服务器中的所有数据库。SQLDMO 对像来自 SQL Server 2000 提供的动态连接库 SQLDMO.dll。  这个 dll 本身是一个 COM 对像,首先你必须从类型库中引用Microsoft SQLDMO Object Library (Version 8.0). Delphi 会自动为你生成SQLDMO_TLB.PAS文件,文件中包括了所有 COM 对象的接口。在这里我们需要注意,由于引入的SQLDMO “TDatabase”和 “TApplication”和其它几个缺省类名与 Delphi 自带的类名冲突,所以自己可以修改成 _TypeName 的形式。或者其它的名字,我在这里改成 T_Application 、T_Database 等。我们下一步要做的是在我们的程序中引入单元文件 SQLDMO_TLB.PAS 。 应用程序单元名称是 SqlServers 程序源代码如下:unit SqlServers;interfaceuses Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs, StdCtrls, Buttons, ComCtrls , SQLDMO_TLB;//注意别忘了引入此文件type TdmoObject = record   SQL_DMO    : _SQLServer;   lConnected : boolean; end;type TFormServersList = class(TForm)   Label1: TLabel;   Label2: TLabel;   CB_ServerNames: TComboBox;   CB_DataNames: TComboBox;   Label3: TLabel;   Label4: TLabel;   Ed_Login: TEdit;   Ed_Pwd: TEdit;   BitBtn1: TBitBtn;   BitBtn2: TBitBtn;   procedure FormCreate(Sender: TObject);   procedure FormCloseQuery(Sender: TObject; var CanClose: Boolean);   procedure FormClose(Sender: TObject; var Action: TCloseAction);   procedure FormShow(Sender: TObject);   procedure BitBtn2Click(Sender: TObject);   procedure CB_DataNamesDropDown(Sender: TObject); private   server_Names : TStringList;   //对象集合      PdmoObject : array of TdmoObject;   //获取所有的远程服务器   Function GetAllServers(ServerList : TStringList) : Boolean;   { Private declarations } public   { Public declarations } end;var FormServersList: TFormServersList;implementation{$R *.DFM}{ TForm1 }Function TFormServersList.GetAllServers(ServerList : TStringList) : Boolean;var sApp : _Application ; sName : NameList; iPos : integer;begin Result := True ; try   sApp := CoApplication_.Create ; //创建的对象不用释放,delphi 自己会释放   sName := sApp.ListAvailableSQLServers; except   Result := False;   Exit; end; if sName.Count > 0 then // 之所以 iPos 从1开始,是因为0 位置为空值即 ' ' for iPos := 1 to sName.Count - 1 do begin   CB_ServerNames.Items.Add(sName.Item(iPos));   ServerList.Add(sName.Item(iPos)); end;end;procedure TFormServersList.FormCreate(Sender: TObject);var lcv : integer;begin server_Names := TStringList.Create; if not GetAllServers(server_Names) then begin   Application.MessageBox('无法获取服务器列表,可能缺少客户端DLL库函数','错误提示',MB_OK);   exit; end; for lcv := 0 to server_Names.Count - 1 do begin   SetLength(PdmoObject,lcv + 1);   with PdmoObject[lcv] do   begin     SQL_DMO := CoSQLServer.Create;     SQL_DMO.Name := Trim(server_Names[lcv]);     //登陆安全属性,NT 身份验证     SQL_DMO.LoginSecure := false;     // 设置一个连接超时     SQL_DMO.LoginTimeout := 3;     //自动重新登陆,如果第一次失败后     SQL_DMO.AutoReconnect := true;     SQL_DMO.ApplicationName := server_Names[lcv];     lConnected := false;   end; end;end;procedure TFormServersList.FormCloseQuery(Sender: TObject; var CanClose: Boolean);begin server_Names.Free;end;procedure TFormServersList.FormClose(Sender: TObject; var Action: TCloseAction);begin Action := CaFree;end;procedure TFormServersList.FormShow(Sender: TObject);begin if CB_ServerNames.Items.Count > 0 then //列举所有服务器名字   CB_ServerNames.Text := CB_ServerNames.Items.Strings[0];end;procedure TFormServersList.BitBtn2Click(Sender: TObject);begin Close ;end;procedure TFormServersList.CB_DataNamesDropDown(Sender: TObject);var icount ,Server_B : integer;begin CB_DataNames.Clear; Screen.Cursor := CrHourGlass; Server_B := CB_ServerNames.Items.IndexOf(CB_ServerNames.Text) ; with PdmoObject[Server_B].SQL_DMO do begin   if not PdmoObject[Server_B].lConnected then   try     Connect(Name,Trim(Ed_Login.Text),Trim(Ed_Pwd.Text));   except     Screen.Cursor := CrDefault ;     Application.MessageBox('请检查用户名或密码是否正确','连接失败',MB_OK);     Exit ;   end;   if not VerifyConnection(SQLDMOConn_ReconnectIfDead) then   begin     ShowMessage('在试图连接到SQL SERVER 2000 时出现错误' + #10#13 +                            '确信是否加在了动态连接库SQLDMO.DLL');     exit;   end else     PdmoObject[Server_B].lConnected := True ;   Databases.Refresh(true);   for icount := 1 to Databases.Count do     CB_DataNames.Items.Add(Databases.Item(icount,null).name); end; Screen.Cursor := CrDefault ;endend.  
      

  5.   

    ODBC连接,或者将SQLServer的客户端部分主要的配置工具拷贝到终端
      

  6.   

    楼上的兄弟能详细一些啊,不用ODBC,就用ADO.
      

  7.   

    2000 版本以上的自动带SQL的客户端连接引擎,(也可以安装最新的MDAC就可以连接SQL Server了),不
    一定要安装客户端啊,毕竟是微软自己的东西哦,汗~~