adodb 连接mysql_VC++ ADO 连接 mysql

通过自己摸索和网上帮助 了解了VC++ 用ADO 连接mysql数据库的方法:

使用的方法是利用ADO通过建立ODBC数据源来最终达到访问MySQL的目的。

1.安装mysql数据库服务器程序,也可安装appserv-win32-2.5.9.rar  里面包含了appche ,php,mysql ,安装后者可以通过网页管理数据库。因为方便所以我才用后者。

3ccc380c48915775f6960ded19a2c1ab.png      

d64c470052c455db29fb738e2f3d0ad5.png

安装过程中记住密码。

2.建立数据库:

可以通过命令行 也可以通过网页建立:http://localhost/phpMyAdmin/  输入用户名root 和密码就可通过网页管理数据库。

可以导入数据库:

-- phpMyAdmin SQL Dump

-- version 2.10.2

-- http://www.phpmyadmin.net

--

-- 主机: localhost

-- 生成日期: 2009 年 07 月 24 日 11:56

-- 服务器版本: 5.0.22

-- PHP 版本: 5.2.3

SET SQL_MODE="NO_AUTO_VALUE_ON_ZERO";

--

-- 数据库: `testmysql`

--

-- --------------------------------------------------------

--

-- 表的结构 `test`

--

CREATE TABLE `test` (

`id` int(4) NOT NULL auto_increment,

`name` varchar(50) NOT NULL,

PRIMARY KEY  (`id`)

) ENGINE=InnoDB DEFAULT CHARSET=gbk AUTO_INCREMENT=3 ;

--

-- 导出表中的数据 `test`

--

INSERT INTO `test` VALUES (1, 'qq');

INSERT INTO `test` VALUES (2, 'ww');

3.安装MyODBC 我安装的是:MyODBC-3.51.11-2-win.exe

然后:开始菜单->设置->控制面板->管理工具->数据源(ODBC)->系统DSN->添加->选择MySQL ODBC 3.51 Driver

4992a809149b0c1658a70c2c27993a7b.png

这里可以填写所有的数据  以可以在程序里面填写数据 这里 DSN 为 ADOmysql

4.所有准备工作已做完,那我们就可以开始写程序连接数据库:

程序代码: 代码来源:《Visual C++ + SQL Server 数据库应用实例 完全解析》

1

cbef093dcc044b2793832001e2365e43.png// ADOConn.h: interface for the ADOConn class.

2

cbef093dcc044b2793832001e2365e43.png//

3

2f88ce130b654eb5dc6788e02dbcfc90.png//

4

cbef093dcc044b2793832001e2365e43.png#import "c:\Program Files\Common Files\System\ado\msado15.dll" no_namespace rename("EOF","adoEOF") rename("BOF","adoBOF")

5

cbef093dcc044b2793832001e2365e43.png

6

cbef093dcc044b2793832001e2365e43.png#if !defined(AFX_ADOCONN_H__AC448F02_AF26_45E4_9B2D_D7ECB8FFCFB9__INCLUDED_)

7

cbef093dcc044b2793832001e2365e43.png#define AFX_ADOCONN_H__AC448F02_AF26_45E4_9B2D_D7ECB8FFCFB9__INCLUDED_

8

cbef093dcc044b2793832001e2365e43.png

9

cbef093dcc044b2793832001e2365e43.png#if _MSC_VER > 1000

10

cbef093dcc044b2793832001e2365e43.png#pragma once

11

cbef093dcc044b2793832001e2365e43.png#endif // _MSC_VER > 1000

12

cbef093dcc044b2793832001e2365e43.png

13

cbef093dcc044b2793832001e2365e43.pngclass ADOConn  

14

2f88ce130b654eb5dc6788e02dbcfc90.png{

15

df37983f39daa189b8c814e01a6a9011.png// 定义变量

16

df37983f39daa189b8c814e01a6a9011.pngpublic:

17

df37983f39daa189b8c814e01a6a9011.png    //添加一个指向Connection对象的指针:

18

df37983f39daa189b8c814e01a6a9011.png    _ConnectionPtr m_pConnection;

19

df37983f39daa189b8c814e01a6a9011.png    //添加一个指向Recordset对象的指针:

20

df37983f39daa189b8c814e01a6a9011.png    _RecordsetPtr m_pRecordset;

21

df37983f39daa189b8c814e01a6a9011.png// 定义方法

22

df37983f39daa189b8c814e01a6a9011.pngpublic:

23

df37983f39daa189b8c814e01a6a9011.png    ADOConn();

24

df37983f39daa189b8c814e01a6a9011.png    virtual ~ADOConn();

25

df37983f39daa189b8c814e01a6a9011.png    // 初始化—连接数据库

26

df37983f39daa189b8c814e01a6a9011.png    void  OnInitADOConn();

27

df37983f39daa189b8c814e01a6a9011.png    // 执行查询

28

df37983f39daa189b8c814e01a6a9011.png    _RecordsetPtr& GetRecordSet(_bstr_t bstrSQL);

29

df37983f39daa189b8c814e01a6a9011.png    // 执行SQL语句,Insert Update _variant_t

30

df37983f39daa189b8c814e01a6a9011.png    BOOL ExecuteSQL(_bstr_t bstrSQL);

31

df37983f39daa189b8c814e01a6a9011.png    void ExitConnect();

32

0ac3a2d53663ec01c7f7225264eeefae.png};

33

cbef093dcc044b2793832001e2365e43.png

34

cbef093dcc044b2793832001e2365e43.png#endif // !defined(AFX_ADOCONN_H__AC448F02_AF26_45E4_9B2D_D7ECB8FFCFB9__INCLUDED_)

35

cbef093dcc044b2793832001e2365e43.png

1

cbef093dcc044b2793832001e2365e43.png// ADOConn.cpp: implementation of the ADOConn class.

2

cbef093dcc044b2793832001e2365e43.png//

3

2f88ce130b654eb5dc6788e02dbcfc90.png//

4

cbef093dcc044b2793832001e2365e43.png

5

cbef093dcc044b2793832001e2365e43.png#include "stdafx.h"

6

cbef093dcc044b2793832001e2365e43.png#include "ADOConn.h"

7

cbef093dcc044b2793832001e2365e43.png

8

cbef093dcc044b2793832001e2365e43.png#ifdef _DEBUG

9

cbef093dcc044b2793832001e2365e43.png#undef THIS_FILE

10

cbef093dcc044b2793832001e2365e43.pngstatic char THIS_FILE[]=__FILE__;

11

cbef093dcc044b2793832001e2365e43.png#define new DEBUG_NEW

12

cbef093dcc044b2793832001e2365e43.png#endif

13

cbef093dcc044b2793832001e2365e43.png

14

2f88ce130b654eb5dc6788e02dbcfc90.png//

15

cbef093dcc044b2793832001e2365e43.png// Construction/Destruction

16

2f88ce130b654eb5dc6788e02dbcfc90.png//

17

cbef093dcc044b2793832001e2365e43.png

18

cbef093dcc044b2793832001e2365e43.pngADOConn::ADOConn()

19

2f88ce130b654eb5dc6788e02dbcfc90.png{

20

df37983f39daa189b8c814e01a6a9011.png

21

0ac3a2d53663ec01c7f7225264eeefae.png}

22

cbef093dcc044b2793832001e2365e43.png

23

cbef093dcc044b2793832001e2365e43.pngADOConn::~ADOConn()

24

2f88ce130b654eb5dc6788e02dbcfc90.png{

25

df37983f39daa189b8c814e01a6a9011.png

26

0ac3a2d53663ec01c7f7225264eeefae.png}

27

cbef093dcc044b2793832001e2365e43.png

28

cbef093dcc044b2793832001e2365e43.png// 初始化—连接数据库

29

cbef093dcc044b2793832001e2365e43.pngvoid  ADOConn::OnInitADOConn()

30

2f88ce130b654eb5dc6788e02dbcfc90.png{

31

df37983f39daa189b8c814e01a6a9011.png    // 初始化OLE/COM库环境 

32

df37983f39daa189b8c814e01a6a9011.png    ::CoInitialize(NULL);

33

df37983f39daa189b8c814e01a6a9011.png  

34

df37983f39daa189b8c814e01a6a9011.png    try

35

f70a0fde2b51b7dd92a70e712e540cf6.png    {

36

df37983f39daa189b8c814e01a6a9011.png        // 创建Connection对象

37

df37983f39daa189b8c814e01a6a9011.png        m_pConnection.CreateInstance("ADODB.Connection");

38

df37983f39daa189b8c814e01a6a9011.png        m_pConnection->Open("DSN=ADOmysql;Server= localhost;Database=testmysql","root","123456",adModeUnknown);

39

4a5daaec04350a363f186a4d2c5ed6ce.png    } 

40

df37983f39daa189b8c814e01a6a9011.png    // 捕捉异常

41

df37983f39daa189b8c814e01a6a9011.png    catch(_com_error e)

42

f70a0fde2b51b7dd92a70e712e540cf6.png    {

43

df37983f39daa189b8c814e01a6a9011.png        // 显示错误信息

44

df37983f39daa189b8c814e01a6a9011.png        AfxMessageBox(e.Description());

45

4a5daaec04350a363f186a4d2c5ed6ce.png    }

46

0ac3a2d53663ec01c7f7225264eeefae.png}

47

cbef093dcc044b2793832001e2365e43.png

48

cbef093dcc044b2793832001e2365e43.png// 执行查询

49

cbef093dcc044b2793832001e2365e43.png_RecordsetPtr&  ADOConn::GetRecordSet(_bstr_t bstrSQL)

50

2f88ce130b654eb5dc6788e02dbcfc90.png{

51

df37983f39daa189b8c814e01a6a9011.png    try

52

f70a0fde2b51b7dd92a70e712e540cf6.png    {

53

df37983f39daa189b8c814e01a6a9011.png        // 连接数据库,如果Connection对象为空,则重新连接数据库

54

df37983f39daa189b8c814e01a6a9011.png        if(m_pConnection==NULL)

55

df37983f39daa189b8c814e01a6a9011.png            OnInitADOConn();

56

df37983f39daa189b8c814e01a6a9011.png        // 创建记录集对象

57

df37983f39daa189b8c814e01a6a9011.png        m_pRecordset.CreateInstance(__uuidof(Recordset));

58

df37983f39daa189b8c814e01a6a9011.png        // 取得表中的记录

59

df37983f39daa189b8c814e01a6a9011.png        m_pRecordset->Open(bstrSQL,m_pConnection.GetInterfacePtr(),adOpenDynamic,adLockOptimistic,adCmdText);

60

4a5daaec04350a363f186a4d2c5ed6ce.png    }

61

df37983f39daa189b8c814e01a6a9011.png    // 捕捉异常

62

df37983f39daa189b8c814e01a6a9011.png    catch(_com_error e)

63

f70a0fde2b51b7dd92a70e712e540cf6.png    {

64

df37983f39daa189b8c814e01a6a9011.png        // 显示错误信息

65

df37983f39daa189b8c814e01a6a9011.png        AfxMessageBox(e.Description());

66

4a5daaec04350a363f186a4d2c5ed6ce.png    }

67

df37983f39daa189b8c814e01a6a9011.png    // 返回记录集

68

df37983f39daa189b8c814e01a6a9011.png    return m_pRecordset;

69

0ac3a2d53663ec01c7f7225264eeefae.png}

70

cbef093dcc044b2793832001e2365e43.png

71

cbef093dcc044b2793832001e2365e43.png // 执行SQL语句,Insert Update _variant_t

72

cbef093dcc044b2793832001e2365e43.pngBOOL ADOConn::ExecuteSQL(_bstr_t bstrSQL)

73

2f88ce130b654eb5dc6788e02dbcfc90.png{

74

df37983f39daa189b8c814e01a6a9011.png//    _variant_t RecordsAffected;

75

df37983f39daa189b8c814e01a6a9011.png    try

76

f70a0fde2b51b7dd92a70e712e540cf6.png    {

77

df37983f39daa189b8c814e01a6a9011.png        // 是否已经连接数据库

78

df37983f39daa189b8c814e01a6a9011.png        if(m_pConnection == NULL)

79

df37983f39daa189b8c814e01a6a9011.png            OnInitADOConn();

80

df37983f39daa189b8c814e01a6a9011.png        // Connection对象的Execute方法:(_bstr_t CommandText, 

81

df37983f39daa189b8c814e01a6a9011.png        // VARIANT * RecordsAffected, long Options ) 

82

df37983f39daa189b8c814e01a6a9011.png        // 其中CommandText是命令字串,通常是SQL命令。

83

df37983f39daa189b8c814e01a6a9011.png        // 参数RecordsAffected是操作完成后所影响的行数, 

84

df37983f39daa189b8c814e01a6a9011.png        // 参数Options表示CommandText的类型:adCmdText-文本命令;adCmdTable-表名

85

df37983f39daa189b8c814e01a6a9011.png        // adCmdProc-存储过程;adCmdUnknown-未知

86

df37983f39daa189b8c814e01a6a9011.png        m_pConnection->Execute(bstrSQL,NULL,adCmdText);

87

df37983f39daa189b8c814e01a6a9011.png        return true;

88

4a5daaec04350a363f186a4d2c5ed6ce.png    }

89

df37983f39daa189b8c814e01a6a9011.png    catch(_com_error e)

90

f70a0fde2b51b7dd92a70e712e540cf6.png    {

91

df37983f39daa189b8c814e01a6a9011.png        AfxMessageBox(e.Description());

92

df37983f39daa189b8c814e01a6a9011.png        return false;

93

4a5daaec04350a363f186a4d2c5ed6ce.png    }

94

0ac3a2d53663ec01c7f7225264eeefae.png}

95

cbef093dcc044b2793832001e2365e43.png

96

cbef093dcc044b2793832001e2365e43.pngvoid ADOConn::ExitConnect()

97

2f88ce130b654eb5dc6788e02dbcfc90.png{

98

df37983f39daa189b8c814e01a6a9011.png    // 关闭记录集和连接

99

df37983f39daa189b8c814e01a6a9011.png    if (m_pRecordset != NULL)

100

df37983f39daa189b8c814e01a6a9011.png        m_pRecordset->Close();

101

df37983f39daa189b8c814e01a6a9011.png    m_pConnection->Close();

102

df37983f39daa189b8c814e01a6a9011.png    // 释放环境

103

df37983f39daa189b8c814e01a6a9011.png    ::CoUninitialize();

104

0ac3a2d53663ec01c7f7225264eeefae.png}

建立本类的一个对象 然后就可访问mysql数据库了:

1

cbef093dcc044b2793832001e2365e43.png    ADOConn m_ADO;

2

cbef093dcc044b2793832001e2365e43.png    m_ADO.OnInitADOConn();

3

cbef093dcc044b2793832001e2365e43.png    

4

cbef093dcc044b2793832001e2365e43.png    //设置SELECT语句

5

cbef093dcc044b2793832001e2365e43.png    _bstr_t vSQL;

6

cbef093dcc044b2793832001e2365e43.png    vSQL = "SELECT * FROM test WHERE id = 1";

7

cbef093dcc044b2793832001e2365e43.png    //执行SELETE语句

8

cbef093dcc044b2793832001e2365e43.png    _RecordsetPtr m_pRecordset;

9

cbef093dcc044b2793832001e2365e43.png    m_pRecordset = m_ADO.GetRecordSet(vSQL);

10

cbef093dcc044b2793832001e2365e43.png

11

cbef093dcc044b2793832001e2365e43.png    CString name0;

12

cbef093dcc044b2793832001e2365e43.png    //返回各列的值

13

cbef093dcc044b2793832001e2365e43.png    if (!m_pRecordset->adoEOF)

14

2f88ce130b654eb5dc6788e02dbcfc90.png    {

15

df37983f39daa189b8c814e01a6a9011.png

16

df37983f39daa189b8c814e01a6a9011.png        name0 = (LPCTSTR)(_bstr_t)m_pRecordset->GetCollect("name");

17

0ac3a2d53663ec01c7f7225264eeefae.png    }

18

cbef093dcc044b2793832001e2365e43.png    //断开与数据库的连接

19

cbef093dcc044b2793832001e2365e43.png    m_ADO.ExitConnect();

20

cbef093dcc044b2793832001e2365e43.png

21

cbef093dcc044b2793832001e2365e43.png    MessageBox(name0, L"id = 1", 0);

运行结果:

66a7d98eb6fd1717dd936f34ad59e7dd.png

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值