这个要你自己先判断
然后再决定 Update or Insert
然后再决定 Update or Insert
解决方案 »
- 我想在一个对话框中添加一个右键的菜单来显示信息,请问如何实现,初学mfc,希望大家帮帮忙,谢谢
- 已知一个程序的句柄,如何在这个程序的编辑框中添加内容?
- 用CSplitterWnd拆分成三个窗口,如何让拆分后的窗体随着主窗体自动调整大小?
- send和recv有什么区别
- windows 宿主脚本是不是能够完成windows的所有功能?
- 几个面试题,大家来做作
- 诡异的ado初始化问题,高手帮忙
- 问个小问题,在vc++里怎么样才能去掉前后的空格阿
- 如果我用VC做的.DLL包括MFC,以后在调用该.DLL的地方只要将.DLL拷贝到相关目录底下就行了?
- InstallShield设置IIS的问题
- 菜问题,对话框的背景图如何添加?
- HOW TO SET A EDIT BOX IN A DIALOG AND GET NUMBER FROM EDIT BOX (USE WIN32 API)
我就是不知道怎样用_RecordsetPtr类来判断。 望狼兄指点一二!
看有没有记录返回
我只有这个笨办法了
if not exist(select where)
增加
else
修改
_RecordsetPtr rst;
...
_bstr_t bsSql="select * from dangan where name='x'"
rst->Open(bsSql,...)
if(rst->ADOEOF)
{
没有该记录。
增加
}
else
{
找到该记录,修改
}
使用存储过程
AddEditDangan
@chrName char(10)若该字段为10字节,
as
if not exist(select * from dangan where name=@chrName)
不存在该记录,增加
else
存在该记录,修改。
使用_CommandPtr对象执行该存储过程,传入name 参数,就行了。
在程序中就不需要判断了
用存储过程这个主意确实不错Select 返回的记录集的记录数为0则表示没有记录 可以做插入操作 否则做更新操作
m_pRecordset = m_pConnection->Execute("SELECT COUNT(*) FROM table where ...",&RecordsAffected,adCmdText); _variant_t vIndex = (long)0;
_variant_t vCount = m_pRecordset->GetCollect(vIndex);if(vCount.lVal==0)
insert...
else
update...
Dim rstEmployees As ADODB.Recordset
Dim strCnn As String
Dim strID As String
Dim strFirstName As String
Dim strLastName As String
Dim booRecordAdded As Boolean ' 打开连接。
Set cnn1 = New ADODB.Connection
strCnn = "Provider=sqloledb;" & _
"Data Source=srv;Initial Catalog=pubs;User Id=sa;Password=;"
cnn1.Open strCnn
' 打开雇员表。
Set rstEmployees = New ADODB.Recordset
rstEmployees.CursorType = adOpenKeyset
rstEmployees.LockType = adLockOptimistic
rstEmployees.Open "employee", cnn1, , , adCmdTable
rstEmployees.AddNew
rstEmployees!emp_id = strID
rstEmployees!fname = strFirstName
rstEmployees!lname = strLastName
rstEmployees.Update
booRecordAdded = True另外也可以操作sql语句insert!
... _ConnectionPtr m_pConnection; //数据库连接对象
_CommandPtr m_pCommand; //命令集
_RecordsetPtr m_pRecordset; //结果集 _ParameterPtr spPAR1; //参数1
_ParameterPtr spPAR2 //参数2
_ParameterPtr spPAR3; //参数3
_ParameterPtr spPAR4; //参数4
m_pConnection.CreateInstance("ADODB.Connection");
m_pCommand.CreateInstance("ADODB.Command");
m_pRecordset.CreateInstance("ADODB.Recordset");
CREATEiNSTANCE(spPAR1,Parameter) ; //参数1
CREATEiNSTANCE(spPAR2,Parameter) ; //参数2
CREATEiNSTANCE(spPAR3,Parameter) ; //参数3
CREATEiNSTANCE(spPAR4,Parameter) ; //参数4 hrCon=m_pConnection->Open("","","",-1); //连接字符串偶就不写了
m_pCommand->ActiveConnection=m_pConnection;
m_pRecordset->PutRefActiveConnection(m_pConnection);
m_pCommand->CommandType=adCmdStoredProc;//说明命令类型--存储过程 spPAR1=m_pCommand->CreateParameter("存储过程参数1", adVarChar,adParamInput,8); //指定参数类型,长度
m_pCommand->Parameters->Append(spPAR1); spPAR2=m_pCommand->CreateParameter("存储过程参数2",
adVarChar,adParamInput,8); //指定参数类型,长度
m_pCommand->Parameters->Append(spPAR2); spPAR3=m_pCommand->CreateParameter("存储过程参数1", adVarChar,adParamInput,8); //指定参数类型,长度
db->m_pCommand->Parameters->Append(spPAR3); spPAR4=m_pCommand->CreateParameter("存储过程参数1", adVarChar,adParamInput,8); //指定参数类型,长度
m_pCommand->Parameters->Append(spPAR4); spPAR4=...;
spPAR4=...;
spPAR4=...;
spPAR4=...; //参数赋值 m_pCommand->Execute(NULL,NULL,0); //执行存储过程