在Qt的数据库编程中,先是设置数据库的类型,然后是设置数据库文件的路径,或者数据库名称。若有数据库的用户名、密码,则分别调用setUserName("")、setPassword("")来设置用户名和密码;若没有,则省略用户名和密码。
- 通过QSqlDatabase::addDatabase("")来设置数据库的类型;
- 通过setDatabaseName("")来设置数据库的文件路径,或者数据库名称。
这个setDatabaseName("xxx.db")函数,对路径的依赖比较敏感。在Windows平台上,需要将路径的分割符号斜杠,要写成2个//斜杠。
1 SQLite类型
正常代码:
cpp
QSqlDatabase dbData = QSqlDatabase::addDatabase("QSQLITE","UID1000");
//数据库路径
QString strPath = QCoreApplication::applicationDirPath() + "//hello.db";
dbData.setDatabaseName(strPath);
注意 :在Windows平台上,若setDatabaseName("Path")里的Path是文件路径,则要写成双斜杠的形式;若写成单斜杠,会造成数据库可以打开,但无法查询,也无法插入的异常问题。
异常代码:
cpp
QSqlDatabase dbData = QSqlDatabase::addDatabase("QSQLITE","UID1000");
//单斜杠,在Windows平台上,会造成数据库可以连接,但无法查询表中数据的Bug
QString strPath = "D:/myDatabase/hello.db";
dbData.setDatabaseName(strPath);
2 SQL Server类型
若SQL Server是以ODBC的方式与Qt程序进行连接,则setDatabaseName("")里要填写数据库的名称。
cpp
QSqlDatabase dbData = QSqlDatabase::addDatabase("QODBC");
dbData.setHostName("127.0.0.1");
dbData.setDatabaseName("hello"); //数据库名称
dbData.setUserName("user");
dbData.setPassword("xxx");