摘要:本文主要向大家介绍了VC编程之读写SQL Server的binary类型(VC/MFC),通过具体的内容向大家展示,希望对大家学习VC编程有所帮助。
本文主要向大家介绍了VC编程之读写SQL Server的binary类型(VC/MFC),通过具体的内容向大家展示,希望对大家学习VC编程有所帮助。
示例代码如下,其中CMSSADO为walker简单封装的类,不必关心,重点在代码中标注关键代码部分。为了减少代码,突出重点,代码中没有加入异常处理。walker的编译环境为win7 x64下vs2010,数据库为sql server 2008 R2。
//初始化ADO环境
AfxOleInit();
CMSSADO mss_ado;
CString str;
CString conn_str = _T("Provider=SQLOLEDB;");
conn_str += _T("SERVER=127.0.0.1;");
conn_str += _T("DATABASE=walker_test;");
conn_str += _T("UID=sa;");
conn_str += _T("PWD=xxxxxxx;");
mss_ado.OpenConnection(conn_str);
ADODB::_ConnectionPtr conn = mss_ado.GetConnectionPtr();
CString sql = _T("INSERT INTO IPTbl(UserIP) VALUES(0x11223344)"); //插入
conn->Execute((_bstr_t)sql, NULL, ADODB::adCmdText);
sql = _T("SELECT TOP 1 [UserID], [UserIP] FROM IPTbl"); //读取
ADODB::_RecordsetPtr rs = NULL;
mss_ado.OpenRecordset(sql);
rs = mss_ado.GetRecordsetPtr();
CString UserID = _T(""),
UserIP = _T("");
if (!rs->adoEOF)
{
_variant_t vUserID = rs->GetCollect("UserID");
_variant_t vUserIP = rs->GetCollect("UserIP");
UserID = (TCHAR*)(_bstr_t)(vUserID);
///// begin 关键代码 /////
char *pBuf = NULL;
char bytmp[4];
memset(bytmp, 0, sizeof(bytmp));
SafeArrayAccessData(vUserIP.parray, (void **)&pBuf);
if (pBuf != NULL)
{
memcpy(bytmp, pBuf, sizeof(bytmp));
}
SafeArrayUnaccessData (vUserIP.parray);
wchar_t wc;
CString s;
for(int i=0; i<4; i++)
{
//因为是unicode环境,需要转换char为wchar_t
mbtowc(&wc, (char *)&bytmp[i], MB_LEN_MAX);
s.Format(_T("%X"), wc);
UserIP += s;
}
///// end 关键代码 /////
AfxMessageBox(_T("UserIP: ") + UserIP);
}
sql = _T("UPDATE IPTbl SET UserIP=0x") + UserIP + _T(" WHERE UserID=") + UserID; //修改
conn->Execute((_bstr_t)sql, NULL, ADODB::adCmdText);
//关闭ado环境
AfxOleTerm();
AfxMessageBox(_T("OK"));
*** walker ***
以上就介绍了VC/MFC的学习,希望对VC/MFC有兴趣的朋友有所帮助。了解更多内容,请关注职坐标编程语言VC/MFC频道!
您输入的评论内容中包含违禁敏感词
我知道了
请输入正确的手机号码
请输入正确的验证码
您今天的短信下发次数太多了,明天再试试吧!
我们会在第一时间安排职业规划师联系您!
您也可以联系我们的职业规划师咨询:
版权所有 职坐标-一站式IT培训就业服务领导者 沪ICP备13042190号-4
上海海同信息科技有限公司 Copyright ©2015 www.zhizuobiao.com,All Rights Reserved.
沪公网安备 31011502005948号