Qt中的SQLite数据库 我正在研究一个Qt+C++ GUI,我试图把数据插入到数据库中的表中。

Qt中的SQLite数据库 我正在研究一个Qt+C++ GUI,我试图把数据插入到数据库中的表中。,c++,qt,oracle11g,C++,Qt,Oracle11g,但这是我得到的错误: 没有这样的表:写入程序无法执行语句 这是我的密码: #include <QtCore/QCoreApplication> #include <QtSql> #include<QtDebug> int main(int argc, char *argv[]) { QCoreApplication a(argc, argv); QSqlDatabase db= QSqlDatabase::addDatabase("QSQLITE");

但这是我得到的错误:

没有这样的表:写入程序无法执行语句

这是我的密码:

#include <QtCore/QCoreApplication>

#include <QtSql>
#include<QtDebug>

int main(int argc, char *argv[])
{
QCoreApplication a(argc, argv);

QSqlDatabase db= QSqlDatabase::addDatabase("QSQLITE");
db.setHostName("FCOESL200656336");
db.setDatabaseName("ORCL");
db.setUserName("scott");
db.setPassword("lion");
db.open();


if(db.open())
{
    qDebug() << "Opened!";


     QString sQuery = " insert into  Writers(W_Id,W_Name,Age,Gender,Nationality,Hand_Used)Values(:W_Id,:W_Name,:Age,:Gender,:Nationality,:Hand_Used)";

             QSqlQuery qry;

             qry.prepare(sQuery);
             qry.bindValue(":W_Id",122);
             qry.bindValue(":W_Name","fgdgd");
             qry.bindValue(":Age",32);
             qry.bindValue(":Gender",'F');
             qry.bindValue(":Nationality","gfdg");
             qry.bindValue(":Hand_Used",'R');

      if( !qry.exec(sQuery) )
          qDebug() << qry.lastError().text();
      else
        qDebug( "Inserted!" );
    }
             else
            {
                  qDebug() <<"Connection failed" << db.lastError().text();
        }

 db.close();
 return a.exec();

     }
#包括
#包括
#包括
int main(int argc,char*argv[])
{
qcorea应用程序(argc、argv);
QSqlDatabase db=QSqlDatabase::addDatabase(“QSQLITE”);
db.setHostName(“FCOESL200656336”);
db.setDatabaseName(“ORCL”);
db.setUserName(“scott”);
db.setPassword(“lion”);
db.open();
if(db.open())
{
如果您试图访问Oracle数据库,请不要使用
SQLITE
驱动程序。
SQLite
是一个类似MS Access的基于文件的数据库。因此,当您说连接到数据库ORCL时,它正在寻找一个名为
ORCL
的文件,而不是试图连接到您的Oracle 11g数据库

解决方案: 安装并配置QODBC驱动程序,并将其用于替代SQLITE


之后,表应该是可查看的。

我相信您的应用程序尝试访问的位置没有数据库,或者您的数据库中确实没有名为
Writers
的表。如果您尝试访问Oracle数据库,为什么要加载SQLITE驱动程序?非常感谢大家的帮助@Vite Falcon:我确信表在数据库中,但当我创建表时,我没有首先创建自己的数据库,而是使用了oracle 11g的默认数据库。你认为这就是问题所在吗?我认为@Mat提出的问题与此相关……为什么要使用SQLite驱动程序连接到oracle数据库?SQLite是基于文件的dat像MS Access一样低调。所以当你说连接到数据库ORCL时,它正在寻找一个名为ORCL的文件,而不是试图连接到你的Oracle 11g数据库。非常感谢vite Falcon。现在我明白了。你能告诉我我可以将Oracle连接到哪个驱动程序吗。