一个很简单的基础问题:VC && SQL Server 请问怎样用VC在SQL SERVER 2000中建表,添加记录,修改记录,删除记录?希望介绍得详细一点,最好有相关原代码. 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 http://www.vckbase.com/document/viewdoc/?id=215http://www.vckbase.com/document/viewdoc/?id=307 全部是通过SQL语句或者存储过程来完成,至于连接,执行SQL语句,论坛里面不下数百篇文章了,源代码也很多,最好自己先看一下这方面的书,简单代码:int DBOperator::IniDBEv(char* Temp){ ::CoInitialize(NULL); HRESULT hr=m_pCon.CreateInstance(__uuidof(Connection)); if(FAILED(hr))return FALSE; _bstr_t strConnect=(_bstr_t)_com_util::ConvertStringToBSTR(MyCondata.ConnectString ); //connecting to the database server now: try{m_pCon->Open(strConnect,"","",NULL);} catch (_com_error &e) {// ::MessageBox(NULL,e.Description()+"\n\r"+MyCondata.ConnectString ,"¾¯¸æ",MB_OK | MB_ICONWARNING); strcpy(Temp,e.Description()); CoUninitialize(); return FALSE; } return 1;}/***************************************************************/º¯Êý£º R030602004/º¯ÊýÃèÊö£º °´Ìõ¼þ´ò¿ªÊý¾Ý¿â¼Ç¼¼¯,ÖØÔغ¯Êý/´«ÈëÖµ£º Ñ¡ÔñÌõ¼þÓï¾ä,´ý¶¨µÄ¼Ç¼¼¯/´«³öÖµ£º Êý¾ÝµÄ¼Ç¼¼¯/ÀúÊ·£º ´´½¨£ºAjun,2003-7-22,Ð޸ģ¬ajun 2003-7-22/±¸×¢£º ÎÞ****************************************************************/int DBOperator::OpenRecordset(char *StrSQL, _RecordsetPtr Rst){ try{ Rst->CursorLocation=adUseClient; Rst->Open((char*)_bstr_t(StrSQL),m_pCon.GetInterfacePtr(),adOpenDynamic,adLockPessimistic,adCmdText); if(VARIANT_FALSE==Rst->EndOfFile) { } } catch(_com_error e) { char Temp[1024]; Sys.GetSysTime(Temp); strcat(Temp," "); strcat(Temp,e.Description()); AddMessageStatus(NULL,Temp); return FALSE; } return TRUE;}/***************************************************************/º¯Êý£º R030602002/º¯ÊýÃèÊö£º Ö´ÐÐSQLÓï¾ä/´«ÈëÖµ£º CString SQLStr¼´SQLÓï¾ä/´«³öÖµ£º ÎÞ/ÀúÊ·£º ´´½¨£ºAjun,2003-6-5/±¸×¢£º ½öÏÞÓÚÔö¼ÓºÍɾ³ý£¬Ð޸ģ¨Ñ¡Ôñ²»Ê¹Óã©****************************************************************/int DBOperator::ExecuteRecord(char *SQLStr,char* Error){ try{ m_pCon->BeginTrans(); m_pCon->Execute ((_bstr_t)SQLStr,NULL,adOptionUnspecified); m_pCon->CommitTrans(); return 1; }catch(_com_error e){ m_pCon->RollbackTrans(); strcpy(Error,e.Description ());// MessageBox(NULL,SQLStr,e.Description(),MB_OK); return 0; }} 先看看上面关于ADO的一些基本操作,对SQL数据库,基本上相同创建一个表的例子:void CMainFrame::CreateTable(){ CString sql; _variant_t RecordsAffected; sql="create table TempTable(ClassID char(3),DotID char(8),StLong char(9),StLat char(10),InsTime datetime)"; try { theApp.m_pconn->Execute(_bstr_t(sql),&RecordsAffected,adCmdText); } catch(_com_error e) { AfxMessageBox("创建数据库表失败!"); }} 对添加、删除,修改,只要执行对应的SQL语句就可以了,方法和创建数据库一样的。 添加、删除,修改,执行对应的SQL语句就可以了Insert Delete,Update 请教一个简单的问题: 用VC来操作数据库(不论是用ODBC还是ADO)是不是一定要用MFC? 能不能直接调用存储过程?? 请问有异步不就是非堵塞的吗?//怎么网上还有什么异步非堵塞之类的东西????? 怎样得到当前运行进程是属于那个用户 求<<Visual.C++ OpenGL.应用程序开发>>电子书 用vc做个界面如何和做的程序连到一起 请教一个网络文件传输问题 相关得到消息的问题 对VC开发全文检索有经验的进。高分奉送! *** 问问题了, 再xp下面,使用了 自己的 gina后,不能自动登录问题 ,谁能解决,100分*** 关于进程问题:shell创建了子进程,如何切断和shell的母子关系 求助:怎么用VC++绘制波形图啊? 为什么这个函数没有办法挑出循环? 初级问题,请大家指教!谢谢!!!
http://www.vckbase.com/document/viewdoc/?id=307
简单代码:
int DBOperator::IniDBEv(char* Temp)
{
::CoInitialize(NULL);
HRESULT hr=m_pCon.CreateInstance(__uuidof(Connection));
if(FAILED(hr))return FALSE;
_bstr_t strConnect=(_bstr_t)_com_util::ConvertStringToBSTR(MyCondata.ConnectString ); //connecting to the database server now:
try{m_pCon->Open(strConnect,"","",NULL);}
catch (_com_error &e)
{
// ::MessageBox(NULL,e.Description()+"\n\r"+MyCondata.ConnectString ,"¾¯¸æ",MB_OK | MB_ICONWARNING);
strcpy(Temp,e.Description());
CoUninitialize();
return FALSE;
} return 1;
}
/***************************************************************
/º¯Êý£º R030602004/º¯ÊýÃèÊö£º °´Ìõ¼þ´ò¿ªÊý¾Ý¿â¼Ç¼¼¯,ÖØÔغ¯Êý/´«ÈëÖµ£º Ñ¡ÔñÌõ¼þÓï¾ä,´ý¶¨µÄ¼Ç¼¼¯/´«³öÖµ£º Êý¾ÝµÄ¼Ç¼¼¯/ÀúÊ·£º ´´½¨£ºAjun,2003-7-22,Ð޸ģ¬ajun 2003-7-22/±¸×¢£º ÎÞ
****************************************************************/
int DBOperator::OpenRecordset(char *StrSQL, _RecordsetPtr Rst)
{
try{
Rst->CursorLocation=adUseClient;
Rst->Open((char*)_bstr_t(StrSQL),m_pCon.GetInterfacePtr(),adOpenDynamic,adLockPessimistic,adCmdText);
if(VARIANT_FALSE==Rst->EndOfFile)
{
}
}
catch(_com_error e)
{
char Temp[1024];
Sys.GetSysTime(Temp);
strcat(Temp," ");
strcat(Temp,e.Description()); AddMessageStatus(NULL,Temp);
return FALSE;
}
return TRUE;
}
/***************************************************************
/º¯Êý£º R030602002/º¯ÊýÃèÊö£º Ö´ÐÐSQLÓï¾ä/´«ÈëÖµ£º CString SQLStr¼´SQLÓï¾ä/´«³öÖµ£º ÎÞ/ÀúÊ·£º ´´½¨£ºAjun,2003-6-5/±¸×¢£º ½öÏÞÓÚÔö¼ÓºÍɾ³ý£¬Ð޸ģ¨Ñ¡Ôñ²»Ê¹Óã©
****************************************************************/
int DBOperator::ExecuteRecord(char *SQLStr,char* Error)
{
try{ m_pCon->BeginTrans();
m_pCon->Execute ((_bstr_t)SQLStr,NULL,adOptionUnspecified);
m_pCon->CommitTrans();
return 1;
}catch(_com_error e){
m_pCon->RollbackTrans();
strcpy(Error,e.Description ());
// MessageBox(NULL,SQLStr,e.Description(),MB_OK);
return 0;
}
}
创建一个表的例子:
void CMainFrame::CreateTable()
{
CString sql;
_variant_t RecordsAffected;
sql="create table TempTable(ClassID char(3),DotID char(8),StLong char(9),StLat char(10),InsTime datetime)";
try
{
theApp.m_pconn->Execute(_bstr_t(sql),&RecordsAffected,adCmdText);
}
catch(_com_error e)
{
AfxMessageBox("创建数据库表失败!");
}
}
Insert Delete,Update
用VC来操作数据库(不论是用ODBC还是ADO)是不是一定要用MFC? 能不能直接调用存储过程??