在VS2010中ODBS连接SQL2005数据库  查表和修改表代码如下:
UpdateData(true);
CDatabase m_db1;
    Ccun m_rs;
m_db1.Open(_T("RAN"));  //打开的数据源的
m_rs.m_pDatabase=&m_db1;//
m_rs.m_strFilter.Format("name='%s' and password='%s'",m_NM,m_PW); //利用CRecordSet类的成员变量m_strFilter和m_strSort来执行条件查询和结果排序。m_strFilter用于指定过滤字符串,
m_rs.Open(CRecordset::snapshot,NULL,CRecordset::none); 
try 

if(m_NM=="") 

AfxMessageBox("请输入用户名!"); 
return; 

if(m_rs.IsEOF()) 

m_rs.Close(); 
AfxMessageBox("密码错误,请重试"); 
return; 
}
else 

m_rs.Close(); AfxMessageBox("登陆成功"); 
if(m_P==m_RP)
{
try  
{      
m_pConnec.CreateInstance(__uuidof(Connection));
m_pConnec->Open((_bstr_t)"Driver={SQL Server};Server=3TKVNQXA1WOFZC6;Database=ran","","",adModeUnknown);

//或者以下两行其中之一方式
//m_pConnection->Open((_bstr_t)"Driver={SQL Server};Server=11.0.3128\\SQLEXPRESS;Database=haitest","","",adModeUnknown);
//m_pConnection->Open("Provider=Microsoft.Jet.OLEDB.4.0;Data Source=Demo.mdb","","",adModeUnknown); ;
}  
catch(_com_error e)
{
AfxMessageBox("连接数据失败,请检查数据库路径是否正确!");
}
_bstr_t sql;
sql = "select * from cun";
m_pRecord.CreateInstance(__uuidof(Recordset));
m_pRecord->Open(sql,m_pConnec.GetInterfacePtr(),adOpenDynamic,
adLockOptimistic,adCmdText);
try
{
m_pRecord->AddNew(); //添加新行
        m_pRecord->PutCollect("name",(_bstr_t)m_NM);
        m_pRecord->PutCollect("password",(_bstr_t)m_P);
            m_pRecord->Update(); //更新数据表
if(m_pRecord!=NULL) 
m_pRecord->Close(); 
m_pConnec->Close(); 
}
catch(...)
{
MessageBox("操作失败");
return;
}
MessageBox("修改成功");
}
return; 


catch(CException* e) 

e->ReportError(); 
return; 
}
UpdateData(false);
问题:为什么修改的永远都是第一行的信息呢?要怎样改  才能修改想要修改的信息呢??

解决方案 »

  1.   

    sql = "update from cun set [password] = '你的密码' where name ='某个用户'";
      

  2.   

    给个注释??
    我要的目的
    sql = "select * from cun";是打开这个表  只要能和表中随便读出一个name和password成功后  修改password的值。
    感觉是m_pRecord->AddNew(); //添加新行     问题但是不知道怎么改
      

  3.   


    sql = "update from cun set [password] = '你的密码' where name ='某个用户'";
     '你的密码'???'某个用户'???