繁体   English   中英

c ++和MySQL连接

[英]c++ and MySQL connection

我对C ++完全陌生,到目前为止我还没有做太多。 现在,我需要建立与mysql -server的数据库连接,以检索一些数据。

所以我发现这个问题MySQL C ++ Connector用SELECT查询得到一个字符串 我试图按照问题中的说明进行设置,但最终出现了几个错误。

我的代码:

// important part for the mysql-stuff
#include <mysql/mysql.h>


// Basic setup for the DB
static char const *opt_host_name = "localhost"; /* HOST */
static char const *opt_user_name = "root"; /* USERNAME */
static char const *opt_password = "mypass"; /* PASSWORD */
static unsigned int opt_port_num = 3306; /* PORT */
static char const *opt_socket_name = NULL; /* SOCKET NAME, DO NOT CHANGE */
static char const *opt_db_name = "mydb"; /* DATABASE NAME */
static unsigned int opt_flags = 0; /* CONNECTION FLAGS, DO NOT CHANGE */

这是我尝试获取输出的方法:

int main(void) {
    try {

        // setup the connection
        MYSQL *conn; /* pointer to connection handler */
        MYSQL_RES *res; /* holds the result set */
        MYSQL_ROW row;

        /* INITIALIZE CONNECTION HANDLER, DO NOT CHANGE */
        conn = mysql_init(NULL);

        /* THIS CONNECTS TO SERVER, DO NOT CHANGE ANYTHING HERE */
        mysql_real_connect(conn, opt_host_name, opt_user_name, opt_password,
            opt_db_name, opt_port_num, opt_socket_name, opt_flags);

        /* show tables in the database (test for errors also) */
        mysql_query(conn, "SELECT * FROM plates");
        res = mysql_store_result(conn);

        // get the number of the columns
        int num_fields = mysql_num_fields(res);

        while ((row = mysql_fetch_row(res))) {
            // Print all columns
            for (int i = 0; i < num_fields; i++) {
                // Make sure row[i] is valid!

                cout << row[i];
            }
        }
    }
}

在文件所在的特定文件夹中调用make之后,它将输出以下内容:

未定义对mysql_init的引用

对mysql_real_connect的未定义引用

...以及该代码中列出的每个函数。

这是Makefile

SAMPLES = cpd01.out

.PHONY: all
all: $(SAMPLES)

.PHONY: clean
clean:
    rm -f $(SAMPLES)

%.out : %.cpp
    g++ -g3 -o $@ $< -DLINUX -I/usr/include/gx -ldl -DGX_NAMESPACES

我没有创建该Makefile,如上所述,我不知道PHONY(或其他名称)代表什么。 我想这将需要更深入地研究。

如果我了解PaulMcKenzie的正确性,则必须在此处添加一些内容,对吗?

MySQL带有您可以运行的脚本,该脚本告诉您要链接到的库: mysql_config --libs

在我的系统上,它给出:

$ mysql_config --libs
-L/usr/lib64/mysql -lmysqlclient -lpthread -lz -lm -lssl -lcrypto -ldl

您需要将这些标志添加到链接命令(或如果同时链接所有链接,则将其添加到编译器命令)。

如果您使用的是GNU Make ,则应该可以执行以下操作:

SAMPLES = cpd01.out

MYSQL_LIBS = $(shell mysql_config --libs)

.PHONY: all
all: $(SAMPLES)

.PHONY: clean
clean:
    rm -f $(SAMPLES)

%.out : %.cpp
    g++ -g3 -o $@ $< -DLINUX -I/usr/include/gx -ldl -DGX_NAMESPACES $(MYSQL_LIBS)

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM