**
问题描述:
**
querystring =
"CREATE TABLE IF NOT EXISTS student_info.Student\
(\
Name varchar(20),\
Sex varchar(20),\
Age int(20),\
Number int(20),\
)";
}
如上述代码,VS2015成功连接mysql,但无法将Student表创建出来。
解决方法
sql语句问题,最后一个字段不要加逗号。另外,数据库表名,字段名称不要加双引号。如果发现数据库连接是没问题的,那一定要注意一下代码问题,很有可能sql语句写的不规范,不正确。
vs连接数据库并创建数据库表:
QSqlDatabase db;
if (QSqlDatabase::contains("root"))//判断root连接是否存在并连接
{
db = QSqlDatabase::database("root");
}
else
{
db = QSqlDatabase::addDatabase("QMYSQL");
db.setHostName("localhost");
db.setPort(3306);
db.setUserName("root");
db.setPassword("root");
}
if(!db.open())
{
QMessageBox::warning(this,"waring","数据库未连接",QMessageBox::Yes);
return;
}
QString querystring;
db = QSqlDatabase::database();
querystring = "CREATE DATABASE IF NOT EXISTS student_info";
db.exec(querystring);
db.setDatabaseName("student_info");
if (!db.open())
{
qDebug() << "database open failed";
return;
}
querystring =
"CREATE TABLE IF NOT EXISTS student_info.Student\
(\
Name varchar(20),\
Sex varchar(20),\
Age int(20),\
Number int(20)\
)";
db.exec(querystring);//执行创建数据表语句
if (db.lastError().isValid())
{
qDebug() << "Student table create failed:" << db.lastError();
return;
}
db.exec("alter table Student convert to character set utf8");
注意,不要忘记在头文件中添加相关头文件!
测试能否正常创建数据库表方法:
CREATE TABLE student_info.student(
name char(5)
)
如图 ,在navicate工具中新建一个查询,输入上述代码,下方显示的信息栏未报错,刷新数据库后正常显示数据库表student,表示数据库配置正常。