2015-12-03 4 views
0

Я использую Qt GUI для сохранения данных в MySQL с использованием C++.Qt - GUI Программирование базы данных

Я использую виджет QDateTimeEdit для этого. Независимо от значения, измененного пользователем в графическом интерфейсе QDateTimeEdit, он должен быть вставлен в MySQL.

Может ли кто-нибудь сказать мне, как это сделать?

Как получить доступ к значению от QDateTimeEdit и преобразовать его в надлежащем формате, таком как QString и используя запрос MySQL, вставляя его в базу данных?

+2

См. Http://stackoverflow.com/questions/ask, каковы ваши усилия до сих пор? – Jens

+0

Вы читали [QDateTimeEdit] (http://doc.qt.io/qt-5/qdatetimeedit.html) и, пожалуйста, укажите в своем вопросе код, который вы используете для доступа к базе данных, и вставьте данные. Кроме того, определение таблицы было бы полезно, чтобы помочь вам. – agold

ответ

0

О второй части «как получить доступ значение»:

Вы как-то в коде создается объект QDateTimeEdit и поместить его на какой-то макет. Обычно это будет указатель с именем, например mpDTPicker.

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

Для доступа к текущему времени мы должны использовать метод 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; 
} 

Так что это все о преобразовании QDateTime в QString. О первой части вопроса Как получить, что пользователь изменил значение DateTimeEdit, является полным другим вопросом.

И о третьей части, как хранить его в базе данных mysql, все зависит от структуры вашей таблицы. Но typicaly она может быть решена с помощью простого query:

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

И пожалуйста READ DOCS особенно когда они так круто :)

2

Альтернативным не превратить его в QString, но пусть водитель сделает это за вас. Если вы ожидаете какой-то точность преобразования некоторых случаях это может быть лучше, в других случаях это может быть хуже:

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(); 

Функция QSqlQuery::bindValue() примет QDateTime и передать его через как QVariant, а затем водитель должен знать, как для преобразования QVariant::DateTime в правильную строку, которую понимает база данных.

Смежные вопросы