Vc++2005+sql2000数据库编程第五篇.doc
Vc+2005+sql2000数据库编程第五篇VC+.Net 2005+sql2000用ADO连接数据库我写的这几篇,都是很简单的,适合新手,因为我也是新手,我一边学,一边把学的东西记录下来,留着以后用,毕竟自己写的用起来最熟悉了。顺便也上传一下分享给大家。高手请绕道。1.忘了说明一个问题,说不重要其实也很重要啊。就是使用vs2005使用unicode还是使用多字节的问题,前几篇,默认的都是unicode。现在出于要处理汉字和英语字母的问题,我觉得还是要用多字节来得方便。点击项目,再点属性。通过以下修改。2. 如何将连接字符串与个button的按钮分开来写。我想了下,其实实现起来很简单。不过作为新手,我觉得还是不要分开来好了,理解起来容易,而且不容易出错。11111111111111首先在CE4Dlg类中添加成员变量class CE4Dlg : public CDialog/前面省略public:_ConnectionPtr pConn;public:_RecordsetPtr pRst;2222222222222222在OnInitDialog()中添加红色的代码,黄色的为不要的。具体看下面,你可以对照以前写的。BOOL CE4Dlg: OnInitDialog()CDialog:OnInitDialog();/ 将“关于.”菜单项添加到系统菜单中。/ IDM_ABOUTBOX 必须在系统命令范围内。ASSERT(IDM_ABOUTBOX & 0xFFF0) = IDM_ABOUTBOX);ASSERT(IDM_ABOUTBOX < 0xF000);CMenu* pSysMenu = GetSystemMenu(FALSE);if (pSysMenu != NULL)CString strAboutMenu;strAboutMenu.LoadString(IDS_ABOUTBOX);if (!strAboutMenu.IsEmpty()pSysMenu->AppendMenu(MF_SEPARATOR);pSysMenu->AppendMenu(MF_STRING, IDM_ABOUTBOX, strAboutMenu);/ 设置此对话框的图标。当应用程序主窗口不是对话框时,框架将自动/ 执行此操作SetIcon(m_hIcon, TRUE);/ 设置大图标SetIcon(m_hIcon, FALSE);/ 设置小图标/ TODO: 在此添加额外的初始化代码/设置列表控件的格式m_List.ModifyStyle (0,LVS_REPORT|LVS_SHOWSELALWAYS);m_List.SetExtendedStyle(LVS_EX_GRIDLINES | LVS_EX_FULLROWSELECT|LVS_EX_HEADERDRAGDROP);/设置列表控件的标题m_List.InsertColumn(0,"学号",LVCFMT_CENTER,100);m_List.InsertColumn(1,"姓名",LVCFMT_CENTER,100);m_List.InsertColumn(2,"性别",LVCFMT_CENTER,100);m_List.InsertColumn(3,"年龄",LVCFMT_CENTER,100);m_List.InsertColumn(4,"所在院系",LVCFMT_CENTER,120); m_List.DeleteAllItems (); /清除列表控件的内容.这三行代码是为了点search的时候,不会狂刷数据m_List.SetRedraw(FALSE);UpdateData();/初始化数据库/CoInitialize(NULL);/com组件初始化pConn.CreateInstance(_uuidof(Connection);pRst.CreateInstance(_uuidof(Recordset);pConn->ConnectionString="Provider=Microsoft.Jet.OLEDB.4.0;Data Source=student.mdb"pConn->Open("","","",-1);pRst=pConn->Execute("select * from student",NULL,adCmdText);int i=0;while(!pRst->rsEOF)/(CListBox*)GetDlgItem(IDC_LIST1)->AddString(_bstr_t)pRst->GetCollect("standvalue");/CListBox列表框的用法m_List.InsertItem(i,(LPCTSTR)(_bstr_t)pRst->GetCollect("sno");m_List.SetItemText(i,1,(LPCTSTR)(_bstr_t)pRst->GetCollect("sname");m_List.SetItemText(i,2,(LPCTSTR)(_bstr_t)pRst->GetCollect("ssex");m_List.SetItemText(i,3,(LPCTSTR)(_bstr_t)pRst->GetCollect("sage");m_List.SetItemText(i,4,(LPCTSTR)(_bstr_t)pRst->GetCollect("scollege");i+;pRst->MoveNext();/pRst->Close();/pConn->Close(); /连接数据库先不关闭/pRst.Release();/释放/pConn.Release();/CoUninitialize();m_List.SetRedraw (TRUE);/return TRUE; / 除非将焦点设置到控件,否则返回TRUE333333333333333然后再确定,取消按钮的响应函数里添加:void CE4Dlg:OnBnClickedOk()/ TODO: 在此添加控件通知处理程序代码pRst->Close();pConn->Close(); /连接数据库先不关闭pRst.Release();/释放pConn.Release();CoUninitialize();OnOK();void CE4Dlg:OnBnClickedCancel()/ TODO: 在此添加控件通知处理程序代码pRst->Close();pConn->Close(); /连接数据库先不关闭pRst.Release();/释放pConn.Release();CoUninitialize();OnCancel();44444444444444444444444现在我们写刷新,添加记录等按钮程序时,就不用再写数据库连接代码了不过为了避免错误,最好写上pRst=pConn->Execute("select * from student",NULL,adCmdText);这行代码。这里我还是觉得,不要分开来对于新手确实挺好的。孙鑫老师第20讲数据库里面就是这样的。对于我真的很好理解。而非有些书籍,编写一个啥啥管理系统,然后给出一堆函数,变量,头都看晕了。却不给我们详细讲解每个功能具体如何实现。没有做到从简单到复杂。比如。void CE4Dlg:OnBnClickedSearch()m_List.DeleteAllItems (); /清除列表控件的内容.这三行代码是为了点search的时候,不会狂刷数据m_List.SetRedraw(FALSE);UpdateData();/初始化数据库/CoInitialize(NULL);/com组件初始化/_ConnectionPtr pConn(_uuidof(Connection);/_RecordsetPtr pRst(_uuidof(Recordset);/pConn->ConnectionString="Provider=SQLOLEDB.1;Integrated Security=SSPI;Persist Security Info=False;Initial Catalog=student;Data Source=DJ-E2F554D95B00"/pConn->Open("","","",-1);pRst=pConn->Execute("select * from student",NULL,adCmdText);int i=0;while(!pRst->rsEOF)/(CListBox*)GetDlgItem(IDC_LIST1)->AddString(_bstr_t)pRst->GetCollect("standvalue");/CListBox列表框的用法m_List.InsertItem(i,(LPCTSTR)(_bstr_t)pRst->GetCollect("sno");m_List.SetItemText(i,1,(LPCTSTR)(_bstr_t)pRst->GetCollect("sname");m_List.SetItemText(i,2,(LPCTSTR)(_bstr_t)pRst->GetCollect("ssex");m_List.SetItemText(i,3,(LPCTSTR)(_bstr_t)pRst->GetCollect("sage");m_List.SetItemText(i,4,(LPCTSTR)(_bstr_t)pRst->GetCollect("scollege");i+;pRst->MoveNext();/pRst->Close();/pConn->Close(); /连接数据库先不关闭/pRst.Release();/释放/pConn.Release();/CoUninitialize();m_List.SetRedraw (TRUE);