如何连接数据库?

时间:2022-02-18 20:26:34
各位大侠:
  我刚接触数据库编程不久,我想问一下,我想开发个基于网络传输的小软件,就是SQL服务器在一台机器上,而客户端在另一台机器上.请问是用OLE DB好,还是用ADO好?还有就是用ADO时,要把系统的msado1.0.dll或者1.5,2.0版本的import进去,各个机器系统都有可能版本或者位置不一样,这个怎么确定?请那位清楚的能指点一二,最好能贴上源代码,谢谢!

18 个解决方案

#1


用ADO吧,msado15.dll这个文件是在你编译的时候就连接进去了,以后运行就不需要了!

#2


就是说如果我在我的机器上开发这个客户端,经过打包之后在别的机器上安装这个软件,这个软件是完全没有问题的?我希望是这样,不知道是不是?请指点.还有就是,客户端连接服务器时他怎么知道服务器的网络地址,这个问题怎么解决?对于这个问题,我正在查资料,希望知道的能告诉一下,这样我能学得更快点,呵呵.

#3


用ODBC吧,那样你的应用程序只要写好了以后,在客户端的计算机上建好ODBC连上去选好就可以啦.

#4


服务器的网络地址还是从配置文件读吧,如果做成定死的你的服务器就永远不敢动了,那才不爽呢。ADO客户端安装程序把mdac也安装一遍就没问题了

#5


我已经能连上SQL数据库了,不过只能在我的机器上连我的SQL,当这个程序在别的机器上运行时却连不上我机器上的SQL,显示连接错误.请问是怎么回事?怎么解决?连接程序如下:
  _ConnectionPtr m_pConnection;
  HRESULT hr;
  try
  {
    _bstr_t strConnect="driver=                            {SQL Server};Server=211.64.*.*(我机器的IP地址);DATABASE=Teaching_Database;UID=;PWD="; 

hr = m_pConnection->Open(strConnect,"","",adModeUnknown);
  }
  catch(_com_error e)///捕捉异常
  {
CString errormessage;
errormessage.Format("连接数据库失败!\r\n错误信息:%s",e.ErrorMessage());
AfxMessageBox(errormessage);///显示错误信息
return FALSE;
  }

#6


哦,忘了加  hr = m_pConnection.CreateInstance("ADODB.Connection");这条语句了,不好意思.

#7


我刚才又写了一个专门连接的程序,不过令人郁闷的是同样一个程序连别人的SQL是成功的,当把IP地址及ID号和密码修改后,连我的SQL竟然连接不上,请问这是什么原因?真令人郁闷,请问该怎么解决?多谢多谢! 附代码如下:
         AfxOleInit();///初始化COM

HRESULT hr; //连接数据库
try
{
hr = m_pConnection.CreateInstance("ADODB.Connection");///创建Connection对象
if(SUCCEEDED(hr))
{
_bstr_t strConnect="Driver={SQL Server};Server=211.64.149.209;DataBase=pubs;UID=sa;PWD=sa"; 

        hr = m_pConnection->Open(strConnect,"","",adModeUnknown);
AfxMessageBox("good!");
}
}
catch(_com_error e)///捕捉异常
{
CString errormessage;
errormessage.Format("连接数据库失败!\r\n错误信息:%s",e.ErrorMessage());
AfxMessageBox(errormessage);///显示错误信息
return FALSE;


   请高手尽快解决阿,我好郁闷.

#8


你的sql server配了混和方式登录吗?

#9


恩,可能是创建的时候使用了混合登录方式

#10


各位大侠,小弟我也在编写同样一个测试程序,但是联本机的SQL都联不上,现象如下:
只加入#import "c:\program files\common files\system\ado\msado15.dll" \
no_namespace \
rename ("EOF", "adoEOF")
后编译,出现警告:
e:\1\debug\msado15.tlh(407) : warning C4146: unary minus operator applied to unsigned type, result still unsigned
程序代码是adCreateStructDoc = -2147483648,
后面操作同楼上兄弟,请大侠指点,多谢

#11


在编译的时候肯能会出现如下警告,对此微软在MSDN中作了说明,并建议我们不要理会这个警告。 
msado15.tlh(405) : warning C4146: unary minus operator applied to unsigned type, result still unsigned

#12


是混合模式。
不过经我反复检查,竟然发现局域网内别人的机器ping不到我的机器,而我的机器能ping到别人的机器,并且我能照常上网,用飞鸽传送文件也没什么问题,是不是和这个有关呢?我认为是,但是我目前还找不到解决办法。不知各位怎么认为呢?

#13


怎么没人回复呢?郁闷ing..........

#14


竟然发现局域网内别人的机器ping不到我的机器
-------------------------------
应该跟这个没关系,我也ping不了同事的电脑,可我能连上他的SQL server,没有任何问题
不过刚开始的时候也连不上,后来他设置了一下SQL server就可以了
好像是修改了一下帐号的权限,

#15


to:jazy() 
        怎样才能生产配置文件,对这个问题一窍不通,麻烦给讲一下.

#16


我也一样了,用DSN连接就可以
用非DSN连接就出错
我试一试重装SQL,不选验证方式
郁闷了

#17


呵呵,解决了
我SQL用的是WIDOWS验证模式,所以总是出错
下面给出ADO连接字符串的模版
 
身份验证模式为:"sql server和windows"
    “Provider=SQLOLEDB.1;Persist Security Info=True;User ID=用户名;Password=密码;Initial Catalog=数据库名;Data Source=SQL服务器名;”
身份验证模式为:"仅windows"
    “Provider=SQLOLEDB.1;Integrated Security=SSPI;Persist Security Info=False;Initial Catalog=数据库名;Data Source=SQL服务器名;”


#18


我也有同样的问题
void  ADOConn::OnInitADOConn()
{
// 初始化OLE/COM库环境 
::CoInitialize(NULL);
  
try
{
// 创建Connection对象
m_pConnection.CreateInstance("ADODB.Connection");
// 设置连接字符串,必须是BSTR型或者_bstr_t类型
_bstr_t strConnect = "Provider=SQLOLEDB; Server=SCADA-SERVER1;Database=HrSys;uid=sa; pwd=sa;";
m_pConnection->GetConnectionString();
m_pConnection->Open(strConnect,"","",adModeUnknown);
}
// 捕捉异常
catch(_com_error e)
{
// 显示错误信息
AfxMessageBox(e.Description());
}
}

我的机子是SCADA-SERVER1,装了SQL,只能连接我的机子SCADA-SERVER1,通过配置文件写的旧连接不上,这是什么原因呀?

#1


用ADO吧,msado15.dll这个文件是在你编译的时候就连接进去了,以后运行就不需要了!

#2


就是说如果我在我的机器上开发这个客户端,经过打包之后在别的机器上安装这个软件,这个软件是完全没有问题的?我希望是这样,不知道是不是?请指点.还有就是,客户端连接服务器时他怎么知道服务器的网络地址,这个问题怎么解决?对于这个问题,我正在查资料,希望知道的能告诉一下,这样我能学得更快点,呵呵.

#3


用ODBC吧,那样你的应用程序只要写好了以后,在客户端的计算机上建好ODBC连上去选好就可以啦.

#4


服务器的网络地址还是从配置文件读吧,如果做成定死的你的服务器就永远不敢动了,那才不爽呢。ADO客户端安装程序把mdac也安装一遍就没问题了

#5


我已经能连上SQL数据库了,不过只能在我的机器上连我的SQL,当这个程序在别的机器上运行时却连不上我机器上的SQL,显示连接错误.请问是怎么回事?怎么解决?连接程序如下:
  _ConnectionPtr m_pConnection;
  HRESULT hr;
  try
  {
    _bstr_t strConnect="driver=                            {SQL Server};Server=211.64.*.*(我机器的IP地址);DATABASE=Teaching_Database;UID=;PWD="; 

hr = m_pConnection->Open(strConnect,"","",adModeUnknown);
  }
  catch(_com_error e)///捕捉异常
  {
CString errormessage;
errormessage.Format("连接数据库失败!\r\n错误信息:%s",e.ErrorMessage());
AfxMessageBox(errormessage);///显示错误信息
return FALSE;
  }

#6


哦,忘了加  hr = m_pConnection.CreateInstance("ADODB.Connection");这条语句了,不好意思.

#7


我刚才又写了一个专门连接的程序,不过令人郁闷的是同样一个程序连别人的SQL是成功的,当把IP地址及ID号和密码修改后,连我的SQL竟然连接不上,请问这是什么原因?真令人郁闷,请问该怎么解决?多谢多谢! 附代码如下:
         AfxOleInit();///初始化COM

HRESULT hr; //连接数据库
try
{
hr = m_pConnection.CreateInstance("ADODB.Connection");///创建Connection对象
if(SUCCEEDED(hr))
{
_bstr_t strConnect="Driver={SQL Server};Server=211.64.149.209;DataBase=pubs;UID=sa;PWD=sa"; 

        hr = m_pConnection->Open(strConnect,"","",adModeUnknown);
AfxMessageBox("good!");
}
}
catch(_com_error e)///捕捉异常
{
CString errormessage;
errormessage.Format("连接数据库失败!\r\n错误信息:%s",e.ErrorMessage());
AfxMessageBox(errormessage);///显示错误信息
return FALSE;


   请高手尽快解决阿,我好郁闷.

#8


你的sql server配了混和方式登录吗?

#9


恩,可能是创建的时候使用了混合登录方式

#10


各位大侠,小弟我也在编写同样一个测试程序,但是联本机的SQL都联不上,现象如下:
只加入#import "c:\program files\common files\system\ado\msado15.dll" \
no_namespace \
rename ("EOF", "adoEOF")
后编译,出现警告:
e:\1\debug\msado15.tlh(407) : warning C4146: unary minus operator applied to unsigned type, result still unsigned
程序代码是adCreateStructDoc = -2147483648,
后面操作同楼上兄弟,请大侠指点,多谢

#11


在编译的时候肯能会出现如下警告,对此微软在MSDN中作了说明,并建议我们不要理会这个警告。 
msado15.tlh(405) : warning C4146: unary minus operator applied to unsigned type, result still unsigned

#12


是混合模式。
不过经我反复检查,竟然发现局域网内别人的机器ping不到我的机器,而我的机器能ping到别人的机器,并且我能照常上网,用飞鸽传送文件也没什么问题,是不是和这个有关呢?我认为是,但是我目前还找不到解决办法。不知各位怎么认为呢?

#13


怎么没人回复呢?郁闷ing..........

#14


竟然发现局域网内别人的机器ping不到我的机器
-------------------------------
应该跟这个没关系,我也ping不了同事的电脑,可我能连上他的SQL server,没有任何问题
不过刚开始的时候也连不上,后来他设置了一下SQL server就可以了
好像是修改了一下帐号的权限,

#15


to:jazy() 
        怎样才能生产配置文件,对这个问题一窍不通,麻烦给讲一下.

#16


我也一样了,用DSN连接就可以
用非DSN连接就出错
我试一试重装SQL,不选验证方式
郁闷了

#17


呵呵,解决了
我SQL用的是WIDOWS验证模式,所以总是出错
下面给出ADO连接字符串的模版
 
身份验证模式为:"sql server和windows"
    “Provider=SQLOLEDB.1;Persist Security Info=True;User ID=用户名;Password=密码;Initial Catalog=数据库名;Data Source=SQL服务器名;”
身份验证模式为:"仅windows"
    “Provider=SQLOLEDB.1;Integrated Security=SSPI;Persist Security Info=False;Initial Catalog=数据库名;Data Source=SQL服务器名;”


#18


我也有同样的问题
void  ADOConn::OnInitADOConn()
{
// 初始化OLE/COM库环境 
::CoInitialize(NULL);
  
try
{
// 创建Connection对象
m_pConnection.CreateInstance("ADODB.Connection");
// 设置连接字符串,必须是BSTR型或者_bstr_t类型
_bstr_t strConnect = "Provider=SQLOLEDB; Server=SCADA-SERVER1;Database=HrSys;uid=sa; pwd=sa;";
m_pConnection->GetConnectionString();
m_pConnection->Open(strConnect,"","",adModeUnknown);
}
// 捕捉异常
catch(_com_error e)
{
// 显示错误信息
AfxMessageBox(e.Description());
}
}

我的机子是SCADA-SERVER1,装了SQL,只能连接我的机子SCADA-SERVER1,通过配置文件写的旧连接不上,这是什么原因呀?