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

Outils d'IA chauds

Undresser.AI Undress
Application basée sur l'IA pour créer des photos de nu réalistes

AI Clothes Remover
Outil d'IA en ligne pour supprimer les vêtements des photos.

Undress AI Tool
Images de déshabillage gratuites

Clothoff.io
Dissolvant de vêtements AI

AI Hentai Generator
Générez AI Hentai gratuitement.

Article chaud

Outils chauds

Bloc-notes++7.3.1
Éditeur de code facile à utiliser et gratuit

SublimeText3 version chinoise
Version chinoise, très simple à utiliser

Envoyer Studio 13.0.1
Puissant environnement de développement intégré PHP

Dreamweaver CS6
Outils de développement Web visuel

SublimeText3 version Mac
Logiciel d'édition de code au niveau de Dieu (SublimeText3)

Le langage Go est un langage de programmation efficace, concis et facile à apprendre. Il est privilégié par les développeurs en raison de ses avantages en programmation simultanée et en programmation réseau. Dans le développement réel, les opérations de base de données font partie intégrante. Cet article explique comment utiliser le langage Go pour implémenter les opérations d'ajout, de suppression, de modification et de requête de base de données. Dans le langage Go, nous utilisons généralement des bibliothèques tierces pour faire fonctionner les bases de données, telles que les packages SQL couramment utilisés, gorm, etc. Ici, nous prenons le package SQL comme exemple pour présenter comment implémenter les opérations d'ajout, de suppression, de modification et de requête de la base de données. Supposons que nous utilisons une base de données MySQL.

Le mappage polymorphe Hibernate peut mapper les classes héritées à la base de données et fournit les types de mappage suivants : join-subclass : crée une table séparée pour la sous-classe, incluant toutes les colonnes de la classe parent. table par classe : créez une table distincte pour les sous-classes, contenant uniquement des colonnes spécifiques aux sous-classes. union-subclass : similaire à join-subclass, mais la table de classe parent réunit toutes les colonnes de la sous-classe.

Les dernières versions d'Apple des systèmes iOS18, iPadOS18 et macOS Sequoia ont ajouté une fonctionnalité importante à l'application Photos, conçue pour aider les utilisateurs à récupérer facilement des photos et des vidéos perdues ou endommagées pour diverses raisons. La nouvelle fonctionnalité introduit un album appelé "Récupéré" dans la section Outils de l'application Photos qui apparaîtra automatiquement lorsqu'un utilisateur a des photos ou des vidéos sur son appareil qui ne font pas partie de sa photothèque. L'émergence de l'album « Récupéré » offre une solution aux photos et vidéos perdues en raison d'une corruption de la base de données, d'une application d'appareil photo qui n'enregistre pas correctement dans la photothèque ou d'une application tierce gérant la photothèque. Les utilisateurs n'ont besoin que de quelques étapes simples

HTML ne peut pas lire directement la base de données, mais cela peut être réalisé via JavaScript et AJAX. Les étapes comprennent l'établissement d'une connexion à la base de données, l'envoi d'une requête, le traitement de la réponse et la mise à jour de la page. Cet article fournit un exemple pratique d'utilisation de JavaScript, AJAX et PHP pour lire les données d'une base de données MySQL, montrant comment afficher dynamiquement les résultats d'une requête dans une page HTML. Cet exemple utilise XMLHttpRequest pour établir une connexion à la base de données, envoyer une requête et traiter la réponse, remplissant ainsi les données dans les éléments de la page et réalisant la fonction de lecture HTML de la base de données.

Comment utiliser MySQLi pour établir une connexion à une base de données en PHP : Inclure l'extension MySQLi (require_once) Créer une fonction de connexion (functionconnect_to_db) Appeler la fonction de connexion ($conn=connect_to_db()) Exécuter une requête ($result=$conn->query()) Fermer connexion ( $conn->close())

Pour gérer les erreurs de connexion à la base de données en PHP, vous pouvez utiliser les étapes suivantes : Utilisez mysqli_connect_errno() pour obtenir le code d'erreur. Utilisez mysqli_connect_error() pour obtenir le message d'erreur. En capturant et en enregistrant ces messages d'erreur, les problèmes de connexion à la base de données peuvent être facilement identifiés et résolus, garantissant ainsi le bon fonctionnement de votre application.

Ele.me est un logiciel qui rassemble une variété de spécialités différentes. Vous pouvez choisir et passer une commande en ligne immédiatement après avoir reçu la commande. Les utilisateurs peuvent lier WeChat via le logiciel si vous souhaitez connaître le détail. méthode de fonctionnement, n'oubliez pas de consulter le site Web PHP chinois. Instructions pour lier WeChat à Ele.me : 1. Ouvrez d'abord le logiciel Ele.me, et après être entré dans la page d'accueil, nous cliquons sur [Mon] dans le coin inférieur droit. 2. Ensuite, dans la page Ma, nous devons cliquer ; [Compte] dans le coin supérieur gauche ; 3. Accédez ensuite à la page d'informations personnelles où nous pouvons lier les téléphones mobiles, WeChat, Alipay et Taobao. 4. Après le dernier clic, sélectionnez le compte WeChat. qui doit être lié à la page d'autorisation WeChat et cliquez simplement sur [Autoriser] ;

PHP est un langage de programmation back-end largement utilisé dans le développement de sites Web. Il possède de puissantes fonctions d'exploitation de bases de données et est souvent utilisé pour interagir avec des bases de données telles que MySQL. Cependant, en raison de la complexité du codage des caractères chinois, des problèmes surviennent souvent lorsqu'il s'agit de caractères chinois tronqués dans la base de données. Cet article présentera les compétences et les pratiques de PHP dans la gestion des caractères chinois tronqués dans les bases de données, y compris les causes courantes des caractères tronqués, les solutions et des exemples de code spécifiques. Les raisons courantes pour lesquelles les caractères sont tronqués sont des paramètres de jeu de caractères incorrects dans la base de données : le jeu de caractères correct doit être sélectionné lors de la création de la base de données, comme utf8 ou u.
