2015-12-03 2 views
0

J'utilise Qt GUI pour enregistrer des données dans MySQL en utilisant C++. J'utilise le widget QDateTimeEdit pour cela. Quelle que soit la valeur changée par l'utilisateur dans l'interface graphique de QDateTimeEdit, elle devrait être insérée dans MySQL.Qt - Programmation de base de données GUI

Quelqu'un peut-il me dire comment faire cela?

Comment accéder à la valeur de QDateTimeEdit et de le convertir au format approprié comme QString et en utilisant la requête MySQL en l'insérant dans la base de données?

+2

Voir http://stackoverflow.com/questions/ask, quel est votre effort jusqu'à maintenant? – Jens

+0

Avez-vous lu le [QDateTimeEdit] (http://doc.qt.io/qt-5/qdatetimeedit.html), et s'il vous plaît montrer dans votre question le code que vous utilisez pour accéder à la base de données, et insérez les données. Aussi la définition de la table serait utile pour vous aider. – agold

Répondre

0

A propos de la deuxième partie « comment accéder à la valeur »:

Vous en quelque sorte dans l'objet créé code de QDateTimeEdit et placez-le sur une mise en page. Typiquement ce sera un pointeur avec un nom par exemple mpDTPicker.

QDateTimeEdit * mpDTPicker = new QDateTimeEdit(); 
//place mpDTPicker on layout. 

Pour l'accès heure actuelle, nous avons besoin méthode d'utilisation dateTime:

//User actions with date -> emitted signal -> execute slot with our logic 
{ 
    QDateTime momentum = mpDTPicker->dateTime(); 
// So here we need convert QDateTime to QString and we will use [toString Method](http://doc.qt.io/qt-4.8/qdatetime.html#toString) 
    QString result_string = momentum.toString("dd:mm:yy"); 
    QDebug() << result_string; 
} 

Alors que tout est sur la conversion QDateTime QString. A propos de la première partie de Question comment obtenir cette valeur modifiée de DateTimeEdit utilisateur est une autre question totale. Et à propos de la troisième partie comment stocker dans la base de données mysql tout dépend de la structure de votre table. Mais typicaly il peut être résolu avec de simples query:

QSqlQuery query; 
QString mQuerry = "INSERT INTO mytable (id, date) VALUES (0, \"" +result_string "\")"; 
query.exec(mQuerry); 

Et s'il vous plaît READ DOCS spéciale quand les tellement cool :)

2

Une alternative est de ne pas le convertir en un QString mais laisser le conducteur faire pour vous. Si vous attendez une certaine précision dans la conversion certains cas, cela pourrait être mieux, d'autres cas, il peut être pire:

QDateTime date = ui->dateTimeEdit->dateTime(); 
QSqlQuery query(myDatabase); 
query.prepare("INSERT INTO my_table (id, date) " 
       " VALUES (:id, :date)"); 
query.bindValue(":id", 1001); 
query.bindValue(":date", date); 
query.exec(); 

La fonction QSqlQuery::bindValue() prendra la QDateTime et passer à travers comme QVariant et le conducteur doit savoir comment pour convertir un QVariant::DateTime à la chaîne correcte que la base de données comprend.