delphi如何实现客户端电脑运行程序,但数据库放在服务器电脑上?

时间:2022-09-12 21:16:47
我有一个小的查询软件,是单机版的。现在希望查询的数据能放在服务器端,但用户那边安装的程序是不包含数据库的,而是在使用中,连接服务器端的数据库,这样不管在哪里使用这个查询软件,如果修改了数据,其它使用者都能看到最新的数据信息,该如何使用呢?
除了用ActiveX外,还有什么办法?直接将ADOConnectLogin的数据库地址改为IP地址可行吗?

12 个解决方案

#1


可以,像MSSQL,MySQL,Oracle,...可以装在一台电脑上,而程序在另外的电脑,改IP连接就行了

#2


能否详细一点说明该如何链接呢?ACCESS可以吗?
如果是SQL的话,是吧数据库放在服务器上就可以了吗?谢谢

引用 1 楼  的回复:
可以,像MSSQL,MySQL,Oracle,...可以装在一台电脑上,而程序在另外的电脑,改IP连接就行了

#3


SQL装在服务器上,
客户端的delphi程序连接数据库部分写上服务器的IP,
还要用户名和密码

#4


引用 2 楼  的回复:
能否详细一点说明该如何链接呢?ACCESS可以吗?
如果是SQL的话,是吧数据库放在服务器上就可以了吗?谢谢

引用 1 楼  的回复:

可以,像MSSQL,MySQL,Oracle,...可以装在一台电脑上,而程序在另外的电脑,改IP连接就行了

连接字符串设置好了就可以的,ACCESS不可以,因为他是文件型的数据库

#5


内网:
ConectString=Provider=SQLOLEDB.1;Password=数据库密码;Persist Security Info=True;User ID=登录用户;Initial Catalog=数据库名;Data Source=服务器IP地址
(内网要求服务器1433端口开启)
外网链接的话要求用分布式开发,多层架构,这个一句两句说不清楚,给一个多层开发:RemObjects 

#6


补偿上文:上面是SQLserver数据库,如果是orcale,需要稍作调整,你可以在ADo系列的空间中可以得到这样的东西的

#7


Access也可以,但是需要共享所在的文件夹出来 

#8


该回复于2012-09-06 08:23:03被版主删除

#9


ADO双层结构就可以,把数据库装在服务器上,然后用TADOConnection连接服务器上的数据库。

#10


服务器数据库是sqlserver的话,那就简单了。客户端是用ado连接数据库的话,配置一下连接字符串即可,跟本地操作一样的。
ADOConnection1.ConnectionString :=
'Provider=SQLOLEDB.1;Persist Security Info=False;User ID=sa;Initial Catalog=master;Data Source=192.168.1.106';

----------------
常见的做法是把连接数据库的参数写到ini配置文件中
参考如下代码:
server.ini
{ ====连接SQL SERVER数据库用户名及密码==== } 
[DATABASE]
{ db_server是SQL SERVER数据库服务器计算机名或IP地址 }
{ 如果SQL SERVER数据库服务器是本机可不用填写        }
db_server=192.168.1.106
{ SQL SERVER数据库用户名 }
user=sa
{ SQL SERVER数据库密码 }
password=


读取连接字符串

procedure TDM.DataModuleCreate(Sender: TObject);
var
  clientini:TIniFile;
  db_server,user,password:string;
begin
  {获取server.ini文件中系统配置参数}
  try
    clientini := TIniFile.Create('.\Server.ini');
    if clientini<>nil then
    begin
      db_server := trim(clientini.readString('database','db_server',''));
      user := trim(clientini.readString('database','user','sa'));
      password := trim(clientini.readString('database','password',''));
    end;
  finally
    clientini.Free;
  end;
  { 获取数据库连接串 }
  ADOConnection1.ConnectionString := 'Provider=SQLOLEDB.1;Persist Security Info=False;User ID='+user+';Password='+password+';Initial Catalog=master;Data Source=' + db_server;
end;

#11


局域网内是可以的了,但如果对外部网呢?
不能用现有的IP地址吗? 多层架构,是指导程序需要修改吗?

引用 5 楼  的回复:
内网:
ConectString=Provider=SQLOLEDB.1;Password=数据库密码;Persist Security Info=True;User ID=登录用户;Initial Catalog=数据库名;Data Source=服务器IP地址
(内网要求服务器1433端口开启)
外网链接的话要求用分布式开发,多层架构,这个一句两句说不清楚,给一个多层开发:RemObj……

#12


如果使用了VPN,那还需要打开1433这个端口吗?
1433端口打开后,会不会比较危险?

#1


可以,像MSSQL,MySQL,Oracle,...可以装在一台电脑上,而程序在另外的电脑,改IP连接就行了

#2


能否详细一点说明该如何链接呢?ACCESS可以吗?
如果是SQL的话,是吧数据库放在服务器上就可以了吗?谢谢

引用 1 楼  的回复:
可以,像MSSQL,MySQL,Oracle,...可以装在一台电脑上,而程序在另外的电脑,改IP连接就行了

#3


SQL装在服务器上,
客户端的delphi程序连接数据库部分写上服务器的IP,
还要用户名和密码

#4


引用 2 楼  的回复:
能否详细一点说明该如何链接呢?ACCESS可以吗?
如果是SQL的话,是吧数据库放在服务器上就可以了吗?谢谢

引用 1 楼  的回复:

可以,像MSSQL,MySQL,Oracle,...可以装在一台电脑上,而程序在另外的电脑,改IP连接就行了

连接字符串设置好了就可以的,ACCESS不可以,因为他是文件型的数据库

#5


内网:
ConectString=Provider=SQLOLEDB.1;Password=数据库密码;Persist Security Info=True;User ID=登录用户;Initial Catalog=数据库名;Data Source=服务器IP地址
(内网要求服务器1433端口开启)
外网链接的话要求用分布式开发,多层架构,这个一句两句说不清楚,给一个多层开发:RemObjects 

#6


补偿上文:上面是SQLserver数据库,如果是orcale,需要稍作调整,你可以在ADo系列的空间中可以得到这样的东西的

#7


Access也可以,但是需要共享所在的文件夹出来 

#8


该回复于2012-09-06 08:23:03被版主删除

#9


ADO双层结构就可以,把数据库装在服务器上,然后用TADOConnection连接服务器上的数据库。

#10


服务器数据库是sqlserver的话,那就简单了。客户端是用ado连接数据库的话,配置一下连接字符串即可,跟本地操作一样的。
ADOConnection1.ConnectionString :=
'Provider=SQLOLEDB.1;Persist Security Info=False;User ID=sa;Initial Catalog=master;Data Source=192.168.1.106';

----------------
常见的做法是把连接数据库的参数写到ini配置文件中
参考如下代码:
server.ini
{ ====连接SQL SERVER数据库用户名及密码==== } 
[DATABASE]
{ db_server是SQL SERVER数据库服务器计算机名或IP地址 }
{ 如果SQL SERVER数据库服务器是本机可不用填写        }
db_server=192.168.1.106
{ SQL SERVER数据库用户名 }
user=sa
{ SQL SERVER数据库密码 }
password=


读取连接字符串

procedure TDM.DataModuleCreate(Sender: TObject);
var
  clientini:TIniFile;
  db_server,user,password:string;
begin
  {获取server.ini文件中系统配置参数}
  try
    clientini := TIniFile.Create('.\Server.ini');
    if clientini<>nil then
    begin
      db_server := trim(clientini.readString('database','db_server',''));
      user := trim(clientini.readString('database','user','sa'));
      password := trim(clientini.readString('database','password',''));
    end;
  finally
    clientini.Free;
  end;
  { 获取数据库连接串 }
  ADOConnection1.ConnectionString := 'Provider=SQLOLEDB.1;Persist Security Info=False;User ID='+user+';Password='+password+';Initial Catalog=master;Data Source=' + db_server;
end;

#11


局域网内是可以的了,但如果对外部网呢?
不能用现有的IP地址吗? 多层架构,是指导程序需要修改吗?

引用 5 楼  的回复:
内网:
ConectString=Provider=SQLOLEDB.1;Password=数据库密码;Persist Security Info=True;User ID=登录用户;Initial Catalog=数据库名;Data Source=服务器IP地址
(内网要求服务器1433端口开启)
外网链接的话要求用分布式开发,多层架构,这个一句两句说不清楚,给一个多层开发:RemObj……

#12


如果使用了VPN,那还需要打开1433这个端口吗?
1433端口打开后,会不会比较危险?