Qt中整合MySQL,向MySQL中插入圖片
Ubuntu中
Ubuntu10.10 Qt 4.7
安裝MySQL
sudo apt-get install mysql-server
這個應該很簡單了,而且我覺得大家在安裝方面也沒什麼太大問題,所以也就不多說了,下面我們來講講配置。
配置MySQL
注意,在Ubuntu下MySQL預設是隻允許本地訪問的,如果你要其他機器也能夠訪問的話,那麼需要改變/etc/mysql/my.cnf配置檔案了!下面我們一步步地來:
預設的MySQL安裝之後根使用者是沒有密碼的,所以首先用根使用者進入:
$mysql -u root
在這裡之所以用-u root是因為我現在是一般使用者(firehare),如果不加-u root的話,mysql會以為是firehare在登入。注意,我在這裡沒有進入根使用者模式,因為沒必要。一般來說,對mysql中的資料庫進行操作,根本沒必要進入根使用者模式,只有在設定時才有這種可能。
進入mysql之後,最要緊的就是要設定Mysql中的root使用者密碼了,否則,Mysql服務無安全可言了。
mysql> GRANT ALL PRIVILEGES ON *.* TO [email protected] IDENTIFIED BY "1";
要再登入,Terminal:mysql -u root -p
提示輸入密碼,輸入1,回車;
create database Enroll;//建立資料庫 use Enroll;//使用資料庫 CREATE TABLE `Student` ( //建表 `Sno` char(9) NOT NULL, `Sname` char(20) DEFAULT NULL, `Ssex` char(1) DEFAULT NULL, `Sage` int(11) DEFAULT NULL, `Scome` char(20) DEFAULT NULL, `classNo` char(5) NOT NULL, UNIQUE KEY `Sno` (`Sno`) ) ENGINE=InnoDB DEFAULT CHARSET=latin1
再用insert插入幾組資料:
insert into Student values(“1”,“Jack”,“B”,“20”,“USA”,”244”);
資料庫引擎的區別參考:http://www.jb51.net/article/38004.htm
qt中新建專案
#include "mainwindow.h" #include <QApplication> #include <QCoreApplication> #include <QDebug> #include <QtSql/QSqlDatabase> #include <QStringList> #include <QSqlQuery> int main(int argc, char *argv[]) { QCoreApplication a(argc, argv); QSqlDatabase db = QSqlDatabase::addDatabase("QMYSQL"); db.setHostName("localhost"); db.setDatabaseName("enroll"); db.setUserName("root"); db.setPassword("vcc2014"); if(db.open()) { QSqlQuery query; query.exec("select * from student"); while(query.next()) { int id = query.value(0).toInt(); QString str = query.value(1).toString(); qDebug() << id << "|" << str; } db.close(); } else { qDebug() << "opened error"; } return 0; return a.exec(); }
簡單說明一下,qt4.7直接帶了mysql的驅動,像上面那樣宣告一下就行了。還有一定要在.pro裡寫上qt+=sql。
Windows中
Windows 8.1 Qt 5.3 Mysql 5.6.22 Python 3.4.2
下載並安裝Mysql。
下載並安裝python。
啟動Mysql
cd C:\Program Files\MySQL\MySQL Server 5.6\bin
mysql -u root -p
顯示所有資料庫:
將 D:\Qt\Qt5.3.2\5.3\msvc2013_64_opengl\plugins\sqldrivers\qsqlmysql.dll 拷貝到 D:\Qt\Qt5.3.2\5.3\msvc2013_64_opengl\bin 下面。(對應自己的安裝目錄進行修改)
將C:\Program Files\MySQL\MySQL Server 5.6\lib\libmysql.dll拷貝到 D:\Qt\Qt5.3.2\5.3\msvc2013_64_opengl\bin 下面。(對應自己的安裝目錄進行修改)
不然會報錯:
QSqlDatabase: QMYSQL driver not loaded
測試程式碼和上面的一樣。
向MySQL中插入圖片有下面幾點要注意:
1.寫入時並無格式之分,只是儲存二進位制資料,讀取後和寫入時的格式一樣。jpg圖片用二進位制格式寫入mysql,再以二進位制格式讀取,圖片格式為jpg
gif圖片用二進位制格式寫入mysql,再以二進位制格式讀取,圖片格式為gif
...就是說與圖片的格式無關。
2.圖片用資料庫儲存,以檔案方式儲存這兩種方式各有利弊。
3.mysql儲存圖片用BLOB型別。BLOB型別按可儲存資料的大小分幾種(詳細看mysql help)。
4.如以檔案方式儲存,用某種配置檔案儲存路徑為好,如登錄檔,ini檔案等,可以靈活配置
圖片路徑.
強烈不建議用資料庫儲存圖片在的路徑!
這裡用第一種方法,首先在資料庫中插入列:
alter table student add image mediumblob;
這裡用mediumblob,表示儲存中等大小的圖片。
儲存函式
QPixmap image("xxx");
QByteArray bytes;
QBuffer buffer(&bytes);
buffer.open(QIODevice::WriteOnly);
image.save(&buffer, "PNG");
QVariant imageData(bytes);
QSqlQuery query;
query.prepare("insert into studen (Sno, Sname, Ssex, Scome, classNo, image)"
query.bindValue(0, 1);
...
query.bindValue(5, imageData);
query.exec();
讀取函式
query.exec("select * student");
while (query.next())
{
QPixmap p;
p.loadFromData(query.value(5).toByteArray(), "PNG");
//Do some thing...
}
相關推薦
Qt中整合MySQL,向MySQL中插入圖片
Ubuntu中Ubuntu10.10 Qt 4.7安裝MySQL sudo apt-get install mysql-server 這個應該很簡單了,而且我覺得大家在安裝方面也沒什麼太大問題,所以也就不多說了,下面我們來講講配置。 配置MySQL 注意,在Ubuntu下My
使用MySQL Workbench建立資料庫,建立新的表,向表中新增資料
初學資料庫,記錄一下所學的知識。我用的MySQL資料庫,使用MySQL Workbench管理。下面簡單介紹一下如何使用MySQL Workbench建立資料庫,建立新的表,為表新增資料。 點選上圖中的“加號”圖示,新建一個連線, 如上圖,先輸入資料庫的賬號
Mysql亂碼問題; 在java中,向資料庫中插入資料出現亂碼
1.Mysql亂碼問題 產生亂碼的原因: 編碼和解碼不一致; 檢視字符集 `show variables like ‘character_set_%’; 發現聯結器connection的編碼是utf8,伺服器的編碼是latin1;將伺服器的編碼
Hibernate在MyEclipse中的部署,連線MySQL資料庫
如今,更多的人使用MyEclipse而不再使用eclipse,MyEclipse比eclipse的方便之處我就不說了,但MyEclipse不是免費的,我也是使用破解版的。 在MyEclipse中如何搭建hibernate環境呢?今天學習一點點想與
MySQL的bug:子查詢中使用rand(),上層查詢中rand()的值被重算
在使用mysql的過程中,發現了一個神奇的bug。 mysql語句如下: select random_val from (select floor(rand()*10) as random_val from Test) b where b.random_val
安裝解壓版本的MySQL,安裝過程中的常見命令,檢查windows系統錯誤日誌的方式來檢查MySQL啟動錯誤,關於Fatal error: Can't open and lock privilege
安裝mysql下載mysql-5.6.26-winx64,並解壓到:D:\Installed\mysql-5.6.26-winx64\mysql-5.6.26-winx64建立data目錄建立my.in
黑馬基礎階段測試題:創建一個存儲字符串的集合list,向list中添加以下字符串:”C++”、”Java”、” Python”、”大數據與雲計算”。遍歷集合,將長度小於5的字符串從集合中刪除,刪除成功後,打印集合中的所有元素
cti ati pac 完成 body ava 字符 c++ rgs package com.swift; import java.util.ArrayList; import java.util.List; import java.util.ListIterator
Spring中整合Cage,實現驗證碼功能
ger 類型 body match exce sub pom esp rec 1.pom.xml中添加Cage依賴。 <dependency> <groupId>com.github.cage</groupId
VS2013 c++連結資料庫,應用儲存過程,向資料庫中寫入資料
// ConsoleApplication1.cpp : 定義控制檯應用程式的入口點。 // #include "stdafx.h" #include "iomanip" using namespace std; #import "c:\Program Files\Common Files\S
SpringBoot整合mybatis,及SpringBoot中的junit測試
1、pom檔案中引入mybatis依賴:mybatis-spring-boot-starter 和mysql驅動依賴:mysql-connector-java,以及spring-boot-starter-test依賴用於junit測試
jsp實現仿QQ空間新建多個相簿名稱,向相簿中新增照片
工具:Eclipse,Oracle,smartupload.jar;語言:jsp,Java;資料儲存:Oracle。 實現功能介紹: 主要是新建相簿,可以建多個相簿,在相簿中新增多張照片,刪除照片,刪除相簿,當相簿下有照片時先刪除照片才能刪除相簿。 因為每個相簿和照片要有所
java/poi讀取word,並替換word中的文字內容,向word中插入圖片的操作
先貼程式碼,注:部分程式碼源自網路其他前輩的文章,這裡只是做一個功能整合。 package fcjTool; import java.io.IOException; import java.io.InputStream; import org.ap
java中日期計算,向後移動,得到明天的日期
Date date=new Date();//取時間 Calendar calendar =new GregorianCalendar(); calendar.setTime(date); calendar.add(
Zuul中整合Swagger2,實現對源服務API測試
前言 我們知道,Swagger2整合到專案中,可以非常方便地進行介面測試,是前後端對接效率提高。現在,我們可以在Zuul中整合Swagger2,通過Zuul配置檔案配置的對映路徑,來生成源服務介面的測
C語言新建檔案,向檔案中輸入內容並讀出檔案內容
三、格式化讀寫函式--fscanf( )函式和fprint( )函式 呼叫方式分別是: fscanf(檔案指標,格式字串,輸入表);fscanf 函式將指標指向的檔案內容,以格式符要求的形式,讀入記憶體指定地址內 fprintf(檔案指標,格式字串,輸出表);fprintf 函式是將記憶體指定地址內的內容
Redis 整合spring ,做mysql的快取
專案環境: 在SpringMVC + MyBatis + Mysql。Redis部署在Linux虛擬機器。 1、整體思路 參考Ehcache實現MyBatis二級快取程式碼(Maven引用對應jar查閱)使用Spring管理Redis連線池模仿EhcacheCache
Java中(向上,向下)造型造型和介面回撥中的問題
最近回顧了一下java繼承中的問題,下面貼程式碼: package com.cc; /** * 目的:問題驗證,關於向上和向下造型過程中,檢測存在繼承關係的物件訪問關係。 * * * @
SQL SERVER 中有一個表有自動增長的欄位,向表中插入值時怎麼辦
比如表 A 欄位有 id(自動增長) name age addrinsert into table values('','','') 這種寫法不管自動增長的欄位 直接從name欄位開始也可以明顯的表示insert into table(name,ag
根據字典中值得大小,對字典中的項排序
lam and for 數據 bcd 參數 sorted imp abcde 案例1: 某班語文科目的成績以字典形式存儲,形式為:{"lili":89,"wenwen":91 ...} 根據成績高低,計算學生的排名 解決方案: 使用內置函數sorted 1,利用zip將
eclipse,代碼中有錯誤,項目中卻不顯示紅叉
tails pen ces style pos mpi btn project trac ***修改eclipse 代碼提示級別1.單個項目修改項目上右鍵-->properties-->java compiler-->building-->enabl