用VC++操作ACESS数据库(创建数据库、建立新表、连接、增删查改)
首先在 StdAfx.h 中包含如下头文件 #import "C:\Program Files\Common Files\system\ado\msadox.dll" // 创建数据库必用 #import"C:\Program Files\Common Files\System\ADO\msado15.dll" named_guids rename("EOF","adoEOF"), rename("BOF","adoBOF") msado
首先在StdAfx.h中包含如下头文件
#import "C:\Program Files\Common Files\system\ado\msadox.dll" // 创建数据库必用
#import"C:\Program Files\Common Files\System\ADO\msado15.dll" named_guids rename("EOF","adoEOF"), rename("BOF","adoBOF")
msadox.dll msado15.dll根据自己电脑上的位置进行加载,备注:两个#import位置不能调换,调换链接出错
1. 创建数据库
// 创建数据库
void CTestDlg::OnCreateAdoMdb()
{
HRESULT hr = S_OK; CString filename="c:\\test.mdb";
//Set ActiveConnection of Catalog to this string
CString strcnn(_T("Provider=Microsoft.JET.OLEDB.4.0;Data source="+filename));
try
{
ADOX::_CatalogPtr m_pCatalog = NULL;
hr = m_pCatalog.CreateInstance(__uuidof (ADOX::Catalog));
if(FAILED(hr))
{
_com_issue_error(hr);
}
else
{
m_pCatalog->Create(_bstr_t(strcnn));
//Create MDB
}
AfxMessageBox(_T("ok"));
}
catch(_com_error &e)
{
// Notify the user of errors if any.
AfxMessageBox(_T("error"));
}
}
2、 打开数据库
BOOL CTestApp::InitInstance()
{
AfxEnableControlContainer();
CoInitialize(NULL);
.......
return TRUE;
}
3. 创建新表
void CTestDlg::OnMainCreate()
{
try
{
_ConnectionPtr pConn;pConn.CreateInstance(__uuidof(Connection));
_RecordsetPtr pRs; pRs.CreateInstance(__uuidof(Recordset));
_CommandPtr Cmd; Cmd.CreateInstance( __uuidof( Command ) );
try
{
CString dd; CString file="c:\\NXYH.mdb";
//CString dd; CString file="NXYH.mdb";
dd.Format("Provider=Microsoft.Jet.OLEDB.4.0;Data Source=%s",file);
pConn->Open((_bstr_t)dd,"","",adModeUnknown); // 打开本地Access库Demo.mdb
}
catch(_com_error e)
{
AfxMessageBox("数据库连接失败,确认数据库NXYH.mdb是否在当前路径下!");
}
// 如果本表不存在时,可以创建本表,存在时无法创建.
try
{
_variant_t RecordsAffected; CString command1,command2,myfilename="yours";
command1.Format("CREATE TABLE %s(ID INTEGER,username TEXT(5),old INTEGER,birthday
DATETIME)",myfilename);
pConn->Execute(_bstr_t(command1),&RecordsAffected,adCmdText);
command2.Format("INSERT INTO %s(ID,username,old,birthday) VALUES
(1,'washton',26,'1970/1/1')",myfilename);
pConn->Execute(_bstr_t(command2),&RecordsAffected,adCmdText);
AfxMessageBox("created.");
}
catch(...)
{
AfxMessageBox("table have already created.");
}
}
catch(...)
{
}
}
4. 删除记录
void CTestDlg::OnMainDel()
{
try
{
_ConnectionPtr pConn;
_RecordsetPtr pRs;
pConn.CreateInstance(__uuidof(Connection));
pRs.CreateInstance(__uuidof(Recordset));
try
{
CString dd; CString file="c:\\NXYH.mdb";
dd.Format("Provider=Microsoft.Jet.OLEDB.4.0;Data Source=%s",file);
pConn->Open((_bstr_t)dd,"","",adModeUnknown); // 打开本地Access库Demo.mdb
}
catch(_com_error e)
{
AfxMessageBox("数据库连接失败,确认数据库NXYH.mdb是否在当前路径下!");
}
try
{
pRs->Open("SELECT * FROM coordinate", // 查询DemoTable表中所有字段
pConn.GetInterfacePtr(), // 获取库接库的IDispatch指针
adOpenDynamic,
adLockOptimistic,
adCmdText );
}
catch(_com_error *e)
{
AfxMessageBox(e->ErrorMessage());
}
_variant_t var;
while (!pRs->adoEOF)
{
pRs->MoveFirst();
pRs->Delete(adAffectCurrent); //删除当前记录
pRs->MoveNext();
}
MessageBox("delete--over"); pRs->Update();
pRs->Close(); pConn->Close(); pRs=NULL; pConn=NULL;
}
catch (_com_error &e )
{
printf("Error:\n");
printf("Code = %08lx\n", e.Error());
printf("Meaning = %s\n", e.ErrorMessage());
printf("Source = %s\n", (LPCSTR) e.Source());
}
}
5. 增加记录
void CTestDlg::OnMainAdd()
{
try
{
_ConnectionPtr pConn;
_RecordsetPtr pRs;
pConn.CreateInstance(__uuidof(Connection));
pRs.CreateInstance(__uuidof(Recordset));
try
{
// 打开本地Access库Demo.mdb
pConn->Open("Provider=Microsoft.Jet.OLEDB.4.0;Data Source=NXYH.mdb","","",adModeUnknown);
}
catch(_com_error e)
{
AfxMessageBox("数据库连接失败,确认数据库NXYH.mdb是否在当前路径下!");
}
try
{
pRs->Open("SELECT * FROM coordinate", // 查询DemoTable表中所有字段
pConn.GetInterfacePtr(), // 获取库接库的IDispatch指针
adOpenDynamic,
adLockOptimistic,
adCmdText );
}
catch(_com_error *e)
{
AfxMessageBox(e->ErrorMessage());
}
// 增加新元素
XX=123.345; YY=222.434; HH=1445;
for(int i=0;i {
m_Name.Format("D%d",i+1);
pRs->AddNew();
//pRs->PutCollect("ID",_variant_t((long)(i+10)));
pRs->PutCollect("Name", _variant_t(m_Name));
pRs->PutCollect("X",_variant_t((double)(XX)));
pRs->PutCollect("Y",_variant_t((double)(YY)));
pRs->PutCollect("H",_variant_t((double)(HH)));
}
pRs->Update(); MessageBox("add--over");
pRs->Close(); pConn->Close(); pRs=NULL; pConn=NULL;
}
catch (_com_error &e )
{
printf("Error:\n");
printf("Code = %08lx\n", e.Error());
printf("Meaning = %s\n", e.ErrorMessage());
printf("Source = %s\n", (LPCSTR) e.Source());
}
}
6. 修改记录
void CTestDlg::OnMainChange()
{
try
{
_ConnectionPtr pConn;
_RecordsetPtr pRs;
pConn.CreateInstance(__uuidof(Connection));
pRs.CreateInstance(__uuidof(Recordset));
try
{
// 打开本地Access库Demo.mdb
pConn->Open("Provider=Microsoft.Jet.OLEDB.4.0;Data Source=NXYH.mdb","","",adModeUnknown);
}
catch(_com_error e)
{
AfxMessageBox("数据库连接失败,确认数据库NXYH.mdb是否在当前路径下!");
}
try
{
pRs->Open("SELECT * FROM coordinate", // 查询DemoTable表中所有字段
pConn.GetInterfacePtr(), // 获取库接库的IDispatch指针
adOpenDynamic,
adLockOptimistic,
adCmdText );
}
catch(_com_error *e)
{
AfxMessageBox(e->ErrorMessage());
}
// 修改数据
_variant_t var;
while (!pRs->adoEOF)
{
//var = pRs->GetCollect("Name");
//if(var.vt != VT_NULL) m_Name = (LPCSTR)_bstr_t(var);
//MessageBox(m_Name); //m_Name=m_Name.Left(2)+"*";
//m_Name+="main";
var = pRs->GetCollect("X");
if(var.vt != VT_NULL) m_X = (LPCSTR)_bstr_t(var);
double XX=100.789; //XX+=atof(m_X);
pRs->PutCollect("X",_variant_t((double)(XX)));
//pRs->PutCollect("Name", _variant_t(m_Name));
pRs->MoveNext();
}
MessageBox("change--over");
pRs->Update();
pRs->Close(); pConn->Close(); pRs=NULL; pConn=NULL;
}
catch (_com_error &e )
{
printf("Error:\n");
printf("Code = %08lx\n", e.Error());
printf("Meaning = %s\n", e.ErrorMessage());
printf("Source = %s\n", (LPCSTR) e.Source());
}
}

ホット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)

ホットトピック











Apple の最新リリースの iOS18、iPadOS18、および macOS Sequoia システムでは、さまざまな理由で紛失または破損した写真やビデオをユーザーが簡単に回復できるように設計された重要な機能が写真アプリケーションに追加されました。この新機能では、写真アプリのツール セクションに「Recovered」というアルバムが導入され、ユーザーがデバイス上に写真ライブラリに含まれていない写真やビデオがある場合に自動的に表示されます。 「Recovered」アルバムの登場により、データベースの破損、カメラ アプリケーションが写真ライブラリに正しく保存されない、または写真ライブラリを管理するサードパーティ アプリケーションによって失われた写真やビデオに対する解決策が提供されます。ユーザーはいくつかの簡単な手順を実行するだけで済みます

Hibernate ポリモーフィック マッピングは、継承されたクラスをデータベースにマップでき、次のマッピング タイプを提供します。 join-subclass: 親クラスのすべての列を含む、サブクラス用の別個のテーブルを作成します。 table-per-class: サブクラス固有の列のみを含む、サブクラス用の別個のテーブルを作成します。 Union-subclass: join-subclass と似ていますが、親クラス テーブルがすべてのサブクラス列を結合します。

MySQLi を使用して PHP でデータベース接続を確立する方法: MySQLi 拡張機能を含める (require_once) 接続関数を作成する (functionconnect_to_db) 接続関数を呼び出す ($conn=connect_to_db()) クエリを実行する ($result=$conn->query()) 閉じる接続 ( $conn->close())

HTML はデータベースを直接読み取ることはできませんが、JavaScript と AJAX を通じて実現できます。この手順には、データベース接続の確立、クエリの送信、応答の処理、ページの更新が含まれます。この記事では、JavaScript、AJAX、および PHP を使用して MySQL データベースからデータを読み取る実践的な例を示し、クエリ結果を HTML ページに動的に表示する方法を示します。この例では、XMLHttpRequest を使用してデータベース接続を確立し、クエリを送信して応答を処理することで、ページ要素にデータを埋め込み、データベースを読み取る HTML の機能を実現します。

PHP でデータベース接続エラーを処理するには、次の手順を使用できます。 mysqli_connect_errno() を使用してエラー コードを取得します。 mysqli_connect_error() を使用してエラー メッセージを取得します。これらのエラー メッセージをキャプチャしてログに記録することで、データベース接続の問題を簡単に特定して解決でき、アプリケーションをスムーズに実行できるようになります。

目次 Astar Dapp ステーキングの原則 ステーキング収益 潜在的なエアドロップ プロジェクトの解体: AlgemNeurolancheHealthreeAstar Degens DAOVeryLongSwap ステーキング戦略と運用 「AstarDapp ステーキング」は今年初めに V3 バージョンにアップグレードされ、ステーキング収益に多くの調整が加えられましたルール。現在、最初のステーキング サイクルが終了し、2 番目のステーキング サイクルの「投票」サブサイクルが始まったばかりです。 「追加報酬」特典を獲得するには、この重要な段階を把握する必要があります (6 月 26 日まで続く予定で、残りは 5 日未満です)。 Astarステーキング収入を詳しく説明します。

Ele.me は、さまざまな珍味を集めたソフトウェアです。オンラインで選択して注文できます。販売者は注文を受けてすぐに作成します。ユーザーはソフトウェアを通じて WeChat をバインドできます。具体的な内容を知りたい場合は、操作方法については、PHP 中国語 Web サイトを忘れずに確認してください。 WeChat を Ele.me にバインドする方法の手順: 1. まず Ele.me ソフトウェアを開き、ホームページに入った後、右下隅の [My] をクリックします; 2. 次に、My ページで、左上隅の[アカウント]; 3. 次に、携帯電話、WeChat、Alipay、および淘宝網をバインドできる個人情報ページに移動します. ここで、[WeChat] をクリックします; 4. 最後のクリック後、WeChat アカウントを選択しますこれは WeChat 認証ページでバインドする必要があり、[許可] をクリックするだけです。

Win8 コンピューターの起動パスワードを忘れることは、日常的にコンピューターを使用するときに多くの人が遭遇する問題です。ログインパスワードを忘れてしまうと、システムに正常にアクセスできなくなり、日常の使用に不便が生じてしまいます。この問題が発生した場合でも、心配しないでください。以下では、Win8 コンピューターのパワーオン パスワードをすばやく復元するための簡単な操作をいくつか紹介します。方法 1: Microsoft アカウントのパスワードを使用する. Microsoft アカウントを使用して Win8 コンピューターにログインする場合は、そのアカウントのパスワードを使用してみることができます。
