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

How to effectively monitor MySQL performance? Use tools such as mysqladmin, SHOWGLOBALSTATUS, PerconaMonitoring and Management (PMM), and MySQL EnterpriseMonitor. 1. Use mysqladmin to view the number of connections. 2. Use SHOWGLOBALSTATUS to view the query number. 3.PMM provides detailed performance data and graphical interface. 4.MySQLEnterpriseMonitor provides rich monitoring functions and alarm mechanisms.

The difference between MySQL and SQLServer is: 1) MySQL is open source and suitable for web and embedded systems, 2) SQLServer is a commercial product of Microsoft and is suitable for enterprise-level applications. There are significant differences between the two in storage engine, performance optimization and application scenarios. When choosing, you need to consider project size and future scalability.

In enterprise-level application scenarios that require high availability, advanced security and good integration, SQLServer should be chosen instead of MySQL. 1) SQLServer provides enterprise-level features such as high availability and advanced security. 2) It is closely integrated with Microsoft ecosystems such as VisualStudio and PowerBI. 3) SQLServer performs excellent in performance optimization and supports memory-optimized tables and column storage indexes.

MySQLmanagescharactersetsandcollationsbyusingUTF-8asthedefault,allowingconfigurationatdatabase,table,andcolumnlevels,andrequiringcarefulalignmenttoavoidmismatches.1)Setdefaultcharactersetandcollationforadatabase.2)Configurecharactersetandcollationfor

A MySQL trigger is an automatically executed stored procedure associated with a table that is used to perform a series of operations when a specific data operation is performed. 1) Trigger definition and function: used for data verification, logging, etc. 2) Working principle: It is divided into BEFORE and AFTER, and supports row-level triggering. 3) Example of use: Can be used to record salary changes or update inventory. 4) Debugging skills: Use SHOWTRIGGERS and SHOWCREATETRIGGER commands. 5) Performance optimization: Avoid complex operations, use indexes, and manage transactions.

The steps to create and manage user accounts in MySQL are as follows: 1. Create a user: Use CREATEUSER'newuser'@'localhost'IDENTIFIEDBY'password'; 2. Assign permissions: Use GRANTSELECT, INSERT, UPDATEONmydatabase.TO'newuser'@'localhost'; 3. Fix permission error: Use REVOKEALLPRIVILEGESONmydatabase.FROM'newuser'@'localhost'; then reassign permissions; 4. Optimization permissions: Use SHOWGRA

MySQL is suitable for rapid development and small and medium-sized applications, while Oracle is suitable for large enterprises and high availability needs. 1) MySQL is open source and easy to use, suitable for web applications and small and medium-sized enterprises. 2) Oracle is powerful and suitable for large enterprises and government agencies. 3) MySQL supports a variety of storage engines, and Oracle provides rich enterprise-level functions.

The disadvantages of MySQL compared to other relational databases include: 1. Performance issues: You may encounter bottlenecks when processing large-scale data, and PostgreSQL performs better in complex queries and big data processing. 2. Scalability: The horizontal scaling ability is not as good as Google Spanner and Amazon Aurora. 3. Functional limitations: Not as good as PostgreSQL and Oracle in advanced functions, some functions require more custom code and maintenance.


Hot AI Tools

Undresser.AI Undress
AI-powered app for creating realistic nude photos

AI Clothes Remover
Online AI tool for removing clothes from photos.

Undress AI Tool
Undress images for free

Clothoff.io
AI clothes remover

Video Face Swap
Swap faces in any video effortlessly with our completely free AI face swap tool!

Hot Article

Hot Tools

MantisBT
Mantis is an easy-to-deploy web-based defect tracking tool designed to aid in product defect tracking. It requires PHP, MySQL and a web server. Check out our demo and hosting services.

SAP NetWeaver Server Adapter for Eclipse
Integrate Eclipse with SAP NetWeaver application server.

ZendStudio 13.5.1 Mac
Powerful PHP integrated development environment

VSCode Windows 64-bit Download
A free and powerful IDE editor launched by Microsoft

SublimeText3 Linux new version
SublimeText3 Linux latest version