+ -
当前位置:首页 → 问答吧 → 请教 ADO ODBC数据源 DSN 问题

请教 ADO ODBC数据源 DSN 问题

时间:2011-08-20

来源:互联网

我的DELPHI程序使用如下代码连接:

  try
  password := '111111';
  user := '111111';
  server := 'aaa-PC\SQLEXPRESS';
  //server := 'aaa-PC';
  database := 'ddddd';

  conSQLstr := 'Provider=SQLOLEDB.1; Password='+Password+';Persist Security Info=True;User Id= '+user+ ';Data Source= '+server+ ';Initial Catalog= '+database+ ';';
  conSQL := TADOConnection.Create(nil);
  conSQL.ConnectionString := conSQLStr;
  conSQL.Open;

  result := true;
  SQLConnectioned := true;
  except
  result := false;
  SQLConnectioned := false;
  end;

但,在客户端上运行,连接不上SQL SERVER,而必须在WINDOWS 的 ODBC数据源管理器 里添加上一个 DSN 才能连上?为什么添加上,成功连上,以后,将这个DSN删除掉程序又是正常可以连接的?

我的目的是,用户无须手动添加 DSN,可行吗?谢谢

作者: oxboy   发布时间: 2011-08-20

教你一个非常简单的办法:

1、你在桌面上新建一个文本文件(不会创建?),然后将文件扩展名.txt改为.udl,然后双击该文件,打开一个“数据链接属性”对话框。
2、选择“提供程序”选项卡,再选择其中的“Microsoft OLE Provider for SQL Server”,然后“下一步”。
3、在“连接”选项卡下,输入SQL Server数据库服务器名(即: aaa-PC\SQLEXPRESS)与登录密码。再在下面的下拉列表中,选择你要连接的数据库。
4、点击“确定”
5、用“记事本”打开上述.udl文件,将其中的“Provider=SQLOLEDB.1;Persist Security。。。。。”赋值给conSQL.ConnectionString 就行了。

至此,你的目的达到了:用户无须手动添加 DSN 。

最后,建议你不要指定SQL Server数据库服务器名称,而改用(local),因为将你开发的程序安装到别的机器上时,默认的SQL Server数据库服务器名称跟你开发时所用的机器上的名称不同,这样又会出现无法连接数据库的错误。

作者: zhoufs   发布时间: 2011-08-20

谢谢楼上的帮助,也学到了一种新的方法。但,此方法得出来的连接字符串与我本身程序的一样喔。

我的 SQL SERVER 是设置为 TCP/IP ALL端口,TCP动态 50000,TCP:1433

在客户端上,还是要手工在WINDOWS添加 DSN。而且,奇的是在服务器那机器里如果数据库服务器名使用

aaa-PC\SQLEXPRESS 可以直接连接上,但如果使用

aaa-PC 则要添加DSN才能接上。

为什么,DSN添加成功连接后,以后删除了也可以运行?

作者: oxboy   发布时间: 2011-08-20

使用连接字符串来连接数据库,是不需要建立DNS的,这个是毫无疑问的。

“在客户端上,还是要手工在WINDOWS添加 DSN”? 客户机上只需要指定所连接的数据库服务器的IP地址及数据库服务器名称,并保证与服务器网络连通就OK了,根本不需要创建什么DNS !

数据库服务器上倒是要进行一些设置: 
1、SQL Server的登录方式:改为SQL Server方式,而不要用Windows NT 认准方式。
2、关闭防火墙。


作者: zhoufs   发布时间: 2011-08-20

热门下载

更多