插入Qt中的数据库
Insertion into database in Qt
我试图将数据插入数据库中的表中,但插入失败。这是我得到的错误:
[Oracle][ODBC][Ora]Ora-0108:并非所有变量都绑定。
这是我的代码:
#include <QtCore/QCoreApplication>
#include <QtSql>
#include<QtDebug>
int main(int argc, char *argv[])
{
QCoreApplication a(argc, argv);
QSqlDatabase db= QSqlDatabase::addDatabase("QODBC");
db.setHostName("FCOESL200656336.qu.edu.qa");
db.setDatabaseName("EPQAS");
db.setUserName("SOUAD/testuser");
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",3);
qry.bindValue(":W_Name","fhsf");
qry.bindValue(":Age",32);
qry.bindValue(":Gender",'F');
qry.bindValue(":Nationality","klfds");
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();
}
我该如何解决这个问题?
if语句中有一个失败。
if( !qry.exec(sQuery) )
为此,QSqlQuery正在尝试执行sQuery,但在sQuery中您没有绑定任何值。你应该做:
if( !qry.exec() )
因为这个函数将使用绑定值执行您之前准备的查询。整体应该是这样的:
if(db.open())
{
qDebug() << "Opened!";
QSqlQuery qry;
qry.prepare("INSERT INTO writers(W_Id,W_Name,Age,Gender,Nationality,Hand_Used)"
"VALUES(:W_Id,:W_Name,:Age,:Gender,:Nationality,:Hand_Used)");
qry.bindValue(":W_Id",3);
qry.bindValue(":W_Name","fhsf");
qry.bindValue(":Age",32);
qry.bindValue(":Gender",'F');
qry.bindValue(":Nationality","klfds");
qry.bindValue(":Hand_Used",'R');
if( !qry.exec() )
qDebug() << qry.lastError().text();
else
qDebug( "Inserted!" );
}
相关文章:
- 从数据库实时显示QT c++中的数据
- 如何在Qt中从数据库中检索二进制数据?
- 根据用户名和密码 Qt C++重新访问数据库值
- QT 数据库模块错误
- QT Creator将SQLite复制为空数据库
- 如何使用 QT 和 C++ 侦听 mysql 数据库中的触发事件?
- 如何从 Oracle 数据库中获取 qt 中 SQL 查询的传输字节大小?
- Qt - 共享同一数据库的应用程序
- C++ Qt SQL lite 数据库连接问题
- 如果存在 QSQLITE 数据库,则根据 qt 中的行值插入或更新
- QT QML:使用.qrc文件将SQLite数据库部署到Android不起作用
- 在 qt 中使用 QStandardItemModel 显示 QSQLite 数据库
- Qt & SqlLite 将数据插入数据库
- 打开与 Qt/C++ 的数据库连接
- QT MySql 数据库检查登录名和密码以登录
- QT 打开不存在的数据库
- 将JSON直接保存到数据库QT
- 来自数据库 Qt 的值的实时馈送
- 在 sqlite 数据库 qt 之间复制表会导致错误
- 同步文件与sqlite数据库qt c++