[英]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.