VC++对Access数据库的操作(查询、插入、更新、删除等)
Microsoft Office Access是由 微软 发布的 关系 数据库 管理系统 。 Access 数据库 常应用于小型软件系统中, 比如: 生产管理 、 销售管理 、 库存管理 等各类企业管理软件,其最大的优点是:简单易学、使用灵活。 下面我们结合实例来详细说明,在VC MFC中
Microsoft Office Access是由微软发布的关系数据库管理系统。Access数据库常应用于小型软件系统中,比如:生产管理、销售管理、库存管理等各类企业管理软件,其最大的优点是:简单易学、使用灵活。
下面我们结合实例来详细说明,在VC++ MFC中,如何使用Access数据库文件进行数据的存储,如何实现对数据库中数据的查询、插入、更新和删除等操作。
(实例可在我的CSDN资源中下载:http://download.csdn.net/detail/margin1988/8235865)
首先,怎样创建一个可供VC++ MFC程序使用的Access数据库,并在该数据库中创建数据表呢?
第一步:打开Microsoft Office Access软件,点击“空白数据库”;
第二步:设置预创建空白数据库的文件名和文件类型(文件名:point32.mdb,文件类型:Microsoft Office Access 2000 数据库(*.mdb));
第三步:“创建”空白数据库;
第四步:为该数据库“设置数据库密码”(本例中密码设置为:1234);
第五步:在该数据库中创建一张表,例如:TestTab(编号,姓名,性别,年龄);
第六步:表创建完成后,保存并关闭数据库,然后将该数据库文件(point32.mdb)剪切到你的VC++程序debug或release目录中,则准备工作完成。
其次,在VC++ MFC中编写对该数据库中TestTab表进行数据查询、插入、更新、删除等操作的方法:
(1)导入才用ado方式访问Access数据库所需的DLL
#import "C:\Program Files\Common Files\system\ado\msado15.dll" no_namespace rename("EOF","adoEOF")//ado访问ACCESS<strong>数据库</strong>必需
(2)在程序的入口函数中,初始化OLE以支持应用程序
AfxOleInit();
(3)获取应用程序(EXE)所在路径
CString path;//应用程序所在路径 char filepath[256]; char* pPath; GetModuleFileName(AfxGetInstanceHandle(),filepath,256); pPath = strrchr(filepath,'\\'); *pPath = 0; path = filepath;
(4)创建数据库访问连接字符串
char* PtConnectStr;//<strong>数据库</strong>连接字符串 CString connstr = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source="; connstr += path; connstr += "\\point32.mdb"; connstr += ";Jet OLEDB:Database Password='1234'"; PtConnectStr = connstr.GetBuffer(0);
(5)查询TestTab表中数据方法实现
//<strong>查询</strong>表中数据,并显示在List Control控件中 void CPoint32Dlg::ReadUserInfo() { //select m_list.DeleteAllItems();//清空列表 _ConnectionPtr m_pConnection; _RecordsetPtr m_pRecordset; try { m_pConnection.CreateInstance(__uuidof(Connection)); m_pConnection->Open(PtConnectStr,"","",adModeUnknown); } catch(_com_error e) { CString errormessage; errormessage.Format("<strong>数据库</strong>连接失败.\r错误信息:%s",e.ErrorMessage()); //AfxMessageBox(errormessage); MessageBox(errormessage,"连接失败",MB_ICONEXCLAMATION); if(m_pConnection->State) m_pConnection->Close(); return; } try { //获取数据,放在数据集中 CString cmd; cmd.Format("SELECT * FROM TestTab"); m_pRecordset.CreateInstance("ADODB.Recordset"); m_pRecordset->Open(cmd.GetBuffer(), _variant_t((IDispatch*)m_pConnection,true), adOpenStatic, adLockOptimistic, adCmdText); //处理数据,并显示 _variant_t varbuffer; long index = 0;//注意:必须是long类型 int countItem = 0; CString str; while(!m_pRecordset->adoEOF) { index = 0; //读ID号 varbuffer = m_pRecordset->GetCollect(_variant_t(index)); if(varbuffer.vt!=VT_NULL) { str.Format("%d",varbuffer.lVal); m_list.InsertItem(countItem,str.GetBuffer()); } //读其它的信息 while(index GetCollect(_variant_t(index)); if(varbuffer.vt!=VT_NULL) { str = (LPCTSTR)(_bstr_t)varbuffer; m_list.SetItemText(countItem,index,str.GetBuffer()); } } m_pRecordset->MoveNext(); countItem++; } } catch(_com_error &e) { //AfxMessageBox(e.Description()); MessageBox(e.Description(),"<strong>数据库</strong><strong>操作</strong>失败.",MB_ICONEXCLAMATION); if(m_pRecordset->State) m_pRecordset->Close(); if(m_pConnection->State) m_pConnection->Close(); return; } if(m_pRecordset->State) m_pRecordset->Close(); if(m_pConnection->State) m_pConnection->Close(); }
(6)向TestTab表中插入数据方法实现
//向表中<strong>插入</strong>数据,并<strong>更新</strong>List Control控件中显示的数据 void CPoint32Dlg::OnBnClickedButton1() { //insert _ConnectionPtr m_pConnection; _variant_t RecordsAffected; try { m_pConnection.CreateInstance(__uuidof(Connection)); m_pConnection->Open(PtConnectStr,"","",adModeUnknown); } catch(_com_error e) { CString errormessage; errormessage.Format("<strong>数据库</strong>连接失败.\r错误信息:%s",e.ErrorMessage()); MessageBox(errormessage," 添加失败 ",MB_ICONEXCLAMATION); return; } try { CString strCmd="INSERT INTO TestTab(UName,UGender,UAge) VALUES('测试者','男','30')"; for(int i=0;iExecute(strCmd.AllocSysString(),&RecordsAffected,adCmdText); } } catch(_com_error &e) { //AfxMessageBox(e.Description()); MessageBox(e.Description()," 添加失败 ",MB_ICONEXCLAMATION); if(m_pConnection->State) m_pConnection->Close(); return; } if(m_pConnection->State) m_pConnection->Close(); //MessageBox("添加成功!","消息"); m_update.EnableWindow(TRUE); m_delete.EnableWindow(TRUE); ReadUserInfo(); }
(7)更新TestTab表中数据方法实现
//<strong>更新</strong>表中数据,并<strong>更新</strong>List Control控件的显示 void CPoint32Dlg::OnBnClickedButton3() { // update _ConnectionPtr m_pConnection; _variant_t RecordsAffected; try { m_pConnection.CreateInstance(__uuidof(Connection)); m_pConnection->Open(PtConnectStr,"","",adModeUnknown); } catch(_com_error e) { CString errormessage; errormessage.Format("<strong>数据库</strong>连接失败.\r错误信息:%s",e.ErrorMessage()); MessageBox(errormessage," 修改失败 ",MB_ICONEXCLAMATION); return; } try { CString strCmd="UPDATE TestTab SET [UGender]='女',[UAge]='20' WHERE [UName]='测试者'"; m_pConnection->Execute(strCmd.AllocSysString(),&RecordsAffected,adCmdText); } catch(_com_error &e) { //AfxMessageBox(e.Description()); MessageBox(e.Description()," 修改失败 ",MB_ICONEXCLAMATION); if(m_pConnection->State) m_pConnection->Close(); return; } if(m_pConnection->State) m_pConnection->Close(); //MessageBox("修改成功!","消息"); ReadUserInfo(); }
(8)删除TestTab表中数据及重置表中自动编号主键(key)方法现实
//<strong>删除</strong>表中数据、重置自动编号(从1开始),并<strong>更新</strong>List Control控件显示 void CPoint32Dlg::OnBnClickedButton4() { // delete _ConnectionPtr m_pConnection; _variant_t RecordsAffected; try { m_pConnection.CreateInstance(__uuidof(Connection)); m_pConnection->Open(PtConnectStr,"","",adModeUnknown); } catch(_com_error e) { CString errormessage; errormessage.Format("连接<strong>数据库</strong>失败!\r错误信息:%s",e.ErrorMessage()); MessageBox(errormessage,"<strong>删除</strong>失败",MB_ICONEXCLAMATION); return; } try { //<strong>删除</strong>表中所有数据 CString strCmd="DELETE FROM TestTab"; m_pConnection->Execute(strCmd.AllocSysString(),&RecordsAffected,adCmdText); //重置表中自动编号ID,使其从1开始增加(必须先<strong>删除</strong>表中所有数据) strCmd="ALTER TABLE TestTab ALTER COLUMN ID COUNTER(1,1)"; m_pConnection->Execute(strCmd.AllocSysString(),&RecordsAffected,adCmdText); } catch(_com_error &e) { //AfxMessageBox(e.Description()); MessageBox(e.Description(),"<strong>删除</strong>失败",MB_ICONEXCLAMATION); if(m_pConnection->State) m_pConnection->Close(); return; } if(m_pConnection->State) m_pConnection->Close(); //MessageBox("<strong>删除</strong>成功!","完成"); m_insert.EnableWindow(TRUE); m_update.EnableWindow(FALSE); m_delete.EnableWindow(FALSE); ReadUserInfo(); }

Alat AI Hot

Undresser.AI Undress
Apl berkuasa AI untuk mencipta foto bogel yang realistik

AI Clothes Remover
Alat AI dalam talian untuk mengeluarkan pakaian daripada foto.

Undress AI Tool
Gambar buka pakaian secara percuma

Clothoff.io
Penyingkiran pakaian AI

Video Face Swap
Tukar muka dalam mana-mana video dengan mudah menggunakan alat tukar muka AI percuma kami!

Artikel Panas

Alat panas

Notepad++7.3.1
Editor kod yang mudah digunakan dan percuma

SublimeText3 versi Cina
Versi Cina, sangat mudah digunakan

Hantar Studio 13.0.1
Persekitaran pembangunan bersepadu PHP yang berkuasa

Dreamweaver CS6
Alat pembangunan web visual

SublimeText3 versi Mac
Perisian penyuntingan kod peringkat Tuhan (SublimeText3)

Topik panas











Bagaimana cara mengkonfigurasi zend di Apache? Langkah -langkah untuk mengkonfigurasi Rangka Kerja Zend dalam pelayan web Apache adalah seperti berikut: Pasang Rangka Kerja Zend dan ekstraknya ke dalam direktori pelayan web. Buat fail .htaccess. Buat direktori aplikasi Zend dan tambahkan fail index.php. Konfigurasikan aplikasi Zend (Application.ini). Mulakan semula pelayan web Apache.

MySQL sesuai untuk aplikasi web dan sistem pengurusan kandungan dan popular untuk sumber terbuka, prestasi tinggi dan kemudahan penggunaan. 1) Berbanding dengan PostgreSQL, MySQL melakukan lebih baik dalam pertanyaan mudah dan operasi membaca serentak yang tinggi. 2) Berbanding dengan Oracle, MySQL lebih popular di kalangan perusahaan kecil dan sederhana kerana sumber terbuka dan kos rendah. 3) Berbanding dengan Microsoft SQL Server, MySQL lebih sesuai untuk aplikasi silang platform. 4) Tidak seperti MongoDB, MySQL lebih sesuai untuk data berstruktur dan pemprosesan transaksi.

Oracle bukan sahaja syarikat pangkalan data, tetapi juga pemimpin dalam pengkomputeran awan dan sistem ERP. 1. Oracle menyediakan penyelesaian yang komprehensif dari pangkalan data ke perkhidmatan awan dan sistem ERP. 2. Oraclecloud mencabar AWS dan Azure, menyediakan perkhidmatan IaaS, PaaS dan SaaS. 3. Sistem ERP Oracle seperti E-BusinessSuite dan FusionApplications membantu perusahaan mengoptimumkan operasi.

MySQL dengan cekap menguruskan data berstruktur melalui struktur jadual dan pertanyaan SQL, dan melaksanakan hubungan antara meja melalui kunci asing. 1. Tentukan format data dan taip apabila membuat jadual. 2. Gunakan kunci asing untuk mewujudkan hubungan antara jadual. 3. Meningkatkan prestasi melalui pengindeksan dan pengoptimuman pertanyaan. 4. Secara kerap sandaran dan memantau pangkalan data untuk memastikan pengoptimuman keselamatan data dan prestasi.

Aplikasi dunia nyata MySQL termasuk reka bentuk pangkalan data asas dan pengoptimuman pertanyaan kompleks. 1) Penggunaan Asas: Digunakan untuk menyimpan dan mengurus data pengguna, seperti memasukkan, menanyakan, mengemas kini dan memadam maklumat pengguna. 2) Penggunaan lanjutan: Mengendalikan logik perniagaan yang kompleks, seperti perintah dan pengurusan inventori platform e-dagang. 3) Pengoptimuman Prestasi: Meningkatkan prestasi dengan menggunakan indeks, jadual partisi dan cache pertanyaan.

VProcesserAzrabotKiveB-disengajakan, мнепришосоаookaнноаяадачейтераце hadapan LeavallysumballanceFriablanceFaumdoptomification, čtookazalovnetakprosto, Kakaožidal.posenesko

Apache Server adalah perisian pelayan web yang kuat yang bertindak sebagai jambatan antara penyemak imbas dan pelayan laman web. 1. Ia mengendalikan permintaan HTTP dan mengembalikan kandungan laman web berdasarkan permintaan; 2. Reka bentuk modular membolehkan fungsi lanjutan, seperti sokongan untuk penyulitan SSL dan laman web dinamik; 3. Fail konfigurasi (seperti konfigurasi tuan rumah maya) perlu ditetapkan dengan teliti untuk mengelakkan kelemahan keselamatan, dan mengoptimumkan parameter prestasi, seperti kiraan thread dan masa tamat, untuk membina aplikasi web berprestasi tinggi dan selamat.

Masalah had semasa nginx boleh diselesaikan dengan: Gunakan ngx_http_limit_req_module untuk mengehadkan bilangan permintaan; Gunakan ngx_http_limit_conn_module untuk mengehadkan bilangan sambungan; Gunakan modul pihak ketiga (ngx_http_limit_connections_module, ngx_http_limit_rate_module, ngx_http_access_module) untuk melaksanakan lebih banyak dasar had semasa; Gunakan Perkhidmatan Awan (CloudFlare, Kadar Awan Google, AWS WAF) ke DD
