MFC odbc访问远程数据库

首先,MFC通过ODBC访问数据库,主要使用两个类,一个是CDataBase,一个是CRecordset。第一个是用于建立数据库连接的,第二个是数据集,用来查询的。步骤如下:
1.实例化一个CDataBase对象,并建立连接
CDataBase database;
database.OpenEx( _T( "DSN=odbclink" ),CDatabase::noOdbcDialog);//odbclink为数据源名称
//判断一下是否正确打开
if(!database.IsOpen())
{
_tprintf(_T"打开失败");
}
2.从CRecordset继承一个类
class myRecorderSet : public CRecordset
...{
public:
    myRecorderSet(CDatabase
*   pDatabase   =   NULL,CString   sSQlstatment = "DNS = test1",int nParam=2);
    
~myRecorderSet()...{};
    
void   Move(   long   nrows,   WORD   wfetchtype   );   
    
void SetInputParam(CString sUserID);
    DECLARE_DYNAMIC(myRecorderSet)

    
int   m_retreturn_value;  
    CString   m_UserID;  
    CString   m_UserName;  
    CString   m_SqlStatment;

public:  
    
virtual   CString   GetDefaultConnect();         //   Default   connection   string  
    virtual   CString   GetDefaultSQL();         //   Default   SQL   for   Recordset  
    virtual   void   DoFieldExchange(CFieldExchange*   pFX);     //   RFX   support  

#ifdef   _DEBUG  
    
virtual   void   AssertValid()   const;  
    
virtual   void   Dump(CDumpContext&   dc)   const;  
#endif 
}
;
void AFXAPI RFX_Textout(CFieldExchange * pfx, LPCTSTR szname, 
                            CString
& value, int nmaxlength, int ncolumntype, short nscale);  
IMPLEMENT_DYNAMIC(myRecorderSet,CRecordset)  

myRecorderSet::myRecorderSet(CDatabase
* pdb,CString Sqlstatment,int nParam):CRecordset(pdb)  
...{  
    m_UserID
="";  
    m_UserName
="";  
    m_nDefaultType 
= snapshot;  
    m_SqlStatment 
= Sqlstatment;
    m_nParams
=nParam;
}


CString myRecorderSet::GetDefaultConnect()  
...{  
    
return _T(m_SqlStatment);
}
  

CString myRecorderSet::GetDefaultSQL()  
...{  
    
return _T("");
}
  

void myRecorderSet::DoFieldExchange(CFieldExchange* pFX)  
...{  
    pFX
->SetFieldType(CFieldExchange ::outputParam);        //set the field type to outputParam for the return value 
    RFX_Int(pFX, _T("@RETURN_VALUE"), m_retreturn_value);    //bind the return value to the variable 
    pFX->SetFieldType(CFieldExchange ::inputParam);            //reset the field type to inputParam 
    RFX_Text(pFX, "@issd", m_UserID);                    //,255,SQL_CHAR,0);     
    pFX->SetFieldType(CFieldExchange ::outputParam);
    RFX_Text(pFX, 
"@nsssame", m_UserName);                //bind the @m_UserName to the m_UseraName

}
  

/**//////  
//   myRecorderSet   diagnostics  

#ifdef _DEBUG 
void myRecorderSet::AssertValid() const 
...
    CRecordset::AssertValid(); 
}
 

void myRecorderSet::Dump(CDumpContext& dc) const 
...
    CRecordset::Dump(dc); 
}
 
#endif 

void myRecorderSet::Move(long nrows, WORD wfetchtype) 
...
    
if (m_nFields) 
        CRecordset ::Move(nrows, wfetchtype); 
    
else 
        m_bBOF 
= m_bEOF = true
}
 
void myRecorderSet::SetInputParam(CString sUserID)
...{
    m_UserID
= sUserID;
}

转载于:https://www.cnblogs.com/carekee/articles/2016126.html

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/378520.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

微机原理——扩展存储器设计

目录【1】存储器的层次结构【2】存储器的分类【3】SRAM1、基本原理:2、结构:3、芯片参数与引脚解读:4、CPU与SRAM的连接方式【4】DRAM1、基本原理:2、结构3、芯片引脚解读:【5】存储器系统设计【6】存储器扩展设计&…

floatvalue 重写_Java Number floatValue()方法与示例

floatvalue 重写Number类floatValue()方法 (Number Class floatValue() method) floatValue() method is available in java.lang package. floatValue()方法在java.lang包中可用。 floatValue() method is used to return the value denoted by this Number object converted …

array_column php什么版本可以用,array_column兼容php5.5以下版本

gistfile1.txt// ----------------------------------------------------------------------// |获取二维数组中指定的一列,PHP5.5以后有专用函数array_column()// ----------------------------------------------------------------------// |param array $arr// …

。net学习之控件的使用注意点

jQuery使用 1、自定义属性的使用<script>$(#xwjj_i_main br[brinfoPd_KangQiao_Subject_Xwjj_br_1]).hide();</script> 2、ready代码块$(document).ready(function(){ //你的代码}); 3、简单的特效hide&#xff08;&#xff09;$("a").click(function()…

09-CNN手写数字识别

CNN卷积神经网络的本质就是卷积运算 维度的调整&#xff1a; tf.reshape(imageInput,[-1,28,28,1]) imageInput为[None,784]&#xff0c;N行* 784维 调整为 M28行28列*1通道 即&#xff1a;二维转化为四维数据 参数一&#xff1a;等价于运算结果M 参数二&#xff1a;28 28 表示…

【转】左值与右值

出处&#xff1a;http://www.embedded.com/electronics-blogs/programming-pointers/4023341/Lvalues-and-Rvalues C and C enforce subtle differences on the expressions to the left and right of the assignment operator If youve been programming in either C or C for…

Opencv将处理后的视频保存出现的问题

问题描述&#xff1a; 代码运行过程中&#xff0c;imshow出来的每帧的效果图是正确的&#xff0c;但是按照网上的方法保存下来却是0kb&#xff0c;打开不了。 参考的网上的一些方法&#xff0c;均是失败的&#xff0c;具体原因我也不清楚&#xff1a; 1、例如我这样设置&#x…

Java Number shortValue()方法与示例

Number类shortValue()方法 (Number Class shortValue() method) shortValue() method is available in java.lang package. shortValue()方法在java.lang包中可用。 shortValue() method is used to return the value denoted by this Number object converted to type short (…

MATLAB可以打开gms文件吗,gms文件扩展名,gms文件怎么打开?

.gms文件类型&#xff1a;Gesture and Motion Signal File扩展名为.gms的文件是一个数据文件。文件说明&#xff1a;Low-level, binary, minimal but generic format used to organize and store Gesture and Motion Signals in a flexible and optimized way; gesture-related…

黑白图片颜色反转并保存

将图像的黑白颜色反转并保存 import cv2 # opencv读取图像 img cv2.imread(rE:\Python-workspace\OpenCV\OpenCV/YY.png, 1) cv2.imshow(img, img) img_shape img.shape # 图像大小(565, 650, 3) print(img_shape) h img_shape[0] w img_shape[1] # 彩色图像转换为灰度图…

家猫WEB系统

现在只放源码在些.为它写应用很简单有空整理文档演示地址:jiamaocode.com/os/ 源码&#xff1a;http://jiamaocode.com/ProCts/2011/04/14/1918/1918.html转载于:https://www.cnblogs.com/jiamao/archive/2011/04/16/2018339.html

C# DataRow数组转换为DataTable

public DataTable ToDataTable(DataRow[] rows) { if (rows null || rows.Length 0) return null; DataTable tmp rows[0].Table.Clone(); // 复制DataRow的表结构 foreach (DataRow row in rows) tmp.Rows.Add(row); // 将DataRow添加…

plesk 运行不了php,如何在Plesk中使用composer(使用其他版本的PHP运行Composer)

对于基于Plesk的服务器, composer的默认安装将使用系统安装的PHP版本, 而不使用Plesk所安装的任何版本。尽管Composer至少需要PHP 5.3.2, 但是当你尝试在需要特定版本PHP的项目中安装依赖项时, 就会出现问题。例如, 如果你有一个至少需要PHP 7.2的项目, 并且系统的默认PHP安装是…

Java Calendar hashCode()方法与示例

日历类hashCode()方法 (Calendar Class hashCode() method) hashCode() method is available in java.util package. hashCode()方法在java.util包中可用。 hashCode() method is used to retrieve the hash code value of this Calendar. hashCode()方法用于检索此Calendar的哈…

Error: Flash Download failed - Target DLL has been cancelled

博主联系方式: QQ:1540984562 QQ交流群:892023501 群里会有往届的smarters和电赛选手,群里也会不时分享一些有用的资料,有问题可以在群里多问问。 由于换了新电脑,keil重装了下,然而之前的MCU的支持包没有安装,以及一些其他的问题,导致可以编译但是不能将程序烧录到单片…

设计一个较为合理的实验方案来研究芳纶纤维的染色热力学性能

请你设计一个较为合理的实验方案来研究芳纶纤维的染色热力学性能?包括吸附等温线、亲和力、染色热和染色熵的测定,并指出实验中应注意哪些事项来减少实验误差? 标准答案: 染色热力学理论研究染色平衡问题。研究染色热力学性能:首先研究选择适宜的染料 吸附等温线类型测定…

我也谈委托与事件

虽然在博客园里面已经有很多关于C#委托和事件的文章&#xff0c;但是为了自己在学习的过程中&#xff0c;加深对委托的理解&#xff0c;我还是决定写一下自己的心得体会。以备他日在回来复习。委托&#xff08;delegate&#xff09;是一个类&#xff0c;但是这个类在声明的时候…

php错误拦截机制,php拦截异常怎么写-PHP问题

php拦截异常可以通过PHP的错误、异常机制及其内建数set_exception_handler、set_error_handler、register_shutdown_function 来写。首先我们定义错误拦截类&#xff0c;该类用于将错误、异常拦截下来&#xff0c;用我们自己定义的处理方式进行处理&#xff0c;该类放在文件名为…

智能车复工日记【4】:关于图像的上下位机的调整问题总结

系列文章 【智能车Code review】—曲率计算、最小二乘法拟合 【智能车Code review】——坡道图像与控制处理 【智能车Code review】——拐点的寻找 【智能车Code review】——小S与中S道路判断 【智能车Code review】——环岛的判定与补线操作 智能车复工日记【1】——菜单索引…

设计合理的实验方案来研究阳离子改性棉织物与未改性棉的染色动力学性能

染色动力学性能研究染色的什么问题?设计合理的实验方案来研究阳离子改性棉织物与未改性棉的染色动力学性能?并指出如何计算反映染色动力学的主要参数? 标准答案: 染色动力学研究染色速率问题。 为了研究阳离子改性棉纤维及未改性棉纤维对活性染料染色动力学性能,首先要测…