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

📄 cquery.cpp

📁 数据库操作类,封装了BDE数据库操作的所有方法。 编译环境 C++ Builder6 下通过。
💻 CPP
字号:
#include "cquery.h"
/*********************************************
*函数名:CQUERY
*功能:构造函数
*参数说明:(type 0 BDE type 1 ADO ,databasename是要连接的数据库的名字(ADO模式ODBC别名),username是连接数据库的用户名(BDE模式可以不添),passwd是连接数据库的用户密码(BDE模式可以不添))
*返回值:无
*最后作者:张大伟
*********************************************/
CQUERY::CQUERY(int type,char*databasename,char*username,char*passwd)
{
  if(type==0)
  {
    TQuery*tmpquery=new TQuery(NULL);
    char tmpdbname[100];
    memset(tmpdbname,0x00,100);
    strcpy(tmpdbname,databasename);
    tmpquery->DatabaseName=tmpdbname;
    Query=tmpquery;
    CType=0;
  }
  /*else if(type==1)
  {
    TADOQuery *tmpquery=new TADOQuery(NULL);
    char str[500];
    memset(str,0x00,500);
    strcpy(str,"Provider=MSDASQL.1;Password=");
    strcat(str,passwd);
    strcat(str,";Persist Security Info=True;User ID=");
    strcat(str,username);
    strcat(str,";Data Source=");
    strcat(str,databasename);
    tmpquery->ConnectionString=str;
    Query=tmpquery;
    CType=1;
  }//*/
}//*/
/*********************************************
*函数名:~CQUERY
*功能:析构函数
*参数说明:
*返回值:无
*最后作者:张大伟
*********************************************/
CQUERY::~CQUERY()
{
  if(CType==0)
  {
    ((TQuery*)Query)->Close();
  }
  else if(CType==1)
  {
    ((TADOQuery*)Query)->Close();
  }
  delete Query;
  Query=NULL;
}
/*********************************************
*函数名:First
*功能:将操作器指到返回记录的第一条
*参数说明:
*返回值:成功或不成功
*最后作者:张大伟
*********************************************/
bool CQUERY::First()
{
  try{
    if(CType==0)
    {
      ((TQuery*)Query)->First();
    }
    else if(CType==1)
    {
      ((TADOQuery*)Query)->First();
    }
  }catch(...)
  {
    return false;
  }
  return true;
}
/*********************************************
*函数名:Prior
*功能:将操作器指到返回记录的前一条
*参数说明:
*返回值:成功或不成功
*最后作者:张大伟
*********************************************/
bool CQUERY::Prior()
{
  try{
    if(CType==0)
    {
      ((TQuery*)Query)->Prior();
    }
    else if(CType==1)
    {
      ((TADOQuery*)Query)->Prior();
    }
  }catch(...)
  {
    return false;
  }
  return true;
}
/*********************************************
*函数名:Next
*功能:将操作器指到返回记录的后一条
*参数说明:
*返回值:成功或不成功
*最后作者:张大伟
*********************************************/
bool CQUERY::Next()
{
  try{
    if(CType==0)
    {
      ((TQuery*)Query)->Next();
    }
    else if(CType==1)
    {
      ((TADOQuery*)Query)->Next();
    }
  }catch(...)
  {
    return false;
  }
  return true;
}
/*********************************************
*函数名:Last
*功能:将操作器指到返回记录的最后一条
*参数说明:
*返回值:成功或不成功
*最后作者:张大伟
*********************************************/
bool CQUERY::Last()
{
  try{
    if(CType==0)
    {
      ((TQuery*)Query)->Last();
    }
    else if(CType==1)
    {
      ((TADOQuery*)Query)->Last();
    }
  }catch(...)
  {
    return false;
  }
  return true;
}
/*********************************************
*函数名:Eof
*功能:标志是否到了操作器的最后
*参数说明:
*返回值:成功或不成功
*最后作者:张大伟
*********************************************/
bool CQUERY::Eof()
{
  if(CType==0)
  {
    return ((TQuery*)Query)->Eof;
  }
  else if(CType==1)
  {
    return ((TADOQuery*)Query)->Eof;
  }
  return false;
}
/*********************************************
*函数名:Bof
*功能:标志是否到了操作器的最前
*参数说明:
*返回值:成功或不成功
*最后作者:张大伟
*********************************************/
bool CQUERY::Bof()
{
  if(CType==0)
  {
    return ((TQuery*)Query)->Eof;
  }
  else if(CType==1)
  {
    return ((TADOQuery*)Query)->Eof;
  }
  return false;
}
/*********************************************
*函数名:FieldByName
*功能:根据字段名返回当前记录的值
*参数说明:字段名称
*返回值:当前操作器当前记录的指定字段的值
*最后作者:张大伟
*********************************************/
char *CQUERY::FieldByName(char*fieldname)
{
  char tmp[MAX_FIELD_LEN];
  memset(tmp,0x00,MAX_FIELD_LEN);
  try{
    if(CType==0)
    {
      strcpy(tmp,((TQuery*)Query)->FieldByName(fieldname)->AsString.c_str());
      return tmp;
    }
    else if(CType==1)
    {
      strcpy(tmp,((TQuery*)Query)->FieldByName(fieldname)->AsString.c_str());
      return tmp;
    }
  }catch(...)
  {
    return "";
  }
  return "";
}
/*********************************************
*函数名:FieldByNumber
*功能:根据字段序号返回当前记录的值
*参数说明:字段号
*返回值:当前操作器当前记录的指定字段的值
*最后作者:张大伟
*********************************************/
char *CQUERY::FieldByNumber(int ifield)
{
  char tmp[MAX_FIELD_LEN];
  memset(tmp,0x00,MAX_FIELD_LEN);
  try{
    if(CType==0)
    {
      strcpy(tmp,((TQuery*)Query)->Fields->FieldByNumber(ifield)->AsString.c_str());
      return tmp;
    }
    else if(CType==1)
    {
      strcpy(tmp,((TQuery*)Query)->Fields->FieldByNumber(ifield)->AsString.c_str());
      return tmp;
    }
  }catch(...)
  {
    return "";
  }
  return "";
}
/*********************************************
*函数名:RecordCount
*功能:查询到的记录总数
*参数说明:
*返回值:当前查询操作器的返回总记录
*最后作者:张大伟
*********************************************/
int CQUERY::RecordCount()
{
  if(CType==0)
  {
    return ((TQuery*)Query)->RecordCount;
  }
  else if(CType==1)
  {
    return ((TADOQuery*)Query)->RecordCount;
  }
  return -1;
}
/*********************************************
*函数名:SetQuerySql
*功能:设置要当前的SQL查询语句
*参数说明:要设置的SQL值
*返回值:成功或不成功
*最后作者:张大伟
*********************************************/
bool CQUERY::SetQuerySql(char * Sql)
{
  try{
    if(CType==0)
    {
      ((TQuery*)Query)->SQL->Clear();
      ((TQuery*)Query)->SQL->Add(Sql);
    }
    else if(CType==1)
    {
      ((TADOQuery*)Query)->SQL->Clear();
      ((TADOQuery*)Query)->SQL->Add(Sql);
    }
  }catch(...)
  {
    return false;
  }
  return true;
}
/*********************************************
*函数名:GetQuerySql
*功能:获取当前的SQL查询语句
*参数说明:
*返回值:当前的SQL值
*最后作者:张大伟
*********************************************/
char* CQUERY::GetQuerySql()
{
  try{
    AnsiString sql;
    if(CType==0)
    {
      sql=((TQuery*)Query)->SQL->Strings[0];
    }
    else if(CType==1)
    {
      sql=((TADOQuery*)Query)->SQL->Strings[0];
    }
    return sql.c_str();
  }catch(...)
  {
    return "";
  }
}
/*********************************************
*函数名:ExecSQL
*功能:执行一条SQL语句
*参数说明:
*返回值:成功或不成功
*最后作者:张大伟
*********************************************/
bool CQUERY::ExecSQL(char*sql)
{
  try{
    if(CType==0)
    {
      ((TQuery*)Query)->Close();
      ((TQuery*)Query)->SQL->Clear();
      ((TQuery*)Query)->SQL->Add(sql);
      ((TQuery*)Query)->ExecSQL();
      ((TQuery*)Query)->Close();//*/
    }
    else if(CType==1)
    {
      ((TADOQuery*)Query)->Close();
      ((TADOQuery*)Query)->SQL->Clear();
      ((TADOQuery*)Query)->SQL->Add(sql);
      ((TADOQuery*)Query)->ExecSQL();
      ((TADOQuery*)Query)->Close();
    }
  }catch(...)
  {
    return false;
  }//*/
  return true;
}
/*********************************************
*函数名:Open
*功能:根据SQL打开操作器
*参数说明:
*返回值:成功或不成功
*最后作者:张大伟
*********************************************/
bool CQUERY::Open()
{
  try{
    if(CType==0)
    {
      ((TQuery*)Query)->Open();
    }
    else if(CType==1)
    {
      ((TADOQuery*)Query)->Open();
    }
  }catch(...)
  {
    return false;
  }
  return true;
}
/*********************************************
*函数名:Close
*功能:关闭操作器
*参数说明:
*返回值:成功或不成功
*最后作者:张大伟
*********************************************/
bool CQUERY::Close()
{
  try{
    if(CType==0)
    {
      ((TQuery*)Query)->Close();
    }
    else if(CType==1)
    {
      ((TADOQuery*)Query)->Close();
    }
  }catch(...)
  {
    return false;
  }
  return true;
}

⌨️ 快捷键说明

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