MySQL Embedded程序启动成功实验

今天,碰巧有人问,说写的代码server_init,老是失败,我不信,试了一番,大费周折,总算成功。
有兴趣的,不妨自己动手一试,蛮有意思的。
我机器上原本有一个解压缩版的MySQL5.0.9,位于D:/program/mysql-5.0.9-beta-win32,默认存储引擎是InnoDB

1. 为便于测试,首先建立一个测试表,并插入几条记录,引擎定为MyISAM

create table t2(id int primary key, col2 varchar(32)) engine=MyISAM;

2. 创建EmbedServer的配置文件,

D:/program/mysql-5.0.9-beta-win32/Embedded/my.ini,值得一提的是,差点把我害惨了,就是Server那一项的名字必须与你的Server程序的名字保持一致。这里,EmbedMySQLServer就是我后边的exe程序的名,否则server永远也启不来。

内容如下:

[EmbedMySQLServer]
basedir = D:/program/mysql-5.0.9-beta-win32
datadir = D:/program/mysql-5.0.9-beta-win32/data
language = D:/program/mysql-5.0.9-beta-win32/share/english
skip-innodb
port=3306

[libmysqld_client]
language = D:/program/mysql-5.0.9-beta-win32/share/english
port=3306

3. 开始写自己的代码了

create EmbedMySQLServer.exe, source code like:

// #define _WIN32_WINNT 0x0400
#include <windows.h>
#include <stdio.h>
#include <stdlib.h>
#include <stdarg.h>
#include "mysql.h"

MYSQL *mysql;
MYSQL_RES *results;
MYSQL_ROW record;

#pragma comment(lib, "D://program//mysql-5.0.9-beta-win32//Embedded//DLL//debug//libmysqld.lib")

static char *server_options[] = { "mysql_test", "--defaults-file=D:/program/mysql-5.0.9-beta-win32/Embedded/my.ini" };
int num_elements = sizeof(server_options)/ sizeof(char *);

static char *server_groups[] = { "EmbedMySQLServer", "libmysqld_client" };

int main(void)
{
int ret = mysql_server_init(num_elements, server_options, server_groups);
printf("return %ld/n", ret);
mysql = mysql_init(NULL);
mysql_options(mysql, MYSQL_READ_DEFAULT_GROUP, "libmysqld_client");
mysql_options(mysql, MYSQL_OPT_USE_EMBEDDED_CONNECTION, NULL);

MYSQL* t = mysql_real_connect(mysql, NULL,"test","test", "test", 0,NULL,0);

mysql_query(mysql, "SELECT id, col2 FROM t2");

results = mysql_store_result(mysql);

while((record = mysql_fetch_row(results))) {
printf("%s - %s /n", record[0], record[1]);
}

mysql_free_result(results);
mysql_close(mysql);
mysql_server_end();

return 0;
}
4. 最终运行结果:

return 0
1 - test
2 - test
3 - test
4 - test
5 - fdas
Press any key to continue

像这类东东,MySQL Online Doc都没好好说,它都推荐买它的商业license,看来自己多动动手,也蛮有意思的。

(0)

相关推荐

  • MySQL数据库的启动与登录

    MySQL数据库安装完成之后,需要启动服务器进程,不然客户端无法连接数据库,最基础的就是通过DOS命令行工具登录,另外,可以用MySQL数据库的一些图形化管理工具也可以进行登录. 在启动数据库之前我们 ...

  • 怎么解决mysql服务无法启动的问题

    作为一名程序猿,必不可少的便是和mysql打交道,那当mysql服务无法启动时该怎么解决呢?下面有一些具体的操作可以提供参考. 操作方法 01 找到mysql安装目录,将其配置文件my.default ...

  • linux 下MySQL服务器的启动与停止

    一、以非特权用户运行MySQL服务器 在讨论如何启动MySQL服务器之前,让我们考虑一下应该以什么用户身份运行MySQL服务器。服务器可以手动或自动启动。如果你手动启动它,服务器以你登录Unix(Li ...

  • 解决win7系统MySQL服务无法启动报错1067的四种方法

    有些win7系统用户在登陆mysql或者重装mysql时出现“无法启动MYSQL服务,错误1067”,而且重启.修复注册表都没办法解决问题.那么遇到MySQL服务无法启动问题该怎么解决呢?针对此问题, ...

  • Windows 10中的应用程序启动问题如何快速解决?

    相信很多小伙伴都有在使用windows10系统的电脑,那么其中的应用程序启动问题我们该如何解决呢?下面小编就来为大家介绍.具体如下:在解决问题前,我们需要先检查电脑系统中是否有损坏的文件RegCure ...

  • wifi共享精灵启动成功手机搜不到解决方法

    wifi共享精灵手机搜不到怎么办?如果你遇到了wifi共享精灵启动成功手机搜不到故障的话可以参考下文,有很多网友在使用wifi共享精灵的过程中遇到了此故障,希望下文的方法对大家有所帮助。 右键点击电脑 ...

  • WinForm程序启动时不显示主窗体的5种方法

    实现代码及简短解释如下: 复制代码 代码如下: //隐藏窗体的方法1/5:不指定任何窗体为主窗体 //注意:通常,在一个程序中,关闭主窗体,就可以关闭应用程序。 //但是在没有主窗体中,不行。 //只 ...

  • wifi共享精灵启动成功手机搜不到热点是什么情况该怎么解决

    很多朋友遇到了wifi共享精灵启动成功手机搜不到热点的情况,那么遇到WiFi共享精灵手机搜不到的问题该如何解决呢?绿茶小编接下来就为大家介绍一下方法。 首先看看是不是无线网卡驱动的问题,点wifi助手 ...

  • WiFi共享精灵启动成功后手机搜索不到热点的解决方法

    WiFi共享精灵搜索不到热点怎么办?有不少用户表示wifi共享精灵启动成功后,手机搜索不到热点,不能忍的是被人能搜到自己却搜到。这是怎么回事呢?小伙伴们不要着急,小编今天给大家带来了WiFi共享精灵搜 ...