1、windows下安装mysql(压缩包格式)
1.1. 配置环境
1.1.1. 变量名:MYSQL_HOME
1.1.2. 变量值:E:\mysql-5.7.28-win32
1.2. 解压 管理员运行cmd
1.3. 执行命令:mysqld --initialize-insecure --user=mysql 在./目录下生成data目录
1.4. 安装MySQL:mysqld -install
1.5. 启动服务:net start MySQL
1.6. 重启:service mysqld restart
1.7. 登录:mysql -u root -p(初始没有密码直接回车)
1.8. 修改密码:set password for root@localhost = password(‘123’);
1.9. 查看数据库全部编码格式: show variables like ‘character%’;
1.10. 查看表的编码:show create table 表名;
1.11. 显示所有数据库:show databases;
1.12. 选择数据库:use 数据库名;
1.13. 显示表:show tables;
1.14. 显示表数据:select * from 表名;
1.15. 卸载数据库:sc delete mysql
1.16. 编码格式:配置ini文件 参考:https://www.cnblogs.com/muxisc/p/11916968.html
和 https://www.cnblogs.com/RayWang/p/9347874.html
1.17. 乱码问题:创建数据库和表时选择UTF8格式,修改ini配置文件,qt编码与其一致QTextCodec::setCodecForLocale(QTextCodec::codecForName(“UTF-8”));
2、数据库连接
//统一编码
QTextCodec::setCodecForLocale(QTextCodec::codecForName("UTF-8"));
QSqlDatabase _ConnectDB = QSqlDatabase::addDatabase("QMYSQL");
_ConnectDB.setHostName("localhost");
_ConnectDB.setDatabaseName("motiongait");
_ConnectDB.setUserName("root");
_ConnectDB.setPassword("123456");
_ConnectDB.setPort(3306);
if (_ConnectDB.open())
{
QMessageBox::warning(NULL, QStringLiteral("提示"), "OPEN SUCCEED", QMessageBox::Yes);
//检测文件 校准 并 上传
testFileCalibrationAndUpload();//具体上传操作
}
else
{
QMessageBox::warning(NULL, QStringLiteral("提示"), "OPEN FILED", QMessageBox::Yes);
}
_ConnectDB.close();
3、数据库上传
1、将数据拼接 单表数据量少于99个时,可以使用arg()拼接。数据量超过使用QTextStream()拼接
2、注意插入语句中单引号,int等类型不加 、char等类型加
QSqlQuery _query;//用于执行SQL语句
QTextStream writeStr(&tmpStr);
writeStr << 变量;
//插入
QString str = QString("insert into test_data values (%1)").arg(tmpStr);
bool ret = query.exec(str);
if (!ret)
{
qDebug() << query.lastError().text();
}
//查询最后一条ID
qDebug() << "1====" << query.lastInsertId().toInt();
//select LAST_INSERT_ID() as id
4、数据库更新
//更新该ID对应的filename
QString("update test_data set fileName = '%1' where id = %2").arg(tmpFileName).arg(existID);
5、数据库删除
query.exec(“delete from 表名 where name = “要删除的名””);
6、数据库遍历
QString selectStr = “select * from 表名”;
query.exec(selectStr);
While(query.next())//相当于指针
{
//用value获取转换
qDebug()<<query.value(0).toInt()
<<query.value(“name”).toString();
//用record 相同
QSqlRecord record = query.record();
qDebug()<<record.value(0).toInt();
qDebug()<<record.size();
7、使用QSqlTableModel查看数据库
(1)使用前需要打开数据库
QSqlTableModel * model = new QSqlTableModel(this);
ui.tableView->setModel(model);
modle->setTable("表名");
model->select();//设置查询
//设置提交模式(手动提交)
model->setEditStrategy(QSqlTableModel::OnManualSubmit);
//点击按钮 添加一条空记录
QSqlRecord record = model->record();
int count = model->rowCount();//共多少行
model->insertRecord(count,record);//将空记录插入最后一行
//提交
model->submitall();
//撤销
model->revertAll();//撤销后再次执行一次提交
//查询功能
model->setFilter("将要查询的字符串");
model->select();
8、数据库表问题
1、当设置自增ID后, 使用插入语句时,字符拼接需将第一个值设置为0或NULL