⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 mysqltablemodel.cpp

📁 跨平台,多数据库查看编辑和查询工具,平台支持windows,linux,数据库支持oracle,odbc,mysql,slite等
💻 CPP
字号:
#include <QtSql>
#include "mysqltablemodel.h"


MySqlTableModel::MySqlTableModel(QObject *parent, QSqlDatabase db)
	:QSqlTableModel(parent,db)
{
}

MySqlTableModel::~MySqlTableModel()
{
}

void MySqlTableModel::setKeyField(const QSqlIndex &index)
{
	this->setPrimaryKey(index);
}

bool MySqlTableModel::selectResult()
{
	bool bret;
	try{
	bret=select();
	/*
	while(  canFetchMore())
	{
		qApp->processEvents();
	   fetchMore();
	}
	*/
  }
  catch(...)
  {
  	
  }
	return bret;
}

bool MySqlTableModel::save()
{
	/*
	for(int i=0;i<this->record().count();i++)
	{
		QSqlRelation relation=this->relation(i);
	  if(relation.isValid())
	  {
	  	
	  	for(int r=0;r<this->rowCount();r++)
	  	{
	  		QVariant vData=this->data(this->index(r,i),Qt::EditRole);
	  		this->setData(this->index(r,i),vData,Qt::DisplayRole);
	  	}
	  	this->setRelation(i,QSqlRelation());	  	
	  }
  }
  */
  /*
  QString s;
	for(int r=0;r<this->rowCount();r++)
	{
		for(int c=0;c<this->record().count();c++)
		{
			s.append(this->data(this->index(r,c),Qt::EditRole).toString());
			s.append("\t");
		}
		s.append("\n");
	}
	*/
	//s=database().driver()->escapeIdentifier(tableName().append(".FIELDNAME"),QSqlDriver::FieldName);
	//QMessageBox::warning(0,"",s);

	bool vret=true;
	vret=submitAll();
	
	return vret;
}

void MySqlTableModel::cancel()
{	
	this->revertAll();
}

bool MySqlTableModel::updateRowInTable(int row, const QSqlRecord &values)
{
	return QSqlTableModel::updateRowInTable(row,values);
	return true;
}

bool MySqlTableModel::setData ( const QModelIndex & index, const QVariant & value, int role  )
{
	bool bret= QSqlTableModel::setData(index,value,role);
		
	
	return bret;
}

void MySqlTableModel::setRelation ( int column, const QSqlRelation & relation )
{
	mapRelation.insert(column,relation);
  QList<QPair<QString, QString> > list;
  QPair<QString, QString> pair;
  QString sql;
  QSqlQuery query(database());
	sql=tr("select %1,%2 from %3 order by %4").arg(relation.indexColumn()).arg(relation.displayColumn()).arg(relation.tableName()).arg(relation.indexColumn());
	if(query.exec(sql))
	{
		while(query.next())
		{
			pair.first=query.record().field(0).value().toString().trimmed();
			pair.second=query.record().field(1).value().toString().trimmed();
			list.append(pair);
		}
	}
	mapValues.insert(column,list);
	query.clear();

}

QSqlRelation  MySqlTableModel::getRelation(int column)
{
	return mapRelation.value(column);
}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -