现在的位置: 首页 > 综合 > 正文

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

2013年09月12日 ⁄ 综合 ⁄ 共 2832字 ⁄ 字号 评论关闭

 

一、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 $$

抱歉!评论已关闭.