ADO编程,现在有个问题要请教各位:
因为设置了主键,在添加记录时该字段不能有相同的值,但又不想每次添加之前都遍历、比较(会不会花很多时间?),有什么好的方法吗?
我原来是这样的:
try
{
m_pUserSet->AddNew();
{
m_pFieldPtr=m_pFieldsPtr->Item["STCD"];
if(strSTCD.IsEmpty())
strSTCD=" ";
m_pFieldPtr->value=(_variant_t)strSTCD;
m_pFieldPtr=m_pFieldsPtr->Item["YMDHM"];
if(strNewTimeStamp.IsEmpty())
strNewTimeStamp=" ";
m_pFieldPtr->value=(_variant_t)strNewTimeStamp; ..........
}
m_pUserSet->Update();
}
catch(_com_error *e)
{
AfxMessageBox(e->ErrorMessage());
}
catch(...)
{
AfxMessageBox("访问数据库服务器时发生异常.\n.当前数据未能写入数据库.");
return;
}这样在添加时会弹出添加不成功的对话框,然后再也写不进去了,可以在写之前遍历比较一下,但是很麻烦,
有没有其他的避免错误的方法,当不能添加时我就知道return,并且不影响下次添加?
因为设置了主键,在添加记录时该字段不能有相同的值,但又不想每次添加之前都遍历、比较(会不会花很多时间?),有什么好的方法吗?
我原来是这样的:
try
{
m_pUserSet->AddNew();
{
m_pFieldPtr=m_pFieldsPtr->Item["STCD"];
if(strSTCD.IsEmpty())
strSTCD=" ";
m_pFieldPtr->value=(_variant_t)strSTCD;
m_pFieldPtr=m_pFieldsPtr->Item["YMDHM"];
if(strNewTimeStamp.IsEmpty())
strNewTimeStamp=" ";
m_pFieldPtr->value=(_variant_t)strNewTimeStamp; ..........
}
m_pUserSet->Update();
}
catch(_com_error *e)
{
AfxMessageBox(e->ErrorMessage());
}
catch(...)
{
AfxMessageBox("访问数据库服务器时发生异常.\n.当前数据未能写入数据库.");
return;
}这样在添加时会弹出添加不成功的对话框,然后再也写不进去了,可以在写之前遍历比较一下,但是很麻烦,
有没有其他的避免错误的方法,当不能添加时我就知道return,并且不影响下次添加?
另外我建议你用存储过程来实现这个业务,这样效率会更高一些.