pRs1.CreateInstance(__uuidof(Recordset)); pRs1->CursorLocation=adUseClient; pRs1->PutActiveConnection(pConn.GetInterfacePtr()); strSQL="select * from catalog order by cataid"; pRs->Open(_bstr_t(strSQL),vtMissing,adOpenDynamic,adLockBatchOptimistic,adCmdText);
For Standard Security:oConn.Open "Driver={SQL Server};" & _
"Server=MyServerName;" & _
"Database=myDatabaseName;" & _
"Uid=myUsername;" & _
"Pwd=myPassword;"
http://www.codeproject.com/useritems/ConnectionStrings.asp
//connect romote computer
ConnectionPtr m_conn; HRESULT hr;
hr=m_conn.CreateInstance(__uuidof(Connection));
if(!SUCCEEDED(hr))
AfxMessageBox("创建连接失败");
sql="provider=SQLOLEDB;Data Source=127.0.0.1;Initial Catalog=yourDB;User ID=sa;Password=";
try
{
hr=m_conn->Open(_bstr_t(sql),"","",adModeUnknown);
if(SUCCEEDED(hr))
m_bconn=true;
else
{
m_bconn=false;
return false;
}
}
catch (_com_error &e) // Any errors?
{
// Display the error
CString strError;
strError.Format("连接时出错: '%d (%x)'",e.Error(),e.Error() );
strError +="\n";
strError +=e.Description();
AfxMessageBox("连接数据库失败\n"+strError);
return FALSE;
}
注意替换上面的一些数据就可以,远程连接SQL要采用混合验证模式
在cpp文件头应该包含如下:
#define INITGUID
#import "F:\Program Files\Common Files\System\ado\msado15.dll" rename_namespace("ADOCG") rename("EOF","EndOfFile")
using namespace ADOCG;
#include "icrsint.h"
注意盘符
HRESULT hr;
hr=pConn->Open(_com_util::ConvertStringToBSTR("Provider=SQLOLEDB.1;Data Source="+hostname)
,_com_util::ConvertStringToBSTR(username),_com_util::ConvertStringToBSTR(psw),-1);
if(FAILED(hr))
::CoUninitialize();
_variant_t vRowsAffected,sql;
CString ss;
ss="SELECT * FROM ";
ss+=Table;
sql=ss;
pRs->Open(sql,_variant_t((IDispatch *)pConn,true),
adOpenDynamic, adLockOptimistic, adCmdUnknown);
FieldsPtr fields;
fields=pRs->GetFields();
m_Grid->SetRowCount(fields->Count+1);
long i;
try{
for(i=0;i<fields->Count;i++)
{
_variant_t no,value;
no=i;
value=fields->GetItem(no)->GetName();
Item.mask = GVIF_TEXT|GVIF_FORMAT|GVIF_STATE;
Item.nFormat = DT_CENTER|DT_VCENTER|DT_SINGLELINE|DT_END_ELLIPSIS;
Item.state=GVIS_READONLY;
Item.row = i+1;
Item.col = 0;
Item.szText=value.bstrVal;
m_Grid->SetItem(&Item);
value=fields->GetItem(no)->GetDefinedSize();
Item.row = i+1;
Item.col = 2;
Item.szText.Format("%ld",value.intVal);
m_Grid->SetItem(&Item);
}
}
catch(_com_error &e)
{
AfxMessageBox(e.ErrorMessage());
}
#define INITGUID
#import "F:\Program Files\Common Files\System\ado\msado15.dll" rename_namespace("ADOCG") rename("EOF","EndOfFile")
using namespace ADOCG;
#include "icrsint.h"
注意盘符
HRESULT hr;
hr=pConn->Open(_com_util::ConvertStringToBSTR("Provider=SQLOLEDB.1;Data Source="+hostname)
,_com_util::ConvertStringToBSTR(username),_com_util::ConvertStringToBSTR(psw),-1);
if(FAILED(hr))
::CoUninitialize();
_variant_t vRowsAffected,sql;
CString ss;
ss="SELECT * FROM ";
ss+=Table;
sql=ss;
pRs->Open(sql,_variant_t((IDispatch *)pConn,true),
adOpenDynamic, adLockOptimistic, adCmdUnknown);
FieldsPtr fields;
fields=pRs->GetFields();
m_Grid->SetRowCount(fields->Count+1);
long i;
try{
for(i=0;i<fields->Count;i++)
{
_variant_t no,value;
no=i;
value=fields->GetItem(no)->GetName();
Item.mask = GVIF_TEXT|GVIF_FORMAT|GVIF_STATE;
Item.nFormat = DT_CENTER|DT_VCENTER|DT_SINGLELINE|DT_END_ELLIPSIS;
Item.state=GVIS_READONLY;
Item.row = i+1;
Item.col = 0;
Item.szText=value.bstrVal;
m_Grid->SetItem(&Item);
value=fields->GetItem(no)->GetDefinedSize();
Item.row = i+1;
Item.col = 2;
Item.szText.Format("%ld",value.intVal);
m_Grid->SetItem(&Item);
}
}
catch(_com_error &e)
{
AfxMessageBox(e.ErrorMessage());
}
其中
strSQL="Provider=SQLOLEDB;Server=Gooyan;DataBase=SkillsBox;UID=sa;PWD=aaaaaaaa";
Server = Gooyan改成远程IP1.stdafx.h中加入
#import "C:\Program Files\Common Files\System\ado\msado15.dll" no_namespace rename("EOF","adoEOF")
2。app文件的InitInstance中加入
if(S_OK!=OleInitialize(NULL))
{
AfxMessageBox("初始化COM组件库错误");
}
下面就是数据库操作
_ConnectionPtr pConn;
_RecordsetPtr pRs;
CString strSQL;
pConn.CreateInstance(__uuidof(Connection));
pConn->CursorLocation=adUseClient;
strSQL="Provider=SQLOLEDB;Server=Gooyan;DataBase=SkillsBox;UID=sa;PWD=aaaaaaaa";
pConn->Open(_bstr_t(strSQL),"","",-1);
pRs.CreateInstance(__uuidof(Recordset));
pRs->CursorLocation=adUseClient;
pRs->PutActiveConnection(pConn.GetInterfacePtr());
pRs1.CreateInstance(__uuidof(Recordset));
pRs1->CursorLocation=adUseClient;
pRs1->PutActiveConnection(pConn.GetInterfacePtr()); strSQL="select * from catalog order by cataid";
pRs->Open(_bstr_t(strSQL),vtMissing,adOpenDynamic,adLockBatchOptimistic,adCmdText);