进性插入操作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);
使用上面未注释代码的话,即使输入相同数据,系统也不报错,但使用注释掉的部分即可得到正常结果。
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);
使用上面未注释代码的话,即使输入相同数据,系统也不报错,但使用注释掉的部分即可得到正常结果。
解决方案 »
- 请教大家一个问题 CListCtrl在release下无效的问题。
- 在VC中调用matcom的问题,请教大家!
- VC实现类似屏保一样,等待一定时间如果没有动作,就触发一个函数的问题,大家进来帮我看看啊,例外有API函数可以获得鼠标和键盘没有动作吗?
- 对话框最小化,最大画后,我用button触发的图被擦掉了,但因为一些关系,draw()函数不能放在onpaint中
- 高手帮帮忙!!
- 高分求一个东东
- ImageList_AddIcon的问题。在先给分。一解决就给分!!!
- 如何把一个可执行程序当作线程启动起来?
- 编译器出问题了!
- 结构化存储里如何重新打开一个流
- 新手对头文件的疑惑!
- 请教另一个字体问题
db_Data.set_size(sizeof("basket"));把
2.key.size要指针指向内存大小(你现在是sizeof(*ptr1) 只是4字节)