QSqlError( " " , "Parameter count mismatch" , " " )



不好意思。我正在尝试从数据库表中选择一些数据,以便将其插入到另一个数据库的表中。

这是我的代码:

void Partes::Guardar_Solicitud()
{
    hospital=QSqlDatabase::addDatabase("QSQLITE");
    hospital.setDatabaseName("C:/Sqlite3/Hospital.sqlite");
    if(hospital.open()){
        qDebug()<<"8.Se ha conectado a la base de datos Hospital";
    }else{
        qDebug()<<"8.ERROR. No se ha conectado a la base de datos Hospital";
    }
    QSqlQuery seleccionar;
    seleccionar.prepare("SELECT*FROM Partes WHERE N_Parte=:ID");
    seleccionar.bindValue(":ID",ui->lineEditN_Parte->text());
        if(seleccionar.exec())
        {
            qDebug()<<"9.Los datos del parte se han seleccionado correctamente";
        }else{
            qDebug()<<"9.ERROR. Los datos del parte no se han seleccionado correctamente";
            qDebug()<<"9.ERROR:"<<seleccionar.lastError();
        }
        seleccionar.next();
            QString _N_Solicitud = seleccionar.value(0).toByteArray().constData();
            QString _Fecha_Emision = seleccionar.value(1).toByteArray().constData();
            QString _Codigo_Equipo = seleccionar.value(2).toByteArray().constData();
            QString _Equipo = seleccionar.value(3).toByteArray().constData();
            QString _Marca = seleccionar.value(9).toByteArray().constData();
            QString _Modelo = seleccionar.value(10).toByteArray().constData();
            QString _N_Serie = seleccionar.value(11).toByteArray().constData();
            QString _Localizacion = seleccionar.value(6).toByteArray().constData();
            QString _Descripcion_Solicitud = seleccionar.value(19).toByteArray().constData();

        empresa=QSqlDatabase::addDatabase("QSQLITE");
        empresa.setDatabaseName("C:/Sqlite3/Empresa.sqlite");
        if(empresa.open()){
            qDebug()<<"10.Se ha conectado a la base de datos Empresa";
        }else{
            qDebug()<<"10.ERROR. No se ha conectado a la base de datos Empresa";
        }
        QSqlQuery seleccionar2;
        seleccionar2.prepare("SELECT*FROM Tecnicos WHERE Nombre_Usuario='a' and Contraseña='7'");
            if(seleccionar2.exec())
            {
                qDebug()<<"11.Los datos del usuario se han seleccionado correctamente";
            }else{
                qDebug()<<"11.ERROR. Los datos del usuario no se han seleccionado correctamente";
                qDebug()<<"11.ERROR:"<<seleccionar2.lastError();
            }
            seleccionar2.next();

                QString _Unidad_Hospitalaria = seleccionar2.value(5).toByteArray().constData();
                QString _Unidad_Tecnica = seleccionar2.value(6).toByteArray().constData();
                QString _Peticionario = seleccionar2.value(0).toByteArray().constData();
                QString _Telefono = seleccionar2.value(8).toByteArray().constData();
                QString _Tecnico_Asignado = seleccionar2.value(0).toByteArray().constData();
                QString _Estado_Solicitud = seleccionar2.value(7).toByteArray().constData();

        QSqlQuery guardar_s;
                guardar_s.prepare("INSERT INTO Solicitudes_Trabajo (N_Solicitud, Fecha_Emision, Unidad_Hospitalaria,"
                                  "Codigo_Equipo, Equipo, Marca)"
                                  "VALUES (:N_Solicitud, :Fecha_Emision, :Unidad_Hospitalaria, :Codigo_Equipo, :Equipo,"
                                   ":Marca)");
                guardar_s.bindValue(":N_Solicitud", _N_Solicitud);
                guardar_s.bindValue(":Fecha_Emision", _Fecha_Emision);
                guardar_s.bindValue(":Unidad_Hospitalaria", _Unidad_Hospitalaria);
                guardar_s.bindValue(":Codigo_Equipo", _Codigo_Equipo);
                guardar_s.bindValue(":Equipo", _Equipo);
                guardar_s.bindValue(":Marca", _Marca);
    if(guardar_s.exec( ))
    {
        ui->label_Guardar->setText("Solicitud guardada correctamente");
        qDebug()<<"12.Los datos del parte se han guardado en la Solicitud de Trabajo";
    }
    else
    {
        ui->label_Guardar->setText("La solicitud no se ha guardado correctamente");
        qDebug()<<"12.ERROR. Los datos del parte no se han guardado en la Solicitud de Trabajo";
        qDebug()<<"12.ERROR:"<<guardar_s.lastError();
    }
}

表" parties "属于"Hospital"数据库。表"Solicitudes_Trabajo"属于"Empresa"数据库。

这段代码运行良好,并将值完美地插入到表中。但是当我添加更多要插入的值时,出现了QSqlError。

这是不能工作的INSERT INTO代码:

QSqlQuery guardar_s;
    guardar_s.prepare("INSERT INTO Solicitudes_Trabajo (N_Solicitud, Fecha_Emision, Unidad_Hospitalaria, Codigo_Equipo,"
                      "Equipo, Marca, Modelo, N_Serie, Localizacion, Unidad_Tecnica, Peticionario, Telefono, "
                      "Descripcion_Solicitud, Tecnico_Asignado, Tipo_Solicitud, Estado_Solicitud) "
                  "VALUES (:N_Solicitud, :Fecha_Emision, :Unidad_Hospitalaria, :Codigo_Equipo, :Equipo, :Marca, :Modelo,"
                      ":N_Serie, :Localizacion, :Unidad_Tecnica, :Peticionario, :Telefono, :Descripcion_Solicitud,"
                      ":Tecnico_Asignado, :Tipo_Solicitud, :Estado_Solicitud)");
    guardar_s.bindValue(":N_Solicitud", _N_Solicitud);
    guardar_s.bindValue(":Fecha_Emision", _Fecha_Emision);
    guardar_s.bindValue(":Unidad_Hospitalaria",_Unidad_Hospitalaria);
    guardar_s.bindValue(":Codigo_Equipo", _Codigo_Equipo);
    guardar_s.bindValue(":Equipo", _Equipo);
    guardar_s.bindValue(":Marca", _Marca);
    guardar_s.bindValue(":Modelo", _Modelo);
    guardar_s.bindValue(":N_Serie", _N_Serie);
    guardar_s.bindValue(":Localizacion", _Localizacion);
    guardar_s.bindValue(":Unidad_Tecnica", _Unidad_Tecnica);
    guardar_s.bindValue(":Peticionario", _Peticionario);
    guardar_s.bindValue(":Telefono", _Telefono);
    guardar_s.bindValue(":Descripcion_Solicitud", _Descripcion_Solicitud);
    guardar_s.bindValue(":Tecnico_Asignado", _Tecnico_Asignado);
    guardar_s.bindValue(":Tipo_Solicitud", "a");
    guardar_s.bindValue(":Estado_Solicitud", _Estado_Solicitud);

QDebug:

7.Los datos del usuario se han mostrado correctamente
QSqlDatabasePrivate::removeDatabase: connection 'qt_sql_default_connection' is still in use, all queries will cease to work.
QSqlDatabasePrivate::addDatabase: duplicate connection name 'qt_sql_default_connection', old connection removed.
8.Se ha conectado a la base de datos Hospital
9.Los datos del parte se han seleccionado correctamente
QSqlDatabasePrivate::removeDatabase: connection 'qt_sql_default_connection' is still in use, all queries will cease to work.
QSqlDatabasePrivate::addDatabase: duplicate connection name 'qt_sql_default_connection', old connection removed.
10.Se ha conectado a la base de datos Empresa
11.Los datos del usuario se han seleccionado correctamente
12.ERROR. Los datos del parte no se han guardado en la Solicitud de Trabajo
12.ERROR: QSqlError("", "Parameter count mismatch", "")

是这些太多的数据插入Qt Creator?为什么它能够插入6个值,但它不能插入16个值?

谢谢你的回复!

最后是一个打字错误。我试图通过使用

将值插入到名为Localización的列中:
guardar_s.prepare("INSERT INTO Solicitudes_Trabajo (Localizacion)

相关内容

  • 没有找到相关文章

最新更新