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 root@localhost 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”);
qt中新建项目
#include "mainwindow.h"
#include
#include
#include
#include
#include
#include
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 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.写入时并无格式之分,只是保存二进制数据,读取后和写入时的格式一样。这里用第一种方法,首先在数据库中插入列:
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...
}