㈠ MFC数据库编程源代码
10.Sql Server7.0/2000数据库
/*
#import "c:\Program Files\Common Files\System\ADO\msado15.dll" \
no_namespace rename("EOF", "EndOfFile")
*/
CoInitialize(NULL); // 初始化OLE/COM库环境 ,为访问ADO接口做准备
_RecordsetPtr m_pRecordset("ADODB.Recordset");
_ConnectionPtr m_pConnection("ADODB.Connection");
_bstr_t bstrSQL("select * from stu_info"); //查询语句
char * query_cmd = "DELETE FROM stu_info WHERE sname = ’本拉登’";
try
{
// 创建Connection对象
m_pConnection.CreateInstance("ADODB.Connection");
// 设置连接字符串,必须是BSTR型或者_bstr_t类型
_bstr_t strConnect= "Provider=SQLOLEDB;Server=(local);Database=db2; uid=; pwd=;";
//若数据库在网络上则Server为形如(192.168.1.5,3340)
//用户sa和密码123只是针对我的库
m_pConnection->Open(strConnect,"","",adModeUnknown);
if(m_pConnection==NULL)
cerr<<"Lind data ERROR!\n";
// 创建记录集对象
m_pRecordset.CreateInstance(_uuidof(Recordset));
// 取得表中的记录
m_pRecordset->Open(bstrSQL,m_pConnection.GetInterfacePtr(),
adOpenDynamic,adLockOptimistic,adCmdText);
_variant_t vsnum,vsname,vsage,vssex,vsmajor; //对应库中的snum,sname,sage,ssex,smajor
cout << "学号 姓名 年龄 姓别 专业";
cout << "\n----------------------------------------------------------------\n";
while (!m_pRecordset->EndOfFile)
{
vsnum = m_pRecordset->GetCollect(_variant_t((long)0));//这儿给字段编号和字段名都可以
vsname = m_pRecordset->GetCollect("sname");
vsage = m_pRecordset->GetCollect("sage");
vssex = m_pRecordset->GetCollect("ssex");
vsmajor = m_pRecordset->GetCollect("smajor");
if (vsnum.vt != VT_NULL && vsname.vt != VT_NULL && vsage.vt != VT_NULL
&& vssex.vt != VT_NULL && vsmajor.vt != VT_NULL)
{
cout.setf(ios::left);
cout << setw(14) << (char*)(_bstr_t)vsnum;
cout << setw(14) << (char*)(_bstr_t)vsname;
cout << setw(8) << vsage.lVal;
cout << setw(8) << (char*)(_bstr_t)vssex;
cout <<setw(20) << (char*)(_bstr_t)vsmajor;
cout.unsetf(ios::left);
cout << endl;
}
m_pRecordset->MoveNext(); ///移到下一条记录
}
cout << "\n----------------------------------------------------------------\n";
cout << "\n请输入你要添加的学生信息\n";
cout << "学号:";
cin >> student.snum;
cout << "\n姓名:";
cin >> student.sname;
cout << "\n年龄:";
cin >> student.sage;
cout << "\n姓别:";
cin >> student.ssex;
cout << "\n专业:";
cin >> student.smajor;
m_pRecordset->MoveFirst(); //移动到第一条记录
m_pRecordset->AddNew(); ///添加新记录
m_pRecordset->PutCollect("snum",_variant_t(student.snum));
m_pRecordset->PutCollect("sname",_variant_t(student.sname));
m_pRecordset->PutCollect("sage",_variant_t(student.sage));
m_pRecordset->PutCollect("ssex",_variant_t(student.ssex));
m_pRecordset->PutCollect("smajor",_variant_t(student.smajor));
m_pRecordset->Update();
m_pConnection->Execute(query_cmd,NULL,1); //用Execute执行sql语句来删除
m_pRecordset->Close(); // 关闭记录集
}
// 捕捉异常
catch(_com_error e)
{
// 显示错误信息
cerr << "\nERROR:" << (char*)e.Description();//抛出异常
}
if(m_pConnection->State)
m_pConnection->Close();
::CoUninitialize();
20.数据库存入二进制字段数据
/*
#import "c:\Program Files\Common Files\System\ADO\msado15.dll" \
no_namespace rename("EOF", "EndOfFile")
*/
CoInitialize(NULL);
_RecordsetPtr pRs=NULL;
_StreamPtr pStream=NULL;
pRs.CreateInstance(_uuidof(Recordset));
pStream.CreateInstance(__unidof(Stream));
_bstr_t ConnectString(("Provider=Microsoft.Jet.OLEDB.4.0;Data Source=%%1;Persist Security Info=False"); //C:\\mydb.mdb
pRs->Open(_bstr_t("Blob"),ConnectString,adOpenKeyset,adLockOptimistic,adCmdTable);
_variant vtSource;
vtSource.vt=VT_ERROR;
_bstr_t bstrUser(L"");
_bstr_t bstrPass(L"");
pStream->Type=adTypeBinary;
pStream->Open(vtSource,adModeUnknown,adOpenStreamUnspecified,bstrUser,bstrPass);
pStream->LoadFromFile(_bstr_t(%%3)); //"C:\\mypic.bmp"
pRs->AddNew();
pRs->Fields->GetItem(_variant_t(%%2))->put_Value(_variant_t(pStream->Read(adReadAll))); //"Image"
pRs->();
pStream->Close();
pRs->Close();
CoUninitialize();
21.数据库取出二进制字段数据
/*
#import "c:\Program Files\Common Files\System\ADO\msado15.dll" \
no_namespace rename("EOF", "EndOfFile")
*/
CoInitialize(NULL);
_RecordsetPtr pRs=NULL;
_StreamPtr pStream=NULL;
pRs.CreateInstance(_uuidof(Recordset));
pStream.CreateInstance(__unidof(Stream));
_bstr_t ConnectString(("Provider=Microsoft.Jet.OLEDB.4.0;Data Source=%%1;Persist Security Info=False");//C:\\mydb.mdb
pRs->Open(_bstr_t("Blob"),ConnectString,adOpenKeyset,adLockOptimistic,adCmdTable);
pStream->Write(_variant_t(pRs->Fields->GetItem(_variant_t(%%2))->GetValue())); //"Image"
pStream->SaveToFile(_bstr_t(%%3),adSaveCreateOverWrite); //"C:\\mypic.bmp"
pStream->Close();
pRs->Close();
CoUninitialize();
㈡ MFC ODBC数据库编程
给你个实例 只是一部分 应该有你要的全部东西了 至于变量与控件关联,用一下VC6.0的winzard就 会明白了 快捷键 ctrl+w
//////////////cpp部分
BOOL Subjectdlg::OnInitDialog()
{
CDialog::OnInitDialog();
// TODO: Add extra initialization here
CString sqlStr;
sqlStr="SELECT * FROM tb_subject";
mysubjectset = new Subjectinfo(&((CStudentsysApp*)AfxGetApp())->m_DB);
if(!mysubjectset->Open(AFX_DB_USE_DEFAULT_TYPE,sqlStr)) //打开数据表
{
AfxMessageBox("tb_subject表打开失败!");
}
return TRUE; // return TRUE unless you set the focus to a control
// EXCEPTION: OCX Property Pages should return FALSE
}
bool Subjectdlg::DisplayRecord()
{
if(mysubjectset->IsEOF()&&mysubjectset->IsBOF()) //判断是否移动到了开头和结尾
{
m_subjectname = "";
m_subjectid = "";
}
else
{
if(mysubjectset->IsBOF()) //移动到了开头,就向后移动
{
mysubjectset->MoveNext();
}
else //否则前移
{
if(mysubjectset->IsEOF())
{
mysubjectset->MovePrev();
}
}
}
m_subjectname = mysubjectset->m_subject; //对应变量赋值
m_subjectid = mysubjectset->m_code;
UpdateData(FALSE);
return TRUE;
}
////////////那几个指针
Subjectinfo* mysubjectset;
Subjectinfo* mysubjectset_find;
Subjectinfo* myclass_subject_findref;
///////////
subjectinfo是连接数据源的那个类
㈢ 学习MFC,看孙鑫视频,感觉太慢了,又难理解,要怎么学
我自己总结的步骤,不一定正确,仅供参考
1、先了解基本Windows编程,注意是了解,不用掌握。然后再看MFC编程。
2、搞清楚MFC和Windows编程的关系,别在意太多实现细节,只要搞清楚大体流程就行。因为这只是让你用MFC用得踏实,否则总是感觉飘在云彩里,不知道MFC背着你搞了些什么。
3、然后学对话框编程,搞清楚那些代码是自动生成的,那些自动生成的你先不要去管。然后做个计算器,掌握控件编程,就能大体知道MFC运作流程了。
4、搞清楚文档-视图结构,然后学单文档编程。搞清楚各个类之间的关系。视图类从CFormView类开始学,然后再慢慢搞其他视图类。
5、最后学多文档视图。
6、然后学什么多线程开发啊,数据库啊,其实就是往前面学的骨头里添肉了。
注意:学的时候主要是搞清楚框架,重点学习如何应用MFC,也就是说你要搞清楚自己在干嘛。对于MFC的原理、类之间的关系、消息映射机制等等,知道那么回事儿、知道谁会包含或调用谁就行,千万别是纠结MFC那些内部原理是如何实现的,对于使用MFC的人来说,那意义真的不大,纯属浪费时间。像孙鑫视频里花了大量时间去讲MFC内部原理的实现方法,领着你去追MFC内部代码。你连MFC能干嘛都不知道,他就领着你跟踪MFC内部代码,告诉你winmain是如何被调用的。其实对于新手来说,要的就是他跟踪代码之后得到的结论,那结论还就是几句话而已。所以你看他的视频会觉得慢,而且是很慢。并且,新手的学习路应该是先建立整体框架,然后逐步深入。而孙鑫的视频里,前面先领着你跟踪代码,弄晕你。后续章节就东一下、西一下,视图类不从最简单的类开始搞,上来就是最复杂的绘图类,给你很不系统的讲CDC。你要是跟着他的思路学,没有点儿功底,一遍肯定不行。往往要回头再看多次,你有那个闲工夫还不如找几本老外的书,学一遍就能写程序了。
另外,选书的原则,一是不要让他领着你探究MFC内部实现;二是避免买那种控件属性罗列的书。
㈣ mfc 数据库编程 (odbc)
没时间详细说 给你个例子 有时间晚上交流
qq 469392501
void CMemoDBSDlg::OnBtnDelMember()
{
// TODO: Add your control notification handler code here
//获取要删除的成员记录所在的行.
int nItem = m_listMember.GetNextItem(-1, LVNI_SELECTED);
if(nItem == -1){
AfxMessageBox("没有选择要删除的成员");
return;
}
//获取成员ID.
int id = atoi(m_listMember.GetItemText(nItem,0));
TRY{
CString sql;
//从数据库中删除记录.
sql.Format("DELETE member_tab "
"where member_id = %d",id);
TRACE(sql);
m_db.ExecuteSQL(sql);
//从列表控件中删除该记录.
m_listMember.DeleteItem(nItem);
}
CATCH(CDBException,ex)
{
AfxMessageBox (ex->m_strError);
AfxMessageBox (ex->m_strStateNativeOrigin);
}
AND_CATCH(CException,e)
{
TCHAR szError[100];
e->GetErrorMessage(szError,100);
AfxMessageBox (szError);
}
END_CATCH
}
void CMemoDBSDlg::OnBtnAddType()
{
// TODO: Add your control notification handler code here
//添加备注类型.
//初始化备注类型对话框实例.
CMemoTypeDlg dlg;
if(dlg.DoModal() == IDOK){
//从对话框中获取新添加的备注类型.
CString strName = dlg.m_strTypeName;
TRY{
CRecordset rs(&m_db);
//获取最大的类型ID值.
rs.Open(CRecordset::dynaset,
"Select max(TYPE_ID) from MEMO_TYPE_TAB");
//初始化新类型ID值为1.
int newTypeID = 1;
//如果数据库已经有类型记录,则新的类型ID为最大类型ID+1
if(!rs.IsEOF()) {
CDBVariant var;
rs.GetFieldValue((short)0, var, SQL_C_SLONG);
if (var.m_dwType != DBVT_NULL)
newTypeID = var.m_iVal + 1;
}
CString sql;
//向数据库中添加新的备忘录类型记录.
sql.Format("Insert into MEMO_TYPE_TAB(TYPE_ID,"
"TYPE_NAME) "
"VALUES("
"%d,'%s')",newTypeID,strName);
TRACE(sql);
m_db.ExecuteSQL(sql);
//向界面中添加记录行.
InsertMemoTypeItem(newTypeID,strName);
}
CATCH(CDBException,ex)
{
AfxMessageBox (ex->m_strError);
AfxMessageBox (ex->m_strStateNativeOrigin);
}
AND_CATCH(CException,e)
{
TCHAR szError[100];
e->GetErrorMessage(szError,100);
AfxMessageBox (szError);
}
END_CATCH
}
}
void CMemoDBSDlg::OnBtnModType()
{
// TODO: Add your control notification handler code here
//获取要修改的类型记录
int nItem = m_listType.GetNextItem(-1, LVNI_SELECTED);
//如果没有选择要修改的纪录,返回.
if(nItem == -1){
AfxMessageBox("没有选择要修改的类型");
return;
}
//获取要修改记录的ID和名称.
int id = atoi(m_listType.GetItemText(nItem,0));
CString name = m_listType.GetItemText(nItem,1);
//初始化备注类型对话框.
CMemoTypeDlg dlg;
//给对话框的变量赋值.
dlg.m_strTypeName = name;
if(dlg.DoModal() == IDOK){
//获取修改后的数据.
CString strName = dlg.m_strTypeName;
TRY{
CString sql;
//更新记录.
sql.Format("UPDATE MEMO_TYPE_TAB SET TYPE_NAME = '%s' "
" WHERE TYPE_ID = %d",strName,id);
TRACE(sql);
m_db.ExecuteSQL(sql);
//修改界面的值.
m_listType.SetItemText(nItem,1,strName);
}
CATCH(CDBException,ex)
{
AfxMessageBox (ex->m_strError);
AfxMessageBox (ex->m_strStateNativeOrigin);
}
AND_CATCH(CException,e)
{
TCHAR szError[100];
e->GetErrorMessage(szError,100);
AfxMessageBox (szError);
}
END_CATCH
}
}
void CMemoDBSDlg::OnBtnDelType()
{
// TODO: Add your control notification handler code here
//获取要删除的记录所在的行.
int nItem = m_listType.GetNextItem(-1, LVNI_SELECTED);
//如果没有选择,返回.
if(nItem == -1){
AfxMessageBox("没有选择要删除的类型");
return;
}
//获取要删除的类型ID
int id = atoi(m_listType.GetItemText(nItem,0));
TRY{
CString sql;
sql.Format("DELETE MEMO_TYPE_TAB "
"where TYPE_ID = %d",id);
TRACE(sql);
//删除类型记录
m_db.ExecuteSQL(sql);
//删除界面中的记录.
m_listType.DeleteItem(nItem);
}
CATCH(CDBException,ex)
{
AfxMessageBox (ex->m_strError);
AfxMessageBox (ex->m_strStateNativeOrigin);
}
AND_CATCH(CException,e)
{
TCHAR szError[100];
e->GetErrorMessage(szError,100);
AfxMessageBox (szError);
}
END_CATCH
}
void CMemoDBSDlg::OnBtnAddMemo()
{
// TODO: Add your control notification handler code here
//初始化备忘录信息对话框.
CMemoInfoDlg dlg;
//获取所有的家庭成员的名称.
for(int i = 0 ; i < m_listMember.GetItemCount() ; i++ )
dlg.m_strMemberArray.Add(m_listMember.GetItemText(i,1)) ;
//获取所有的类型信息.
for(i = 0 ; i < m_listType.GetItemCount() ; i++ )
dlg.m_strTypeArray.Add(m_listType.GetItemText(i,1)) ;
//打开对话框,添加新的记录.
if(dlg.DoModal() == IDOK){
//从对话框中获取记录值.
CString strName = dlg.m_strMember;
CString strType = dlg.m_strMemoType;
CString strHappenDate = dlg.m_oleDate.Format("%Y-%m-%d")
+ " " + dlg.m_oleTime.Format("%H:%M:%S");
CString strOperDate = COleDateTime::GetCurrentTime().Format("%Y-%m-%d %H:%M:%S");
int isEvent = dlg.m_isEvent;
CString strCost = dlg.m_strCost;
CString strMemo = dlg.m_strMemoInfo;
TRY{
CRecordset rs(&m_db);
CString sql;
//根据成员姓名获取成员ID值.
sql.Format("Select MEMBER_ID from MEMBER_TAB where "
"MEMBER_NAME = '%s'",strName);
rs.Open(CRecordset::dynaset,sql);
int memberID = 1;
if(!rs.IsEOF()) {
CDBVariant var;
rs.GetFieldValue((short)0, var, SQL_C_SLONG);
if (var.m_dwType != DBVT_NULL)
memberID = var.m_iVal;
}
rs.Close();
//根据备忘录类型获取备忘录类型ID.
sql.Format("Select TYPE_ID from MEMO_TYPE_TAB where "
"TYPE_NAME = '%s'",strType);
rs.Open(CRecordset::dynaset,sql);
int typeID = 1;
if(!rs.IsEOF()) {
CDBVariant var;
rs.GetFieldValue((short)0, var, SQL_C_SLONG);
if (var.m_dwType != DBVT_NULL)
typeID = var.m_iVal;
}
rs.Close();
//从SEQ_MEMO_ID序列中获取下一个值.这个值就是新的备忘录ID.
rs.Open(CRecordset::dynaset,
"Select max(MEMO_ID) from MEMO_INFO_TAB");
int memoID = 1;
if(!rs.IsEOF()) {
CDBVariant var;
rs.GetFieldValue((short)0, var, SQL_C_SLONG);
if (var.m_dwType != DBVT_NULL)
memoID = var.m_iVal+1;
}
sql.Format("Insert into MEMO_INFO_TAB(MEMO_ID,"
"MEMBER_ID,OPER_DATE,HAPPEN_DATE,"
"IS_BIGEVENT,EVENT_COST,TYPE_ID,MEMO_TEXT) "
"VALUES("
"%d,%d,'%s'"
",'%s',%d,'%s'"
",%d,'%s')",memoID,memberID,
strOperDate,strHappenDate,isEvent,strCost,typeID,strMemo);
TRACE(sql);
m_db.ExecuteSQL(sql);
//向界面中插入新的纪录.
InsertMemoInfoItem(memoID,strName,strOperDate,strHappenDate,isEvent,strCost,strType,strMemo) ;
}
CATCH(CDBException,ex)
{
AfxMessageBox (ex->m_strError);
AfxMessageBox (ex->m_strStateNativeOrigin);
}
AND_CATCH(CException,e)
{
TCHAR szError[100];
e->GetErrorMessage(szError,100);
AfxMessageBox (szError);
}
END_CATCH
}
}
㈤ MFC ODBC 数据库编程
m_rsDataSet.m_strFilter="Desk_code='"+m_strCode;
m_rsDataSet.m_strFilter+="'";
外面一个双引号表示字符串,里面一个单引号是字符串中的一个符号。
这么说吧,如果m_strCode是abc的话
那么通过这两句后,
m_rsDataSet.m_strFilter的值就是Desk_code='abc'
这两个单引号是给数据库用的。在sql语句中表示一个字符串
㈥ MFC数据库编程问题
试了一下,代码没有什么问题,连接和访问表都可以成功,不过没有用LZ的数据库表格式,自己乱写了一个。
如果连接出问题,可以检查一下数据库文件是否在程序可以访问的目录,或者DataSource给个完整路径试试。
----
发现一个小问题(不知道是不是贴出来的文字不对)
在连接字符串中间有个换行,最好写在一行,如果一定要换行,在后面加上\
㈦ 如何进行MFC数据库编程
MFC数据库编程包含如下:
首先,你要选择使用什么方式连接数据库,有ODBC,ADO等,
其他,就是sql语句操作数据库了,对后是怎么存储操作数据。
㈧ MFC数据库编程OLEDB定义CCommand<CAccessor<CHouseAccessor>>rs;
妹子啊现如今想找个好男人不容易啊你可要好好把握哦。我也是朋友介绍的咨询师,在他的指引下我顺利的通过了老公那一关,我现在的生活很不错;哪个男人都希望是自己的女人的唯一!所以我也向你推荐:如果有需要,可以加咨询师扣扣 号,前四位数:陆四一六、后五位数:二零⑦八捌;他也会指导你。希望你能得到和我一样的幸福.祝你成功
㈨ 关于编程和数据库!MFC(C++)
如果你的系统是在windows平台下的话,sqlserver肯定是不需要装驱动就能用的,当然如果你用数据库肯定需要安装相应的数据库软件,不然,根本没有库,你程序连接什么呢?是可以通过程序语言来控制数据库的写入,删除的,这个和标准的sql语句没有差别,你只需要会用就可以了,一般在windows平台线面访问数据的操作可以使用ado 和一些数据库控件,比如说datagrid
㈩ MFC数据库编程,想设置权限,普通用户登入比管理员登入显示的表中数据要少一些。
void CLoginDlg::InitDlgPara()
{
if(m_pOperate_List)
{
delete []m_pOperate_List;
m_pOperate_List=NULL;
}
m_Count=0;
while (m_CombOper.GetCount())
{
m_CombOper.DeleteString(m_CombOper.GetCount()-1);
}
m_StaPass.SetWindowText("");
m_Count=ReadOperateWithOperateID(&g_adoRecordSet,0,m_pOperate_List);
for(int i=0;i<m_Count;i++)
{
m_CombOper.InsertString(m_CombOper.GetCount(),m_pOperate_List[i].Operate_Name);
m_CombOper.SetItemData(m_CombOper.GetCount()-1,m_pOperate_List[i].Operate_ID);
}
m_CombOper.SetCurSel(0);
m_StaPass.SetFocus();
m_StaPass.SendMessage(EM_SETSEL,(int) 0,(int)200);
m_StaPass.Invalidate(TRUE);
}
void CLoginDlg::OnOK()
{
UpdateData(TRUE);
if (m_pOperate_List)
{
int n=m_CombOper.GetCurSel();
if (m_Pass!=m_pOperate_List[n].Operate_Password)
{
AfxMessageBox("密码错误");
m_StaPass.SetFocus();
m_StaPass.SendMessage(EM_SETSEL,(int) 0,(int)200);
m_StaPass.Invalidate(TRUE);
return;
}
else
{
memcpy(&g_Cur_Operate,m_pOperate_List+n,sizeof(TABLE_OPERATE));
CDialog::OnOK();
}
}
else
{
AfxMessageBox("open database error");
this->EndDialog(IDNO);
}
CDialog::OnOK();
}
int ReadOperateWithOperateID(void *pVoid,int Operate_ID,TABLE_OPERATE *&pOperate_List)
{
CAdoRecordSet *pRecord=NULL;
CDBInterface *pDBInterface=NULL;
char *pTableBuff=NULL;
int iBuffLen=0;
#if DATABASE_METHOD == DATABASE_METHOD_ADO
pRecord=(CAdoRecordSet *)pVoid;
#else if DATABASE_METHOD == DATABASE_METHOD_ODBC
pDBInterface=(CDBInterface *)pVoid;
#endif
int nCount=0;
if (pOperate_List)
{
free(pOperate_List);
pOperate_List=NULL;
}
if ((pRecord==NULL&&pDBInterface==NULL) || Operate_ID<0 )
{
return 0;
}
char sql[1024];
TABLE_OPERATE *pReturn=NULL;
BOOL bRet=FALSE;
switch(Operate_ID)
{
case 0:
sprintf(sql,"SELECT TOP 5000 * FROM TABLE_Operate order by ID");
break;
default :
sprintf(sql,"SELECT TOP 5000 * FROM TABLE_Operate\
where ID=%d ",Operate_ID);
}
#if DATABASE_METHOD == DATABASE_METHOD_ADO
bRet=pRecord->Open(sql);
#else if DATABASE_METHOD == DATABASE_METHOD_ODBC
bRet=pDBInterface->odbc_select(sql,pTableBuff,&iBuffLen,FALSE);
#endif
if (bRet>0)
{
#if DATABASE_METHOD == DATABASE_METHOD_ADO
nCount=pRecord->GetRecordCount();
#else if DATABASE_METHOD == DATABASE_METHOD_ODBC
nCount=bRet;
#endif
if (nCount<=0)
{
return 0;
}
nCount=nCount>MAX_RECORDSET_NUM?MAX_RECORDSET_NUM:nCount;
pReturn=(TABLE_OPERATE *)malloc(sizeof(TABLE_OPERATE)*nCount);
memset(pReturn,0x0,sizeof(TABLE_OPERATE)*nCount);
#if DATABASE_METHOD == DATABASE_METHOD_ADO
for(int i=0;i<nCount;i++)
{
pRecord->GetCollect((long)0,(pReturn+i)->Operate_ID);
CString sTemp;
pRecord->GetCollect(1,sTemp);
sprintf((pReturn+i)->Operate_Name,sTemp);
pRecord->GetCollect(2,sTemp);
sprintf((pReturn+i)->Operate_Password,sTemp);
pRecord->GetCollect(3,(pReturn+i)->Operate_Degree);
pRecord->GetCollect(4,(pReturn+i)->Operate_Degree_ID);
pRecord->GetCollect(5,(pReturn+i)->Operate_Dept_ID);
pRecord->GetCollect(6,(pReturn+i)->Operate_Create_Time);
pRecord->GetCollect(7,sTemp);
sprintf((pReturn+i)->Operate_Tele_Code,sTemp);
pRecord->GetCollect(8,sTemp);
sprintf((pReturn+i)->Operate_Remark,sTemp);
pRecord->MoveNext();
}
#else if DATABASE_METHOD == DATABASE_METHOD_ODBC
memcpy(pReturn,pTableBuff,sizeof(TABLE_OPERATE)*nCount);
if (pTableBuff)
{
delete pTableBuff;
pTableBuff=NULL;
}
#endif
}
pOperate_List=pReturn;
return nCount;
}