Maison base de données tutoriel mysql VC++对Access数据库的操作(查询、插入、更新、删除等)

VC++对Access数据库的操作(查询、插入、更新、删除等)

Jun 07, 2016 pm 03:42 PM
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软件,点击“空白数据库”;

VC++对Access数据库的操作(查询、插入、更新、删除等)

第二步:设置预创建空白数据库的文件名和文件类型(文件名:point32.mdb,文件类型:Microsoft Office Access 2000 数据库(*.mdb));

VC++对Access数据库的操作(查询、插入、更新、删除等)

第三步:“创建”空白数据库

VC++对Access数据库的操作(查询、插入、更新、删除等)

第四步:为该数据库“设置数据库密码”(本例中密码设置为:1234);

VC++对Access数据库的操作(查询、插入、更新、删除等)

第五步:在该数据库中创建一张表,例如:TestTab(编号,姓名,性别,年龄);

VC++对Access数据库的操作(查询、插入、更新、删除等)

第六步:表创建完成后,保存并关闭数据库,然后将该数据库文件(point32.mdb)剪切到你的VC++程序debug或release目录中,则准备工作完成。

其次,在VC++ MFC中编写对该数据库TestTab表进行数据查询插入更新删除操作的方法:

(1)导入才用ado方式访问Access数据库所需的DLL

1

#import "C:\Program Files\Common Files\system\ado\msado15.dll" no_namespace rename("EOF","adoEOF")//ado访问ACCESS<strong>数据库</strong>必需

Copier après la connexion

(2)在程序的入口函数中,初始化OLE以支持应用程序

1

AfxOleInit();

Copier après la connexion

(3)获取应用程序(EXE)所在路径

1

2

3

4

5

6

7

CString path;//应用程序所在路径

char filepath[256];

char* pPath;

GetModuleFileName(AfxGetInstanceHandle(),filepath,256);

pPath  = strrchr(filepath,'\\');

*pPath = 0;

path = filepath;

Copier après la connexion

(4)创建数据库访问连接字符串

1

2

3

4

5

6

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

Copier après la connexion

(5)查询TestTab表中数据方法实现

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

26

27

28

29

30

31

32

33

34

35

36

37

38

39

40

41

42

43

44

45

46

47

48

49

50

51

52

53

54

55

56

57

58

59

60

61

62

63

64

65

66

67

68

69

70

71

72

73

74

75

76

77

78

79

80

81

82

83

84

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

}

Copier après la connexion

(6)向TestTab表中插入数据方法实现

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

26

27

28

29

30

31

32

33

34

35

36

37

38

39

40

41

42

//向表中<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();

}

Copier après la connexion

(7)更新TestTab表中数据方法实现

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

26

27

28

29

30

31

32

33

34

35

36

37

38

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

}

Copier après la connexion

(8)删除TestTab表中数据及重置表中自动编号主键(key)方法现实

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

26

27

28

29

30

31

32

33

34

35

36

37

38

39

40

41

42

43

44

45

46

47

48

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

}

Copier après la connexion

Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn

Outils d'IA chauds

Undresser.AI Undress

Undresser.AI Undress

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

AI Clothes Remover

AI Clothes Remover

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

Undress AI Tool

Undress AI Tool

Images de déshabillage gratuites

Clothoff.io

Clothoff.io

Dissolvant de vêtements AI

AI Hentai Generator

AI Hentai Generator

Générez AI Hentai gratuitement.

Article chaud

R.E.P.O. Crystals d'énergie expliqués et ce qu'ils font (cristal jaune)
4 Il y a quelques semaines By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. Meilleurs paramètres graphiques
4 Il y a quelques semaines By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. Comment réparer l'audio si vous n'entendez personne
4 Il y a quelques semaines By 尊渡假赌尊渡假赌尊渡假赌
WWE 2K25: Comment déverrouiller tout dans Myrise
1 Il y a quelques mois By 尊渡假赌尊渡假赌尊渡假赌

Outils chauds

Bloc-notes++7.3.1

Bloc-notes++7.3.1

Éditeur de code facile à utiliser et gratuit

SublimeText3 version chinoise

SublimeText3 version chinoise

Version chinoise, très simple à utiliser

Envoyer Studio 13.0.1

Envoyer Studio 13.0.1

Puissant environnement de développement intégré PHP

Dreamweaver CS6

Dreamweaver CS6

Outils de développement Web visuel

SublimeText3 version Mac

SublimeText3 version Mac

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

Comment convertir le pdf Deepseek Comment convertir le pdf Deepseek Feb 19, 2025 pm 05:24 PM

Deepseek ne peut pas convertir les fichiers directement en PDF. Selon le type de fichier, vous pouvez utiliser différentes méthodes: documents communs (Word, Excel, PowerPoint): utilisez Microsoft Office, LibreOffice et d'autres logiciels à exporter sous forme de PDF. Image: Enregistrer sous le nom de PDF à l'aide d'une visionneuse d'image ou d'un logiciel de traitement d'image. Pages Web: Utilisez la fonction "Imprimer en PDF" du navigateur ou l'outil Web dédié à PDF. Formats peu communs: trouvez le bon convertisseur et convertissez-le en PDF. Il est crucial de choisir les bons outils et d'élaborer un plan basé sur la situation réelle.

Windows ne peut pas accéder au périphérique, au chemin ou au fichier spécifié Windows ne peut pas accéder au périphérique, au chemin ou au fichier spécifié Jun 18, 2024 pm 04:49 PM

L'ordinateur d'un ami présente un tel défaut. Lors de l'ouverture de "Ce PC" et du fichier du lecteur C, il affichera "Explorer.EXE Windows ne peut pas accéder au périphérique, au chemin ou au fichier spécifié. Vous ne disposez peut-être pas des autorisations appropriées pour accéder au projet. " Y compris les dossiers, fichiers, cet ordinateur, la corbeille, etc., un double-clic fera apparaître une telle fenêtre, et un clic droit pour l'ouvrir est normal. Ceci est dû à une mise à jour du système. Si vous rencontrez également cette situation, l'éditeur ci-dessous vous apprendra comment la résoudre. 1. Ouvrez l'éditeur de registre Win+R et entrez regedit, ou cliquez avec le bouton droit sur le menu Démarrer pour exécuter et entrez regedit. 2. Localisez le registre « Computer\HKEY_CLASSES_ROOT\PackagedCom\ClassInd » ;

Windows suspend définitivement les mises à jour, Windows désactive les mises à jour automatiques Windows suspend définitivement les mises à jour, Windows désactive les mises à jour automatiques Jun 18, 2024 pm 07:04 PM

Les mises à jour Windows peuvent provoquer certains des problèmes suivants : 1. Problèmes de compatibilité : certaines applications, pilotes ou périphériques matériels peuvent être incompatibles avec les nouvelles mises à jour Windows, ce qui entraîne un dysfonctionnement ou un blocage. 2. Problèmes de performances : Parfois, les mises à jour de Windows peuvent ralentir le système ou subir une dégradation des performances. Cela peut être dû à de nouvelles fonctionnalités ou à des améliorations nécessitant davantage de ressources pour fonctionner. 3. Problèmes de stabilité du système : certains utilisateurs ont signalé qu'après l'installation des mises à jour Windows, le système pouvait rencontrer des pannes inattendues ou des erreurs d'écran bleu. 4. Perte de données : Dans de rares cas, les mises à jour Windows peuvent entraîner une perte de données ou une corruption de fichiers. C'est pourquoi avant d'effectuer des mises à jour importantes, sauvegardez votre

iOS 18 ajoute une nouvelle fonction d'album 'Récupéré' pour récupérer les photos perdues ou endommagées iOS 18 ajoute une nouvelle fonction d'album 'Récupéré' pour récupérer les photos perdues ou endommagées Jul 18, 2024 am 05:48 AM

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

Principe de jalonnement Astar, démantèlement des revenus, projets et stratégies de largage aérien et stratégie opérationnelle au niveau de la nounou Principe de jalonnement Astar, démantèlement des revenus, projets et stratégies de largage aérien et stratégie opérationnelle au niveau de la nounou Jun 25, 2024 pm 07:09 PM

Table des matières Principe de jalonnement d'Astar Dapp Revenus de jalonnement Démantèlement des projets potentiels de largage aérien : AlgemNeurolancheHealthreeAstar Degens DAOVeryLongSwap Stratégie et fonctionnement du jalonnement "AstarDapp Staking" a été mis à niveau vers la version V3 au début de cette année, et de nombreux ajustements ont été apportés aux revenus de jalonnement règles. À l'heure actuelle, le premier cycle de jalonnement est terminé et le sous-cycle de « vote » du deuxième cycle de jalonnement vient de commencer. Pour bénéficier des avantages « récompense supplémentaire », vous devez franchir cette étape critique (qui devrait durer jusqu'au 26 juin, soit moins de 5 jours). Je vais détailler les revenus du staking Astar,

Comment résoudre le problème de l'interface tiers renvoyant 403 dans l'environnement Node.js? Comment résoudre le problème de l'interface tiers renvoyant 403 dans l'environnement Node.js? Mar 31, 2025 pm 11:27 PM

Résolvez le problème de l'interface tiers renvoyant 403 dans l'environnement Node.js. Lorsque nous utilisons Node.js pour appeler des interfaces tierces, nous rencontrons parfois une erreur de 403 à partir de l'interface renvoyant 403 ...

Comment mettre à jour Google Chrome Comment mettre à jour Google Chrome Jul 20, 2024 am 12:26 AM

Les mises à jour et mises à niveau du navigateur ne sont pas rares, et certains des problèmes que nous rencontrons en ligne peuvent être causés par le fait que le système n'est pas mis à jour à temps. Des mises à jour stables peuvent garantir une utilisation normale du navigateur, et nous pouvons mieux utiliser les fonctions internes et maximiser les performances du navigateur. Alors comment mettre à jour Google Chrome ? Ce site vous explique comment mettre à jour Google Chrome pour résoudre les difficultés de chacun. La première étape pour mettre à jour Google Chrome : ouvrez le navigateur Chrome et cliquez sur les [trois points] dans le coin supérieur droit. (Comme le montre l'image) Étape 2 : Cliquez sur [Paramètres] dans le menu déroulant pour entrer. (Comme le montre l'image) Étape 3 : Recherchez [À propos de Chrome] sur la droite et cliquez pour entrer. (Comme le montre l'image) Étape 4 : Le navigateur Chrome vérifiera et installera automatiquement les mises à jour. (Comme le montre l'image

Partage de connexion Laravel Redis: pourquoi la méthode de sélection affecte-t-elle d'autres connexions? Partage de connexion Laravel Redis: pourquoi la méthode de sélection affecte-t-elle d'autres connexions? Apr 01, 2025 am 07:45 AM

L'impact du partage des connexions redis dans Laravel Framework et sélectionnez Méthodes Lors de l'utilisation de Laravel Framework et Redis, les développeurs peuvent rencontrer un problème: grâce à la configuration ...

See all articles