进性插入操作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);
使用上面未注释代码的话,即使输入相同数据,系统也不报错,但使用注释掉的部分即可得到正常结果。