首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > VC/MFC >

vc6.0编写的程序如何和SQL2000数据库连接

2012-05-13 
vc6.0编写的程序怎么和SQL2000数据库连接?vc6.0编写的程序怎么和SQL2000数据库连接?我想请各位大侠给出详

vc6.0编写的程序怎么和SQL2000数据库连接?
vc6.0编写的程序怎么和SQL2000数据库连接?我想请各位大侠给出详细的说明,我是个菜鸟,数据库以前基本没接触过,希望大家帮忙!!!

[解决办法]
m_pConn->Open("Provider=SQLOLEDB.1;Server=PC-201012170947\\WINCC;DataBase=;UID=sa;PWD=","","",adConnectUnspecified);
这是SQL 2000的连接字符串,你把它加到下面的相应的语句里:

#import "C:\Program Files\Common Files\System\ado\msado15.dll" no_namespace rename ("EOF", "adoEOF")
头文件里类里:
_ConnectionPtr m_pConnection;
_RecordsetPtr m_pRecordset;
_CommandPtr m_pCommand;

CPP文件里:
BOOL CDatabaseDll::OpenDatabaseFun(_ConnectionPtr pConnection,_RecordsetPtr pRecordset,_CommandPtr pCommand)
{
BOOL Result=TRUE;
HRESULT hr;
try
{
hr = pConnection.CreateInstance("ADODB.Connection");///创建Connection对象
if(SUCCEEDED(hr))
{
pConnection->ConnectionTimeout = 10;
// hr = m_pConnection->Open( "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=D:\\NW.mdb","", "", adModeUnknown);//这是OFFICE2003以下的
hr = pConnection->Open("Provider=Microsoft.Ace.Oledb.12.0;Data Source=D:\\bagayalu.accdb;Jet OLEDB:Database Password=123456","", "", adModeUnknown);//这是OFFICE2007以上的,包括OFFICE2010,这个连接字符串就是在OFFICE2010下用的,没问题

//m_pConnection->PutDefaultDatabase ((_bstr_t)"DB");//设置默认数据库

pCommand.CreateInstance(__uuidof(Command));
pCommand->CommandTimeout = 5;
pCommand->ActiveConnection = pConnection;
}
}
catch(_com_error e)///捕捉异常
{
CString errormessage;
errormessage.Format("连接数据库失败!/r/n错误信息:%s",e.ErrorMessage());
AfxMessageBox(errormessage);///显示错误信息
Result=FALSE;
return Result;
}
_variant_t var;
float v1,v2,v3,v4;
CString Remark;
pRecordset.CreateInstance(__uuidof(Recordset));
try
{
pRecordset->Open("SELECT * FROM 表1",// 查询DemoTable表中所有字段
pConnection.GetInterfacePtr(),// 获取库接库的IDispatch指针
adOpenDynamic,
adLockOptimistic,
adCmdText);
while(!m_pRecordset->adoEOF)
{
var = m_pRecordset->GetCollect("v1");
if(var.vt != VT_NULL)
v1=var.fltVal;
// strName = (LPCSTR)_bstr_t(var);

var = m_pRecordset->GetCollect("v2");
if(var.vt != VT_NULL)
v2=var.fltVal;
var = m_pRecordset->GetCollect("v3");
if(var.vt != VT_NULL)
v3=var.fltVal;
var = m_pRecordset->GetCollect("v4");
if(var.vt != VT_NULL)
v4=var.fltVal;
var = m_pRecordset->GetCollect("remark");
if(var.vt != VT_NULL)
Remark = (LPCSTR)_bstr_t(var);
m_pRecordset->MoveNext();
}
}
catch(_com_error *e)
{
AfxMessageBox(e->ErrorMessage());
Result=FALSE;
return Result;
}
return Result
[解决办法]

C/C++ code
#import "C:\Program Files\Common Files\System\ado\msado15.dll" no_namespace rename ("EOF", "adoEOF")引入动态连接库App 对像的InitInstance()中AfxOleInit();//初始化Com库ExitInstance中释放Com环境AfxOleTerm();_ConnectionPtr m_pConnection;   m_pConnection.CreateInstance(__uuidof(Connection));//创建一个实例 // 这里用自己的数据库.CString strcon=("Provider=SQLOLEDB.1;Persist Security Info=False;User ID=sa;Initial Catalog=xufan1;Data Source=.");//xufan1 为数据库名..Data Source 服务器为.(点)本机pConnection->Open((_bstr_t)strcon,"","",adModeUnknown);//打开连接
[解决办法]
第一步:
在stdafx.h文件中加入:
#import "c:\program files\common files\system\ado\msado15.dll" no_namespace rename("EOF","adoEOF")

第二步:
_ConnectionPtr g_pConnPtr; 


if (FAILED(this->g_pConnPtr.CreateInstance("ADODB.Connection")))
{
AfxMessageBox("Create Instance failed!");
return false;
}
this->g_pConnPtr->ConnectionTimeout = 3 ;///创建Connection对象
//g_pConnPtr->Is

CString strSRC;
strSRC="Driver=SQL Server;Server=";
strSRC+="数据库服务器IP地址";
strSRC+=";Database=";
strSRC+="数据库名称";

CString temp ; 
temp.Format(";UID=%s ; PWD=%s" , "用户名" , "密码");
strSRC+= temp ;

_variant_t varSRC(strSRC);
//_variant_t varSQL(strSQL);
_bstr_t bstrSRC(strSRC);

try
{
if (FAILED(this->g_pConnPtr->Open(bstrSRC,"","",-1)))
{
AfxMessageBox("Can not open Database!");
this->g_pConnPtr.Release();
return false;
}
}
catch(_com_error e) 

return false; 

return true ;


第三步:使用
_RecordsetPtr m_pRecordset;
CString strSQL = "SELECT * FROM 你的table WHERE 条件 ";
_variant_t varSQL(strSQL);
try
{
m_pRecordset.CreateInstance("ADODB.Recordset");
m_pRecordset->Open(varSQL,_variant_t((IDispatch *)g_pConnPtr,true),\
adOpenStatic,adLockOptimistic,adCmdText);
}
catch(_com_error e) 

CString strComError;\
strComError.Format("错误编号: %08lx\n错误信息: %s\n错误源: %s\n错误描述: %s", \
e.Error(), \
e.ErrorMessage(), \
(LPCSTR) e.Source(), \
(LPCSTR) e.Description()); \
//::MessageBox(NULL,strComError,"错误",MB_ICONEXCLAMATION);
TRACE(strComError);
return type; 


if( m_pRecordset->adoEOF) 
{
ClosePtr();
return type;
}

if(!m_pRecordset->adoEOF) 
{
//type(测试)
_variant_t vartype ;
vartype = m_pRecordset->GetCollect ("type");
CString strtype ;
if(vartype.vt != VT_NULL)
strtype = (char *)_bstr_t(vartype);
else
strtype = _T("");
strtype.TrimLeft();
strtype.TrimRight();

}
if(m_pRecordset != NULL)
{
if(m_pRecordset->State)
m_pRecordset->Close();
m_pRecordset = NULL ;
}
[解决办法]

探讨
m_pConn->Open("Provider=SQLOLEDB.1;Server=PC-201012170947\\WINCC;DataBase=;UID=sa;PWD=","","",adConnectUnspecified);
这是SQL 2000的连接字符串,你把它加到下面的相应的语句里:

#import "C:\Program Files\Common Files\Syste……

热点排行