C+中的分段错误是什么+;mysql? 我使用C++向服务器发送MySQL命令。为什么会说“分割错误”,它是什么意思? 运行程序时,程序的输出为: connection Succeeded Segmentation fault
编辑代码以删除i+1行,但仍然存在相同的问题 守则:C+中的分段错误是什么+;mysql? 我使用C++向服务器发送MySQL命令。为什么会说“分割错误”,它是什么意思? 运行程序时,程序的输出为: connection Succeeded Segmentation fault,c++,mysql,C++,Mysql,编辑代码以删除i+1行,但仍然存在相同的问题 守则: #include <stdlib.h> #include <iostream> #include <mysql.h> #include <stdio.h> #define SERVER "localhost" #define USER "root" #define PASSWORD "coursework" int main() { MYSQL *connect; connec
#include <stdlib.h>
#include <iostream>
#include <mysql.h>
#include <stdio.h>
#define SERVER "localhost"
#define USER "root"
#define PASSWORD "coursework"
int main()
{
MYSQL *connect;
connect=mysql_init(NULL);
if (!connect)
{
std::cout<<"MySQL Initialization failed";
return 1;
}
connect=mysql_real_connect(connect, SERVER, USER, PASSWORD, NULL ,0,NULL,0);
if (connect)
{
std::cout<<"connection Succeeded\n";
}
else
{
std::cout<<"connection failed\n";
exit(1);
}
mysql_query (connect, "drop database if exists TTU;");
mysql_query (connect,"create database TTU;");
mysql_query (connect, "use TTU;");
mysql_query (connect, "create table students(tnumber char(8) PRIMARY KEY,");
mysql_query (connect, "firstname varchar(20) NOT NULL,");
mysql_query (connect, "lastname varchar(20) NOT NULL,");
mysql_query (connect, "dateofbirth date,");
mysql_query (connect, "INDEX 'lastname_i' ('lastname'),");
mysql_query (connect, "ENGINE=INNODB);");
mysql_query (connect, "insert into students(tnumber, firstname, lastname, dateofbirth)");
mysql_query (connect, "values (00001234, Joe, Smith, 1950-08-12);");
MYSQL_RES *res_set;
MYSQL_ROW row;
mysql_query (connect,"select * from students;");
unsigned int i =0;
res_set = mysql_store_result(connect);
unsigned int numrows = mysql_num_rows(res_set);
while ((row= mysql_fetch_row(res_set)) != NULL )
{
std::cout << row[i] << std::endl;
}
mysql_close (connect);
std::cout << "TEST" << std::endl;
return 0;
}
#包括
#包括
#包括
#包括
#定义服务器“localhost”
#定义用户“根”
#定义密码“课程作业”
int main()
{
MYSQL*连接;
connect=mysql_init(NULL);
如果(!连接)
{
std::cout显示的代码中有多个错误。有两个主要错误:不正确使用mysql\u query()
,以及多次检查各种mysql库函数的返回值失败,导致无法检测各种错误
mysql_query (connect, "create table students(tnumber char(8) PRIMARY KEY,");
这是无效的SQL。mysql\u query()
接受一个completeSQL
语句并执行它。它不接受SQL语句的单个片段,在多次连续调用中分解,并且只在解析完完整的SQL语句后执行
由于显示的代码未能检查来自mysql\u query()
的返回值,因此无法检测到整个mysql\u query()
调用序列失败,并且未创建表
后续调用也无法检查其他MySQL库函数的返回值
显示的代码可能从mysql\u store\u result()
返回NULL
,无法检查它,将NULL
指针传递到mysql\u num\u rows()和崩溃。这似乎是C++代码而不是java。一个分割错误是当程序试图访问内存时,它没有访问权限时发生的错误。没有出现错误的行号(使用调试器获得)。,很难确定到底是什么导致了错误。我不是这个特定API的专家,但您如何确定这里有一个I+1
条目:std::cout