高分请教:vc如何直连SQLSERVER,注:不通过ODBC.

zhilong 2002-10-08 09:38:31
高分请教:vc如何直连SQLSERVER,注:不通过ODBC.
...全文
146 16 打赏 收藏 转发到动态 举报
写回复
用AI写文章
16 条回复
切换为时间正序
请发表友善的回复…
发表回复
青蛙王子 2002-10-09
  • 打赏
  • 举报
回复
Ado 性能最好!
zhilong 2002-10-09
  • 打赏
  • 举报
回复
那请问哪一种方式的速度更快一些呢。我要处理大量的数据。不然服务器就太忙了。
ice_river_feng 2002-10-09
  • 打赏
  • 举报
回复
对,直接采用DB Library一套API就可以了:
LOGINREC *login;
DBPROCESS *dbproc;

dbinit();
login = dblogin();
DBSETLUSER(login,value);//用户名
DBSETLPWD(login,value);//用户密码
dbproc = dbopen(login,servername);//数据库服务器名称
dbfreelogin(login);

这样就可以了。
gxy371 2002-10-09
  • 打赏
  • 举报
回复
study&up
shanhe 2002-10-09
  • 打赏
  • 举报
回复
如果直接连,不通过ODBC甚至不通过ado之类的,你可以考虑DB Libary for c
可以直接通过c函数库访问SQL server。
不过,除了为其他语言开发数据库驱动程序,否则我看不到这种方式的优点
zhilong 2002-10-09
  • 打赏
  • 举报
回复
谢了。
qing_li73 2002-10-09
  • 打赏
  • 举报
回复
see this :

http://www.codeproject.com/database/caaadoclass1.asp
qing_li73 2002-10-09
  • 打赏
  • 举报
回复
see this :

http://www.codeproject.com/database/caaadoclass1.asp
fishboyzyf 2002-10-09
  • 打赏
  • 举报
回复
同意small_wei的见解!
功名半纸 2002-10-09
  • 打赏
  • 举报
回复
建议使用ADO!如果你不是用游标的话!!

如果是!建议使用RDO!
sgsh51 2002-10-08
  • 打赏
  • 举报
回复
通过ADO即可,再你想连接数据库的地方写上下面的代码即可,注其中字符串SQL,Uid以及Pwd与你建的数据库相关联,要根据你数据库的实际情况作一点改动,如数据库名,登陆用户名,密码,要稍微改动一下。
::CoInitialize(NULL);
_ConnectionPtr pConn;

pConn.CreateInstance(__uuidof(Connection));
CString SQL="Provider=SQLOLEDB;Data Source=gsh;Initial Catalog=考试系统";
CString Uid="sa",Pwd="564";
pConn->Open((_bstr_t)SQL,(_bstr_t)Uid,(_bstr_t)Pwd,NULL);
zhilong 2002-10-08
  • 打赏
  • 举报
回复
呵呵。重谢,我试试。
small_wei 2002-10-08
  • 打赏
  • 举报
回复
在VC中使用ADO来访问SQLSERVER数据库的工作主要注意以下几步:
1.先把ADO的DLL文件import进来;
2.需要使用sqloledb的Provider;
3.要注意smart pointer的适当的使用;
4.建立数据库连接,进行操作。

下面是一段可行的代码:

#import "c:\Program Files\Common Files\System\ADO\msado15.dll" no_namespace rename("EOF", "EndOfFile")

...

CoInitializeEx(NULL, COINIT_APARTMENTTHREADED);
_ConnectionPtr pConn;
_RecordsetPtr pRs;
//注意使用sqloledb的Provider
_bstr_t strCnn("Provider=sqloledb;DSN=dsnname;UID=userid;PASSWORD=password;Trusted_connection=yes;");

HRESULT hr = pConn.CreateInstance(__uuidof(Connection));
if(FAILED(hr))
{
::MessageBox(NULL,"Failed to create connection",NULL,MB_OK+MB_ICONSTOP);
}
try
{
pConn->Open(BSTR(strCnn),"","",NULL);
}
catch(_com_error &e)
{
_bstr_t bstrDescription(e.Description());
::MessageBox(NULL,(LPCSTR)(bstrDescription) ,NULL,MB_OK+MB_ICONSTOP);
}

pRs.CreateInstance(__uuidof(Recordset));

int j;
CString strOpen;

strOpen="Select * from tablename where ..."; //SQL 查询语句
j=0;
pRs->Open((LPCSTR)strOpen, _variant_t((IDispatch *)pConn,true), adOpenStatic, adLockReadOnly,adCmdText);
pRs->MoveFirst();
try
{
while(!(pRs->ADOEOF))
{
COLNAME1[j]=(LPCSTR) (_bstr_t) pRs->GetCollect("COL1"); //COL1, COL2 等为表中字段名
COLNAME2[j]=(LPCSTR) (_bstr_t) pRs->GetCollect("COL2"); //COLNAME1等存放取出来的字段内容
COLNAME3[j]=(LPCSTR) (_bstr_t) pRs->GetCollect("COL3");
pRs->MoveNext();
j++;
}
pRs->Close();
}
catch(_com_error &e)
{
_bstr_t bstrDescription(e.Description());
::MessageBox(NULL,(LPCSTR)(bstrDescription) ,NULL,MB_OK+MB_ICONSTOP);
}
zhilong 2002-10-08
  • 打赏
  • 举报
回复
能再祥细说明一下如何使用ADO吗?
small_wei 2002-10-08
  • 打赏
  • 举报
回复
ADO
yellowdawnhlm 2002-10-08
  • 打赏
  • 举报
回复
DAO,OLEDB

16,472

社区成员

发帖
与我相关
我的任务
社区描述
VC/MFC相关问题讨论
社区管理员
  • 基础类社区
  • Web++
  • encoderlee
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

        VC/MFC社区版块或许是CSDN最“古老”的版块了,记忆之中,与CSDN的年龄几乎差不多。随着时间的推移,MFC技术渐渐的偏离了开发主流,若干年之后的今天,当我们面对着微软的这个经典之笔,内心充满着敬意,那些曾经的记忆,可以说代表着二十年前曾经的辉煌……
        向经典致敬,或许是老一代程序员内心里面难以释怀的感受。互联网大行其道的今天,我们期待着MFC技术能够恢复其曾经的辉煌,或许这个期待会永远成为一种“梦想”,或许一切皆有可能……
        我们希望这个版块可以很好的适配Web时代,期待更好的互联网技术能够使得MFC技术框架得以重现活力,……

试试用AI创作助手写篇文章吧