之前使用的SQL Server2008数据库,每次配置的时候需要安装SQL Server2008,很蛋疼,尤其是安装出问题的时候。
现在使用sqlite数据库(就是看中它不需要安装),一开始还下载了sqlite相关的文件(免安装文件),结果在使用Qt工程连接数据库进行查询表时,总是报 “QSqlError("", “Unable to fetch row”, “No query”)”,一开始不明白问题原因在哪,因为我是用 navicat 查看表的时候,表中是存在数据的,这个问题很蛋疼。
今天上网资料的时候发现Qt其实是自带sqlite的,根本不需要去下载sqlite,直接调用Qt QSqlDatabase 接口就会自动创建sqlite的数据文件(.db文件)。
//建立并打开数据库
QSqlDatabase database;
database = QSqlDatabase::addDatabase("QSQLITE");
database.setHostName("127.0.0.1");
database.setDatabaseName("D:/project/WorkProjects/ProjectLogin/study.db");
if (!database.open())
{
qDebug() << "Error: Failed to connect database." << database.lastError();
}
else
{
qDebug() << "Succeed to connect database." ;
}
setDatabaseName()方法,可以传数据库文件所在路径。
上面说的 “QSqlError("", “Unable to fetch row”, “No query”)”其实就是找错了表,而使用setDatabaseName()方法创建的表没有数据,所以“select * from student”会报错误。