对不起我的英语不好。我正在尝试从数据库表中选择一些数据,以便将其插入到另一个数据库的表中。
这是我的代码:
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();
}
}
表“Partes”属于“医院”数据库。表“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);
Q调试:
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 个值?
感谢回复!