UPDATE CON DB SQLITE..NO SALE
-
void Blind_Dialog :: on_modificar_clicked ()
{QSqlQuery actualizar;
if(db.open()){actualizar.prepare("UPDATE blinds SET sblind, bblind, ante, time, break WHERE Id = 5"
"VALUES (:sblind, :bblind, :ante, :time, :break)");actualizar.bindValue(":sblind",ui->Sblind->text());
actualizar.bindValue(":bblind",ui->Bblind->text());
actualizar.bindValue(":ante",ui->Ante->text());
actualizar.bindValue(":time",ui->Time->text());
actualizar.bindValue(":break",ui->Break->text());
actualizar.exec();
if(!actualizar.exec())
{
qDebug() << "Can't Execute Query !";
}
else
{
qDebug() << "Query Executed Successfully !";
}if(actualizar.exec()){
qDebug()<<"El registro se ha modificado";
}else{
qDebug()<<"El registro NO se ha modificado";
qDebug()<<"ERROR!"<<actualizar.lastError();
}
}else
qDebug()<<"La base de datos no esta abierta";
}
// Mensaje del programa ERROR! QSqlError ("", "No coincide el recuento de parámetros", "") -
@Casino Why do you call exec() two times (actually 3 times!)?
actualizar.exec(); if(!actualizar.exec())
if(!actualizar.exec()) { qDebug() << "Can't Execute Query !"; qDebug() << actualizar.executedQuery(); // What does this print out? }
-
@Casino
en el caso de borrar me pasa lo mismo mira
void Blind_Dialog::on_borrar_clicked()
{
QSqlQuery borrar;borrar.prepare("DELETE FROM blinds WHERE sblind = 100 "); if(borrar.exec()){ qDebug()<<"El registro se ha modificado"; }else{ qDebug()<<"El registro NO se ha modificado"; qDebug()<<"ERROR!"<<borrar.lastError(); }
}
El mensaje de error ERROR! QSqlError("", "Unable to fetch row", "No query")
-
Hola
Cuando es UPDATE, no tendría que ser:
actualizar.prepare("UPDATE blinds SET sblind = :sblind, bblind = :bblind, ante = :ante, time = :time, break = :break WHERE Id = 5");
Nunca lo había visto como lo has puesto.
En cuanto a lo del DELETE, no sé, como no le estás pasando parámetros a la query, no uses prepare, ejecútala directamente.
Si no se soluciona con lo que digo, pon también la estructura de la tabla, a ver si damos con el error.
Un saludo
-
Te envio la tabla
void Blind_Dialog::CrearTablaCiegas()
{
QString consulta;
consulta.append("CREATE TABLE IF NOT EXISTS Ciegas("
"Id INTEGER NOT NULL PRIMARY KEY,"
"sblind INTEGER,"
"bblind INTEGER,"
"ante INTEGER,"
"time INTEGER,"
"break INTEGER"
")");
QSqlQuery crear;
crear.prepare(consulta);if(crear.exec()){ qDebug()<<"La tabla CIEGAS existe o se ha creado correctamente"; }else{ qDebug()<<"La tabla CIEGAS NO existe o NO se ha creado correctamente"; qDebug()<<"ERROR!"<<crear.lastError(); }
}
-
@Casino said in UPDATE CON DB SQLITE..NO SALE:
Hola, en los ejemplos que pusiste antes, tanto en el DELETE como en el UPDATE, lo estás tratando de hacer sobre una tabla que se llama blinds. La que nos muestras ahora tiene otro nombre: Ciegas.
consulta.append("CREATE TABLE IF NOT EXISTS Ciegas("
¿No te habrás equivocado de tabla? ¿Probaste la modificación que te propuse para el UPDATE?
Un saludo
-
Hola
Me alegro que se solucionara, las operaciones hay que hacerlas sobre las tablas.
Por favor, si el tema se solucionó, marque como resuelto el tema.
Un saludo
-
@juanki
ahora bien, yo utilizo
void Blind_Dialog::on_Ciegas_itemClicked(QTableWidgetItem *item)
{
f = item->row();
ui->numero->setText(QString::number(f));
QTableWidgetItem *Sblind = ui->Ciegas->item(f,0);
QTableWidgetItem *Bblind = ui->Ciegas->item(f,1);
QTableWidgetItem *Ante = ui->Ciegas->item(f,2);
QTableWidgetItem *Time = ui->Ciegas->item(f,3);
QTableWidgetItem *Break = ui->Ciegas->item(f,4);ui->Sblind->setText(Sblind->text()); ui->Bblind->setText(Bblind->text()); ui->Ante->setText(Ante->text()); ui->Time->setText(Time->text()); ui->Break->setText(Break->text());
}
para ubicar la fila que quiero modificar, uno o todos los valores, por lo que paso el valor f para actualizar la tabla, ahi se producen errores pese a que f es un int, si le paso el valor o sea 1, 10 o lo que sea la tabla se modifica ytodo bien, pero con f no, que puede ser??? -
Hola
Tienes que crear un hilo o conversación nueva para esta nueva pregunta, ya que nada tiene que ver con el asunto de esta.
Cuando crees la nueva conversación, indica por favor los errores que obtienes, eso ayuda mucho a quien quiera ayudarte.
Un saludo
-
void RegistroEstudiantes::crearTablaUsuarios()
{
QString consulta;
consulta.append("CREATE TABLE IF NOT EXISTS usuarios("
"id INTEGER PRIMARY KEY AUTOINCREMENT,"
"nombre VARCHAR(100),"
"apellidos VARCHAR(100),"
"carnet VARCHAR(100),"
"direccion VARCHAR(100),"
"circunscripcion VARCHAR(100),"
"ausencias INTEGER NOT NULL,"
"promedio VARCHAR(100),"
"grupo VARCHAR(100),"
"suspenso VARCHAR(100)"
");");
QSqlQuery crear;
crear.prepare(consulta);if(crear.exec()) { qDebug()<<"La tabla USUARIO existe o Se ha creado correctamente..."; }else{ qDebug()<<"La tabla USUARIO NO existe o No se ha creado correctamente..."; qDebug()<<"ERROR! "<< crear.lastError(); }
-
Tengo esta tabla y tengo la consulta de la tabla como puedo modificar los datos de la tabla que es esta:
void MostrarDatos::mostrarDatos()
{
QString consulta;
consulta.append("SELECT * FROM usuarios");
QSqlQuery consultar;
consultar.prepare(consulta);if(consultar.exec()) { qDebug()<<"Se ha consultado correctamente."; }else{ qDebug()<<"NO se ha consultado correctamente."; qDebug()<<"ERROR! "<< consultar.lastError(); } int fila=0; ui->tableWidgetDatos->setRowCount(0); while(consultar.next()){ ui->tableWidgetDatos->insertRow(fila); ui->tableWidgetDatos->setItem(fila,0,new QTableWidgetItem(consultar.value(1).toByteArray().constData())); ui->tableWidgetDatos->setItem(fila,1,new QTableWidgetItem(consultar.value(2).toByteArray().constData())); ui->tableWidgetDatos->setItem(fila,2,new QTableWidgetItem(consultar.value(3).toByteArray().constData())); ui->tableWidgetDatos->setItem(fila,3,new QTableWidgetItem(consultar.value(4).toByteArray().constData())); ui->tableWidgetDatos->setItem(fila,4,new QTableWidgetItem(consultar.value(5).toByteArray().constData())); ui->tableWidgetDatos->setItem(fila,5,new QTableWidgetItem(consultar.value(6).toByteArray().constData())); ui->tableWidgetDatos->setItem(fila,6,new QTableWidgetItem(consultar.value(7).toByteArray().constData())); ui->tableWidgetDatos->setItem(fila,7,new QTableWidgetItem(consultar.value(8).toByteArray().constData())); ui->tableWidgetDatos->setItem(fila,8,new QTableWidgetItem(consultar.value(9).toByteArray().constData())); fila++; }
-
Hola
Por favor, no preguntes en un hilo de otra consulta, crea un mensaje nuevo cuando tengas una duda.
en cuanto a tu consulta, ¿te refieres a modificar los datos en la base de datos?
Un saludo