博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
QT 数据库编程四
阅读量:5775 次
发布时间:2019-06-18

本文共 3106 字,大约阅读时间需要 10 分钟。

//vmysql.cpp#include "vmysql.h"#include 
Vmysql::Vmysql(){ mysql_init(&mysql1); connection=NULL; memset(errorbuf,0,sizeof(errorbuf));}Vmysql::~Vmysql(){}/*连接数据库*/int Vmysql::sql_connect(const char *hostname, const char *username, const char *passwd, const char *dbname){ if(hostname==NULL||username==NULL||passwd==NULL||dbname==NULL) { memset(errorbuf,0,sizeof(errorbuf)); strcpy(errorbuf,"sql_connect() 参数不可以为空!"); /*这里没有父窗口,所以第一个参数为0*/ //QMessageBox::critical(0,"错误信息","sql_connect() 参数不可以为空!"); return -1; } connection=mysql_real_connect(&mysql1,hostname,username,passwd,dbname,0,0,0); if(connection==NULL) { memset(errorbuf,0,sizeof(errorbuf)); strcpy(errorbuf,mysql_error(&mysql1)); //QMessageBox::critical(0,"错误信息",mysql_error(&mysql1)); return -1; } /*连接成功,设置字符集*/ if(mysql_query(connection,"SET NAMES utf8")!=0) { memset(errorbuf,0,sizeof(errorbuf)); strcpy(errorbuf,mysql_error(&mysql1)); return -1; } return 0;}/*断开数据库连接*/void Vmysql::sql_disconnect(){ if(connection) { mysql_close(connection); connection=NULL; }}/*执行SQL更新*/int Vmysql::sql_exec(const char *strsql){ if(strsql==NULL) { memset(errorbuf,0,sizeof(errorbuf)); strcpy(errorbuf,"sql_exec() 参数不可以为空!"); return -1; } if(mysql_query(connection,strsql)!=0) { memset(errorbuf,0,sizeof(errorbuf)); strcpy(errorbuf,mysql_error(&mysql1)); return -1; } return 0;}/*执行SQL查询*/int Vmysql::sql_query(const char *strsql,QStandardItemModel **model){ if(strsql==NULL||model==NULL) { memset(errorbuf,0,sizeof(errorbuf)); strcpy(errorbuf,"sql_query() 参数不可以为空!"); return -1; } if(mysql_query(connection,strsql)!=0) { memset(errorbuf,0,sizeof(errorbuf)); strcpy(errorbuf,mysql_error(&mysql1)); return -1; } /*获取结果集*/ MYSQL_RES *result=mysql_store_result(connection); /*mysql_affected_rows(connection);返回当前数据集有多少行 * mysql_field_count(connection);返回当前数据集有多少列*/ /*特别注意:mysql_affected_rows()或者mysql_field_count()方法必须在mysql_store_result()之后使用*/ int rowcount = mysql_affected_rows(connection); int fieldcount=mysql_field_count(connection); if(result==NULL) { memset(errorbuf,0,sizeof(errorbuf)); strcpy(errorbuf,mysql_error(&mysql1)); return -1; } /*创建返回model*/ /*创建一个rowcount行fieldcount列的model数据集; * 根据SQL语句返回的行列总数,动态的创建model*/ QStandardItemModel *tmodel=new QStandardItemModel(rowcount,fieldcount); /*创建列数据*/ MYSQL_FIELD *field=NULL; for(int i=0;i
setHeaderData(i,Qt::Horizontal,field->name); } /*创建单元格数据*/ MYSQL_ROW row=NULL; for(int i=0;i
index(0,0,QModelIndex()),index()函数第一个参数表示第几行,第二个参数表示第几列,第三参数是固定写法*/ tmodel->setData(tmodel->index(i,j,QModelIndex()),row[j]); } } *model=tmodel; /*释放mysql_store_result()函数分配的内存空间*/ mysql_free_result(result); return 0;}/*错误信息*/const char *Vmysql::ger_error(){ return this->errorbuf;}

 

转载地址:http://mrhux.baihongyu.com/

你可能感兴趣的文章
我的友情链接
查看>>
显式锁(第十三章)
查看>>
看linux书籍做的一些重要笔记(2011.07.03更新)
查看>>
从案例学RxAndroid开发(上)
查看>>
Redis学习手册(内存优化)
查看>>
浅尝TensorFlow on Kubernetes
查看>>
springboot系列十 Spring-Data-Redis
查看>>
excel进行矩阵计算
查看>>
iOS: Block的循环引用
查看>>
变量声明提升1
查看>>
树莓派下实现ngrok自启动
查看>>
通过XAML Islands使Windows桌面应用程序现代化
查看>>
Javascript 深入浅出原型
查看>>
Magento XML cheatsheet
查看>>
haproxy mysql实例配置
查看>>
MySQL 8.0 压缩包版安装方法
查看>>
JS prototype 属性
查看>>
iphone-common-codes-ccteam源代码 CCEncoding.m
查看>>
Android 阴影,圆形的Button
查看>>
C++概述
查看>>