我做的这个项目用的是SQL数据库,现在完成的差不多了,正在打包做安装文件,
我想问SQL数据库能不能象Access数据库那样在机子上不用装Access也能正常访问
数据库,也就是说我不在机子上装SQL能不能运行我的程序。
我的程序在局域网内有多个客户端访问服务器,然而我不能保证客户的机子的计算机
名称与我的程序中用AdOconnection连接的计算机名称的一致性,我该怎样做安装文件了。
提了这两个问题,好象没说怎么清楚,请大家帮忙!

解决方案 »

  1.   

    1。当然不用装SQL的客户端啦
    2。做个配置文件,初始化时读取就行了
      

  2.   

    你可以不用安装sql server来访问远程的数据库服务器,但是如果你的服务器不安装sql server那么你就没有任何一台机器提供数据库服务,这样肯定是不行的,至少你必须有一太服务器安装sql server,然后你的客户端可以不用安装任何东西就直接连接
    最好用ip地址来进行定位,虽然sql server是通过names pipe来进行定位服务器的,但是你可以强制的采用ip进行定位,这样快速而且准确
      

  3.   

    如果你硬要用计算机名连接数据库服务器,最好把这个计算机名做到程序里面进行设置,以动态生成AdOconnection连接字符串.
      

  4.   

    采用INI文件进行配置ADO连接就可以,如果想安全点,就对INI文件进行加密
      

  5.   

    to cg1120:我必须保证安装了sql server服务器的机子的计算机名与我的程序中的要一侄啊,
    是不是使用某个函数把那台机子的计算机名改了,还是。
    象你说的动态的话,我该用什么方法获取服务器的计算机名了,怎样动态配置,有没有代码。
      

  6.   

    当是是获取SQL SERVER服务了,可以用下面的方法获取(在LISTBOX列出SQL服务名):
    代码如下所示:
    procedure TForm1.FormCreate(Sender: TObject);
    var
     SQLServer:Variant;
     ServerList:Variant;
     i,nServers:integer;
    begin
    SQLServer := CreateOleObject('SQLDMO.Application');
    ServerList:= SQLServer.ListAvailableSQLServers;
    if serverlist.count<1 then
     begin //如果服务器不存在,则退出系统
        showmessage('服务器不存在,请检测服务器是否已经开机或者服务是否打开了');
        application.Terminate;
     end
    else
     begin
      for i:=1 to serverlist.count do
      listbox1.Items.Add(serverlist.item(i)) ;
      showmessage(serverlist.item(1)+'服务器已经打开,可以正常使用本系统');
      adoconnection1.ConnectionString:='Provider=SQLOLEDB.1;Persist Security info=False;UserID=sa;InitialCatalog=ideal_db;DataSource='+ServerList.Item(1);
     end;
    SQLServer:=NULL;
    serverList:=NULL;
    end;   
      

  7.   

    在ODBC里建一个数据源。
    你在程序里就使用该数据源名就行。
    配置程序的时候再配置同名ODBC数据源就行啦。
      

  8.   

    制作一个数据库连接设置的窗体。第一次运行时让用户或你自己指定,动态生成AdOconnection连接字符串。若连接成功,则记录这次的连接配置。
      

  9.   

    写动态连接的,做配置文件在文本,ini文件里或者注册表里面,要是主机该名直接修改配置文件的里面的服务器名字,用户名,密码
      

  10.   

    不用装SQL的客户端
    不用装SQL的客户端