1

我是mySQL编程的新手,似乎遇到了一个非常基本的问题。

我有以下代码,但在“创建数据库”部分出现分段错误。

MYSQL *s1;
MYSQL mysql_sense;
char strBuf[8192] = {0};
char DB_NAME[300] = "0_4_3";

mysql_init(&mysql_sense);

sprintf(strBuf, "CREATE DATABASE IF NOT EXISTS %s;", DB_NAME);
mysql_real_query(&mysql_sense, strBuf, strlen(strBuf));  // seg fault here

我试过

CREATE DATABASE IF NOT EXISTS 0_4_3

在实际的 mySQL 中,没有任何错误。为什么我的代码中出现段错误?

4

2 回答 2

2
  1. 你不做 amysql_connect()或 a mysql_real_connect()
  2. 您不检查mysql_init().
于 2012-04-16T10:52:56.367 回答
0

它可能与您的问题无关,但文档说:

默认情况下,mysql_query() 和 mysql_real_query() 将它们的语句字符串参数解释为要执行的单个语句,并且您根据语句是生成结果集(一组行,如 SELECT)还是受影响的结果来处理结果- 行数(对于 INSERT、UPDATE 等)。

http://dev.mysql.com/doc/refman/5.5/en//c-api-multiple-queries.html

由于您只有一个语句,因此最简单的修复方法是删除尾随分号。

于 2012-04-16T10:41:31.633 回答