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(); }

ホットAIツール

Undresser.AI Undress
リアルなヌード写真を作成する AI 搭載アプリ

AI Clothes Remover
写真から衣服を削除するオンライン AI ツール。

Undress AI Tool
脱衣画像を無料で

Clothoff.io
AI衣類リムーバー

Video Face Swap
完全無料の AI 顔交換ツールを使用して、あらゆるビデオの顔を簡単に交換できます。

人気の記事

ホットツール

メモ帳++7.3.1
使いやすく無料のコードエディター

SublimeText3 中国語版
中国語版、とても使いやすい

ゼンドスタジオ 13.0.1
強力な PHP 統合開発環境

ドリームウィーバー CS6
ビジュアル Web 開発ツール

SublimeText3 Mac版
神レベルのコード編集ソフト(SublimeText3)

ホットトピック











ApacheでZendを構成する方法は? Apache WebサーバーでZend Frameworkを構成する手順は次のとおりです。ZendFrameworkをインストールし、Webサーバーディレクトリに抽出します。 .htaccessファイルを作成します。 Zend Application Directoryを作成し、index.phpファイルを追加します。 Zend Application(Application.ini)を構成します。 Apache Webサーバーを再起動します。

Oracleはデータベース会社だけでなく、クラウドコンピューティングとERPシステムのリーダーでもあります。 1。Oracleは、データベースからクラウドサービスおよびERPシステムへの包括的なソリューションを提供します。 2。Oraclecloudは、AWSとAzureに挑戦し、IAAS、PAAS、SAASサービスを提供します。 3. e-businesssuiteやfusionApplicationsなどのOracleのERPシステムは、企業がオペレーションを最適化するのに役立ちます。

MySQLは、Webアプリケーションやコンテンツ管理システムに適しており、オープンソース、高性能、使いやすさに人気があります。 1)PostgreSQLと比較して、MySQLは簡単なクエリと高い同時読み取り操作でパフォーマンスが向上します。 2)Oracleと比較して、MySQLは、オープンソースと低コストのため、中小企業の間でより一般的です。 3)Microsoft SQL Serverと比較して、MySQLはクロスプラットフォームアプリケーションにより適しています。 4)MongoDBとは異なり、MySQLは構造化されたデータおよびトランザクション処理により適しています。

vProcesserazrabotkiveb-Enclosed、する、するまみ、するまで。 leavallysumballancefriablancefaumdoptomatification、čtokazalovnetakprosto、kakaožidal.posenesko

MySQLは、テーブル構造とSQLクエリを介して構造化されたデータを効率的に管理し、外部キーを介してテーブル間関係を実装します。 1.テーブルを作成するときにデータ形式と入力を定義します。 2。外部キーを使用して、テーブル間の関係を確立します。 3。インデックス作成とクエリの最適化により、パフォーマンスを改善します。 4.データベースを定期的にバックアップおよび監視して、データのセキュリティとパフォーマンスの最適化を確保します。

悪意のあるウェブサイトへのアクセスに対する効果的な監視と防御は、Debianシステム上のApacheサーバーにとって重要です。 Apacheアクセスログは、そのような脅威を特定するための重要な情報源です。この記事では、ログを分析し、防御対策を講じる方法について説明します。悪意のあるアクセス動作を識別するApacheアクセスログDebian Systemsは、通常/var/log/apache2/access.logにあります。ログをさまざまな方法で分析できます。ログファイルの場所の確認:まず、Apacheアクセスログの正確な場所を確認してください。これは、システム構成によってわずかに異なる場合があります。コマンドラインツール分析:GREPコマンドを使用して、GREP「404」などの特定のパターンを検索します

Apache Serverは、ブラウザとWebサイトサーバーの間のブリッジとして機能する強力なWebサーバーソフトウェアです。 1.リクエストに基づいてHTTPリクエストを処理し、Webページコンテンツを返します。 2。モジュラー設計により、SSL暗号化や動的Webページのサポートなど、拡張機能が可能になります。 3.構成ファイル(仮想ホスト構成など)は、セキュリティの脆弱性を回避し、スレッドカウントやタイムアウト時間などのパフォーマンスパラメーターを最適化して、高性能および安全なWebアプリケーションを構築するために慎重に設定する必要があります。

Nginxパフォーマンスの監視とトラブルシューティングは、主に次の手順を通じて実行されます。1。nginx-Vを使用してバージョン情報を表示し、Stub_statusモジュールを有効にしてアクティブな接続、要求、キャッシュヒット率の数を監視します。 2. TOPコマンドを使用して、システムリソースの職業、IOSTAT、VMSTATモニターディスクI/O、およびメモリ使用量をそれぞれ監視します。 3. TCPDUMPを使用してパケットをキャプチャしてネットワークトラフィックを分析し、ネットワーク接続の問題をトラブルシューティングします。 4.ワーカープロセスの数を適切に構成して、同時処理機能不足または過度のプロセスコンテキストスイッチングオーバーヘッドを回避します。 5.不適切なキャッシュサイズの設定を回避するように、nginxキャッシュを正しく構成します。 6.AWKコマンドやエルクの使用など、nginxログを分析することにより
