CSDN首页 空间 新闻 论坛 Blog 下载 读书 网摘 搜索 .NET Java 视频 接项目 求职 在线学习 买书 程序员 通知
山寨机中的战斗机! 程序优化工程师到底对IT界有没有贡献
CSDN社区
搜索 收藏 打印 关闭
CSDN社区 >  VC/MFC >  数据库

关于Berkeley DB的数据库操作的问题,急

楼主bird1982(看星星的鸟)2005-11-01 19:03:58 在 VC/MFC / 数据库 提问

进性插入操作db.put的时候,定义的两个DBT变量,如果set_data属性的参数是字符串的话,那么NOOVERWRITE属性可以正常实现,如果参数是指针的话,程序就无法正常运行,即使输入相同数据也不会出现错误。具体程序如下:  
  LPTSTR   ptr1,ptr2;  
  ptr1   =   (LPTSTR)wParam;  
  ptr2   =   (LPTSTR)lParam;  
  Dbt   db_Key;  
  Dbt   db_Data;  
   
  db_Key.set_data(ptr1);  
        db_Key.set_size(sizeof(*ptr1));  
        db_Data.set_data(ptr2);  
        db_Data.set_size(sizeof(*ptr2));  
   
  // db_Key.set_data("game");  
  // db_Key.set_size(sizeof("game"));  
  // db_Data.set_data("basket");  
  //     db_Key.set_size(sizeof("basket"));  
   
  int   m_result;  
  m_result   =   database.put(NULL,&db_Key,&db_Data,0);  
   
  if(m_result   !=   0)  
  {  
  if   (m_result   ==   DB_KEYEXIST)    
  {  
  MessageBox("Key   Data   Has   Aleady   Exist!");  
  }  
  else  
  {  
  MessageBox("Input   Failed!");  
  }  
    }  
   
    database.close(0);  
  使用上面未注释代码的话,即使输入相同数据,系统也不报错,但使用注释掉的部分即可得到正常结果。 问题点数:100、回复次数:3Top

1 楼bird1982(看星星的鸟)回复于 2005-11-02 09:20:23 得分 0

怎么没人搭理???我迷糊~~~Top

2 楼balloy()回复于 2005-11-02 14:45:08 得分 50

你注释掉的第四句应该是:  
  db_Data.set_size(sizeof("basket"));  
   
  把  
   
  Top

3 楼jlxys(逍遥)回复于 2006-01-06 11:42:34 得分 50

1.init_dbt(&key,   &data)使用前初始化  
  2.key.size要指针指向内存大小(你现在是sizeof(*ptr1)   只是4字节)Top

相关问题

  • 数据库操作
  • 数据库操作
  • 数据库操作
  • vc操作access数据库
  • 关于数据库操作
  • 数据库并发操作!
  • 简单数据库操作
  • 对数据库的操作
  • 数据库操作问题
  • 数据库操作问题?

关键词

  • db
  • dbt
  • ptr
  • lptstr
  • basket
  • key
  • sizeof
  • 使用
  • 话
  • size

得分解答快速导航

  • 帖主:bird1982
  • balloy
  • jlxys

相关链接

  • Visual C++类图书
  • Visual C++类源码下载

广告也精彩

反馈

请通过下述方式给我们反馈
反馈
提问
网站简介|广告服务|VIP资费标准|银行汇款帐号|网站地图|帮助|联系方式|诚聘英才|English|问题报告
北京创新乐知广告有限公司 版权所有, 京 ICP 证 070598 号
世纪乐知(北京)网络技术有限公司 提供技术支持
Copyright © 2000-2008, CSDN.NET, All Rights Reserved
GongshangLogo