小玩具——溫度採集專案(五)
2.登陸介面完成的框架搭建好後,怎麼實現呢?登陸,我是需要連線的資料庫的,我是學習了豆子老師的文章的
https://www.devbean.net/2013/06/qt-study-road-2-database/
不僅僅是看的資料庫的操作話,Qt的基本的概念也是看的豆子老師的哈。大家可以去看看哈。
比如Q_OBJECT,這個也讓我搞了好久,這個坑,也是在對話方塊這一部分的,差點忘記說了。要使用connect()函式來作為訊號-槽的橋樑,使用connect()函式,QObject::connect()這樣使用,要麼加上這個巨集Q_OBJECT,最好就是加上,而且加在標頭檔案上吧,它會在你qmake的時候生成moc檔案,這個好坑,我之前已經編譯過生成了一些.o .sourse 之檔案了,所以在我加上Q_OBJECT
好像扯遠了,我回來吧,說到資料庫。說到資料庫又是很多的辛酸淚。我使用的是mysql5.7.xx,後面是幾版忘記了,因為Qt是32位的,我之前在vs用的mysql64位不能用,然後解決問題無非就是兩個,64位的Qt 64位的mysql,32Qt 32mysql,我試過使用64位的,好像有亂碼,不怎麼好用,所以我選擇了再安裝32位的資料庫,有64位的配置經驗,應該不難。使用資料QT +=sql 再pro裡面新增這個,才能使用,使用mysql需要你有相應的驅動,這些都ok了,咱們就來寫程式碼吧。再幫助文件裡面,有一個完整的demo供咱們參考。
QSqlDatabase db = QSqlDatabase::addDatabase("QPSQL");
db.setHostName("acidalia");
db.setDatabaseName("customdb");
db.setUserName("mojito");
db.setPassword("J0a1m8");
bool ok = db.open();
這個就是幫助文件裡面的demo,其實看函式的名字就能知道這個函式是幹啥的。這個很簡單,重要的是,我們要操作資料庫,
這個類可以幫助我們聯合sql語言進行程式設計開發QSqlQuery query(db); //使用這個類可以使用SQL的語言
query.exec("create table UserMessage (user varchar(20) primary key,passward varchar(20))");
這個就相當於在控制檯敲下create table UserMessage (user varchar(20) primary key,passward varchar(20));
這個程式碼了,如果控制檯沒有報錯則exec則返回true,報錯則位false。
我們可以使用
str = QString("insert into UserMessage values(%1,'%2','%3')").arg(0).arg("hehe").arg("123");
格式化語句,有了這些工具,就相當於我們直接在控制檯上編寫sql語言那樣了,接下來的事情就很簡單了,畢竟我們這裡沒有視覺化資料庫的資料,如果有人想要視覺化資料的話,可以引數豆子老師的文章,上面是有的。
我要建立兩張表,一張是存放使用者的賬號和密碼的,一個是存放採集到的資料和日期時間的。
這個就不多說了。要注意的一點就是,在不同的作用域,使用QSqlQuery的時候,在只調用一個數據庫的時候,會使用預設的上次使用的資料庫進行操作,也即,在其他作用域中
QSqlDatabase db = QSqlDatabase::database("qt_sql_default_connection"); QSqlQuery query(db);也可以直接這樣寫:
QSqlQuery query();
相當於預設使用了 qt_sql_default_connection ,還是挺方便的。