重慶分公司,新征程啟航
為企業提供網站建設、域名注冊、服務器等服務
為企業提供網站建設、域名注冊、服務器等服務
1)創建ui界面 (2)導入頭文件 一、自動提交模式 二、手動提交模式 (1)構造函數中的代碼 (2) “提交”按鈕的槽函數 在ui界面導入一個Table View。 這個控件可以顯示表格,在代碼中我們通過setHeaderData()函數可以自定義每列的名稱。 需要用到以下頭文件,QSqlDatabase用于連接數據庫,QMessageBox用于彈出對話框,QSqlError用于顯示數據庫的錯誤信息,QSqlQuery和QSqlTableModel用于操作數據庫。 #include QWidget #include QSqlDatabase #include QMessageBox #include QSqlError #include QString #include QSqlQuery #include QSqlTableModel 在Qt窗口顯示的表格中改動數據,然后點擊回車,數據庫中的表格中的數據就自動更新了。 注意,在這里必須是敲擊回車才會進行數據庫的更新,如果直接用鼠標切換到其他的地方是不會更新數據庫的。 //連接數據庫 QSqlDatabase db=QSqlDatabase::addDatabase("QMYSQL"); db.setHostName("127.0.0.1"); db.setUserName("root"); db.setPassword("123456"); db.setDatabaseName("aaa2"); if(db.open()==false){ QMessageBox::warning(this,"waring",db.lastError().text()); } //實例化model model = new QSqlTableModel(this); //將模型設置到視圖 ui-tableView-setModel(model); //給model設置數據表,前提條件是數據庫已經打開了 model-setTable("student");
創新互聯建站自2013年起,是專業互聯網技術服務公司,擁有項目成都網站設計、網站建設網站策劃,項目實施與項目整合能力。我們以讓每一個夢想脫穎而出為使命,1280元澤州做網站,已為上家服務,為澤州各地企業和個人服務,聯系電話:18982081108
Qt項目里用到了mysql,運行后報錯:
查閱資料知道需要配置mysql驅動,本以為幾分鐘解決的事情,沒想到開啟了惡魔經歷,整整兩天時間,mmp!
Stop! 廢話別說啦,入正題:
首先,Qt mysql的安裝和環境配置就略了,一搜一大把。
不過注意兩點:
先進入到/Users/ing/Qt5.14.2/5.14.2/Src/qtbase/src/plugins/sqldrivers目錄下,執行:
這里確保qmake用的qt里的就行
其實你可以配置下qt相關的環境變量,在bash_profile里添加:
然后,source ~/.bash_profile ,還有別忘了 source ~/.zshrc
執行成功的話會輸出:
根據提示 依次執行:
make sub-mysql
make
make install
進入/Users/ing/Qt5.14.2/5.14.2/clang_64/plugins/sqldrivers下執行,查看鏈接庫:
輸出:
此時,運行qt程序 依舊報錯。
根據查閱的資料,問題出在
網友們所說的“詭異”的路徑那一行(你的輸出可能和我的不一樣的,但問題應該一樣) ,也就是有 libmysqlclient.21.dylib 這行。
另外查了下 @repath 的含義 意思是說 不能明確的指向。。。所以 這里就需要將libmysqlclient.21.dylib 指向扳到正確的道路。
方法就是利用 install_name_tool -change
執行
這里一定要注意順序,剛開始我就是順序搞錯了,死活就是不行,最后跑到官方論壇里用蹩腳的英語發帖求教也無果,最后還是一遍的重試,一遍的檢查才發現的。一天就這么浪費了。
此刻在運行qt程序 ,就不會再報上面的錯誤了。
撒花,禮花搞起~~~
1: windows 下登陸mysql 命令行,(1)進入cmd (2) cd mysql 安裝路徑/mysqlserver5.6/bin (3) 使用命令mysql -u root -p 然后根據提示輸入密碼 進入命令行 select user(); //顯示當前用戶 2: 在同一臺電腦上利用Qt 訪問數據庫 (1)顯示當前電腦上安裝的數據庫驅動 QStringList drivers = QSqlDatabase::drivers(); foreach(QString driver, drivers) qDebug() "/t" driver; (2)QSqlDatabase db=QSqlDatabase::addDatabase("QMYSQL");/對 QMYSQL進行操作,本函數 有第二個參數 連接名 db.setHostName("localhost");//或127.0.0.1 本主機 db.setPort(3306); db.setDatabaseName("example"); //對數據庫example進行操作 db.setUserName("wangxuetao"); //wangxuetao是一個對example數據庫有操作權限的賬戶 db.setPassword("3791948"); 于是mysql中增加一個賬戶可使用 Grant all previliges on *.* to ‘wangxuetao’@’localhost’ identified by ‘3791948’ with grant option; Flush privileges; //更新 (3)db.open() 函數可由于檢測數據庫是否連接成功 coutDBConnection(); 2. m_sqlquery = new QSqlQuery("",m_sqldb);//statement 1:connect db with sql query 3. if(result == R_OK) 4. { 5. result = m_sqlquery-exec("INSERT INTO children(fname,age) VALUES('A nn2',13)"); 6. if(!result) 7. qDebug()" [OK] ""EXEC successed"; 8. m_sqlquery-exec("SELECT * FROM children c LIMIT 0,1000"); 9. while(m_sqlquery-next()) 10. { 11. qDebug()value(0).toString()value(1). toString(); 12. } 13. }