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

📄 sqlinsert.cpp

📁 应用VC++编的简单的ODBC访问接口。(我已经是会员了! 挖哈哈!!!)
💻 CPP
字号:

#include "SQLInsert.h"

#include "dt.h"
#include <string>

CSQLInsert::CSQLInsert()
   :CSQLBase()
{
}

CSQLInsert::CSQLInsert( const char* tableName )
   :CSQLBase()
{
   SetTable( tableName );
}

CSQLInsert::~CSQLInsert()
{
}

//////////////////////////////////////////////////////
//
//////////////////////////////////////////////////////

void CSQLInsert::SetColumn( const char* columnName, const char* a_chValue, char a_DataType )
{
   if ( _columns != "" )
      _columns += ", ";
   _columns += columnName;

   if ( _values != "" )
      _values += ", ";

   if ( a_chValue[0] == '\0' || stricmp( a_chValue, "NULL" ) == 0 )
   {
      _values += "NULL";
   }
   else if ( strlen( a_chValue ) >= 3 && a_chValue[0] == '{' && a_chValue[1] == 'd' 
      && a_chValue[2] == '\'' ) // {d'1972-01-15'} etc.
   {
      _values += a_chValue;
   }
   else if ( stricmp( a_chValue, "now()" ) == 0 ) // now()
   {
      _values += a_chValue;
   }
   else // otherwise single quote all strings
   {
      if ( a_DataType == STRING )
      {
         std::string value = a_chValue;
         ConvertQuotes( value );
         _values += "'";
         _values += value;
         _values += "'";
      }
      else if ( a_DataType == ORACLE_DATE )
      {
         TDt dt( a_chValue );
         std::string cs = dt.Format( TDt::ORACLE );
         _values += "'";
         _values += cs;
         _values += "'";
      }
      else if ( a_DataType == ODBC_DATE 
         || a_DataType == DATE_MMDDYYYY )
      {
         TDt dt( a_chValue );
         std::string cs = dt.Format( TDt::ODBC );
         _values += cs;
      }
      else if ( a_DataType == DOUBLE )
      {
         _values += a_chValue;
      }
      else if ( a_DataType == INTEGER )
      {
         _values += a_chValue;
      }
      else if ( a_DataType == LONG )
      {
         _values += a_chValue;
      }
      else
      {
         std::string value = a_chValue;
         ConvertQuotes( value );
         _values += "'";
         _values += value;
         _values += "'";
      }
   }
}

void CSQLInsert::SetColumn( const char* columnName, double value )
{
   if ( _columns != "" )
      _columns += ", ";
   _columns += columnName;

   char ach[32];
   sprintf( ach, "%.2f", value );
   if ( _values != "" )
      _values += ", ";
   _values += ach;
}

void CSQLInsert::SetColumn( const char* columnName, int value )
{
   if ( _columns != "" )
      _columns += ", ";
   _columns += columnName;

   char ach[32];
   sprintf( ach, "%d", value );
   if ( _values != "" )
      _values += ", ";
   _values += ach;
}

/*
void CSQLInsert::SetColumn( const char* columnName, COleDateTime& value )
{
   if ( _columns != "" )
      _columns += ", ";
   _columns += columnName;

   std::string cs;
   if ( value.GetStatus() == COleDateTime::valid )
      cs = value.Format( "{d'%Y-%m-%d'}" );
   else
      cs = "NULL";

   if ( _values != "" )
      _values += ", ";
   _values += cs;
}
*/

void CSQLInsert::SetColumn( const char* columnName, bool isValidTime, int month, int day, int year )
{
   if ( _columns != "" )
      _columns += ", ";
   _columns += columnName;

   std::string cs;
   if ( isValidTime )
   {
      TDt dt( month, day, year );
      cs = dt.Format( TDt::ODBC );
   }
   else
      cs = "NULL";

   if ( _values != "" )
      _values += ", ";
   _values += cs;
}


void CSQLInsert::SetColumn( const char* columnName, long value, char a_DataType )
{
   if ( _columns != "" )
      _columns += ", ";
   _columns += columnName;

   if ( a_DataType == LONG )
   {
      char ach[32];
      sprintf( ach, "%d", value );
      if ( _values != "" )
         _values += ", ";
      _values += ach;
   }
   else if ( a_DataType == ODBC_DATE
      || a_DataType == JULIAN_DATE )
   {
      TDt dt( value );
      std::string cs = dt.Format( TDt::ODBC );
      if ( _values != "" )
         _values += ", ";
      _values += cs;

   }
}

const char* CSQLInsert::GetStatement()
{
   _stmt = "INSERT INTO " + _table + "( ";
   _stmt += _columns;
   _stmt += " ) VALUES( ";
   _stmt += _values;
   _stmt += " )";
   return _stmt.c_str();
}

void CSQLInsert::ResetContent()
{
   CSQLBase::ResetContent();

   _columns = "";
   _values = "";
}

⌨️ 快捷键说明

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