VC, List Control显示数据库内容的问题。

VC, List Control显示数据库内容的问题。,第1张

1.假设你的窗口是模态窗口

你的方法有很大问题

按下KEY,显示对话框

那么主线程就执行到子对话框中的代码

你的所谓"KEY回调函数"被阻塞

等子对话框终止后

"KEY回调函数"才恢复执行

那个时候对话框都没有了

做什么也没有效果了

在"KEY回调函数"内子对话框窗口类中的个变量还是有效的

但是子对话框中的子控件"List"已经销毁了

解决办法:

在子对话框的OnInitDialog函数中初始化你的List

而非在"KEY回调函数"中

2.如果是非模态对话框

那么"KEY回调函数"不会阻塞

你可以设置List内容

但是必须经过动态创建对话框类的实例并且调用Create创建对话框

如果这些没有做

那么仍旧是访问异常

3.DoDataExchange用于控件和某数据成员间建立一种隐射关系

不应该将它作为初始化函数使用

初始化一般数据可以使用构造函数

初始化子窗口可以使用OnInitDialog

4.关于ListCtrl

Dlg1.m_List.InsertItem(0,"行")//插入行

Dlg1.m_List.SetItemText(0,1,"列")//插入列

在SetItemText之前

请务必使用InsertColumn函数插入一列

不然你想插入的那一列根本不存在

或许也是一个访问异常的原因(我不确定会否异常,但这样做是不对的)

用odbc向数据库写入二进制数据的问题2009年02月05日 星期四 15:34odbc/mfc 向mysql 写入二进制数据的问题

发表于:2008-10-21 18:01:33 楼主

问题描述:

向mysql添加其它类型的数据都没问题,当添加二进制数据,例如一个图片,程序执行正常但实际上并没有添加进去。

奇怪的是:我用mysql 的C API 向数据库中添加该图片后,使用 odbc/mfc 却可以很好的把它读出来。

添加二进制文件的示例代码如下:

其中rs 为结果集;m_data 的类型为CLongBinary

CFileStatus fileStatus

CFile fp("viewpp.jpg",CFile::modeRead)

fp.GetStatus(fileStatus)

Cnctable *rs=new Cnctable(mbase)

rs->Open(CRecordset::snapshot)

rs->AddNew()

rs->m_data.m_hData = ::GlobalAlloc(GPTR ,(size_t)fileStatus.m_size)

size_t temps= fp.Read(rs->m_data.m_hData,fileStatus.m_size)

rs->m_data.m_dwDataLength = fileStatus.m_size

rs->SetFieldNull(&rs->m_data,FALSE)

rs->Update()

注:使用的odbc驱动为3.51

如有解答不胜感激。

发表于:2008-10-23 15:43:024楼 得分:0

问题已经解决,感谢各位的回答,

下面是翻阅MSDN 使用CByteArray解决上述问题,

具体原因不明,可能是兼容性问题。

代码如下:

m_data 的类型由CLongBinary 改为CByteArray;同时修改DoFieldExchange中对应的内容

CFileStatus fileStatus

CFile fp("viewpp.jpg",CFile::modeRead)

fp.GetStatus(fileStatus)

Cnctable *rs=new Cnctable(mbase)

rs->Open(CRecordset::snapshot)

rs->AddNew()

rs->m_data.m_hData = ::GlobalAlloc(GPTR ,(size_t)fileStatus.m_size)

rs->m_data.m_dwDataLength = fileStatus.m_size

------------------------------下面是改动的地方----------

nct->m_data.SetSize(fileStatus.m_size)

fp.Read(nct->m_data.GetData(),fileStatus.m_size)

nct->Update()


欢迎分享,转载请注明来源:内存溢出

原文地址:https://54852.com/sjk/10807340.html

(0)
打赏 微信扫一扫微信扫一扫 支付宝扫一扫支付宝扫一扫
上一篇 2023-05-11
下一篇2023-05-11

发表评论

登录后才能评论

评论列表(0条)

    保存