MySQL在Windows上的安装及VC通过ODBC连接MySQL数据库

时间:2021-12-06 21:52:27

一、MySQL的安装

1、下载地址

http://dev.mysql.com/downloads/mysql/5.0.html

2、下载内容

(1)mysql-noinstall-5.0.45-win32.zip

(2)mysql-gui-tools-noinstall-5.0-r12-win32.zip

(3)mysql-connector-odbc-noinstall-3.51.21-win32.zip

3、安装步骤

3.1 安装MySQL服务

(1)新建My.ini,内容如下,把该文件放在系统盘Windows文件夹内:

[WinMySQLAdmin]

Server=D:/MySQL-DB/mysql-5.0.45-win32/bin/mysqld-nt.exe

[mysql]

default-character-set=utf8

[client]
default-character-set=utf8

[mysqld]
default-character-set=utf8

basedir=D:/MySQL-DB/mysql-5.0.45-win32

datadir=D:/MySQL-DB/mysql-5.0.45-win32/data 

其中basedir是安装目录。

(2)打开MS-DOS窗口,切换到“D:/MySQL-DB/mysql-5.0.45-win32/bin”目录;或者把“D:/MySQL-DB/mysql-5.0.45-win32/bin”添加到“环境变量”的“Path”变量中;执行命令如下:

mysqld-nt -install

(3)启动和停止mysql服务

 D:/MySQL-DB/mysql-5.0.45-win32/bin>net start mysql

 D:/MySQL-DB/mysql-5.0.45-win32/bin>net stop mysql

(4)移出mysql服务

mysqld-nt --remove

3.2 安装MySQL GUI

(1)把下载的mysql-gui-tools-noinstall-5.0-r12-win32.zip解压到D:/MySQL-GUI/MySQL GUI Tools 5.0目录中。

(2)双击该目录下的MySQLSystemTrayMonitor.exe

(3)在弹出界面中使用root用户登陆,密码为空

(4)登陆后在 User Administration中可以添加新用户、修改密码及分配新加用户对数据库的权限,在Catalogs中可以创建schema。

(5)使用该GUI可以建立存储过程、表等。

3.3 安装MySQL ODBC驱动

(1)把mysql-connector-odbc-noinstall-3.51.21-win32解压到D:/MySQL-ODBC/mysql-connector-odbc-noinstall-3.51.21-win32下,可以修改路径。

(2)在cmd下进入该目录,运行命令

Install 0

安装成功,在数据源中会显示MySQL的驱动程序。

二、VC通过ODBC连接MySQL

1、VC中代码如下

#define     CONNECT_COMMAND                 _T("DSN=SpecialIntroduce;Driver={MySQL   ODBC   3.51   Driver};UID=cmsuser;PWD=cmspassword")

(1)判断数据库是否连接

CDatabase m_dbBase;

m_dbBase.SetLoginTimeout(15);
  bConnect = m_dbBase.OpenEx(CONNECT_COMMAND,CDatabase::openReadOnly | CDatabase::noOdbcDialog);

(2)调用存储过程事例

CString strSql;
 strSql.Format(L"{CALL procGetSpecialMenuInfoBySMname('%s')}",strMname);
 try
 {
  recordSet.Open(CRecordset::forwardOnly,strSql,CRecordset::readOnly);
 }
 catch(CException * e)
 {
  e->ReportError();
 }
 while (!recordSet.IsEOF())
 {
  recordSet.GetFieldValue(_T("SMid"),var);
  menuInfos.Mid = (int)var.m_iVal;
  recordSet.GetFieldValue(_T("SMname"),menuInfos.Mname);
  recordSet.GetFieldValue(_T("SMprice"),menuInfos.Mprice);
  recordSet.GetFieldValue(_T("SMmeasure"),menuInfos.Mmeasure);
  recordSet.MoveNext();
 }
 recordSet.Close();

最后,若VC界面显示有中文,在配置数据源时,在Connection Options界面的character set 选项中选择gb2312既可以。

三、MySQL建表及存储过程事例

DROP TABLE IF EXISTS `TableName`;
CREATE TABLE IF NOT EXISTS `TableName`
(
  `SMid` INT UNSIGNED NOT NULL AUTO_INCREMENT,
  `SMname` VARCHAR(20) NOT NULL,
  `SMname1` VARCHAR(20) NOT NULL,
  `SMmeasure` VARCHAR(6) NOT NULL,
  `SMprice` DECIMAL(18,2) NOT NULL,
  `SMstatus` BIT NOT NULL DEFAULT 1,
  `SMremark` VARCHAR(200),
  CONSTRAINT FK_TableName_SMid PRIMARY KEY (`SMid`),
  CONSTRAINT UQ_TableName_SMname UNIQUE (`SMname`)
)ENGINE=InnoDB AUTO_INCREMENT=1000 DEFAULT CHARSET=UTF8;

 

DELIMITER $$

DROP PROCEDURE IF EXISTS `SchemaName`.`procGetxx` $$
CREATE PROCEDURE `SchemaName`.`procGetxx` (SMnames VARCHAR(20))
BEGIN
SELECT
      `SMid`,
      `SMname`,
      `SMprice`,
      `SMmeasure`
FROM
      `TableName`
WHERE
      `SMname` = SMnames;
END $$

DELIMITER ;

DELIMITER $$