我想直接修改表中的数据,并且修改之后点保存按钮,数据库中的表也随之改变,下次连接读出来的表信息就是修改后的信息。
怎么实现呢?我以为有了控件DataGrid,运行程序后就可以直接在DataGrid里边手动修改并且保存呢,但是好像不行!
贴一些我的数据源、连接、保存代码:
数据源:void CChapq2_1View::OnSource() //按钮“数据源”
{
// TODO: Add your control notification handler code here
//数据的动态连接
HRESULT hr;
IDataSourceLocatorPtr m_dlPrompt=NULL;
_ConnectionPtr m_Conn=NULL;
::CoInitialize(NULL);
CLoginDialog dlg1;
hr=m_dlPrompt.CreateInstance(__uuidof(DataLinks));//创建数据源对象
m_Conn=m_dlPrompt->PromptNew();//弹出数据连接属性。返回值是sql的连接字符串
if(m_Conn!=NULL)
{
m_strConnection.Format('%s',(char*)m_Conn->ConnectionString);
//将字符串显示到edit上
UpdateData(FALSE);//变量的值,显示到关联的控件上
}
}
连接:void CChapq2_1View::OnConncet() //按钮“连接”
{
// TODO: Add your control notification handler code here
UpdateData(TRUE);//将edit控件上的值() 传给 控件关联的变量
try
{
m_Connection.CreateInstance(__uuidof(Connection));//创建连接对象
//真正的 连接数据库 !! 好鸡冻啊 哈哈
m_Connection->Open(_bstr_t(m_strConnection.GetBuffer(0)),'','',-1);
}
catch(_com_error &e)
{
GenerateError(e.Error(),e.Description());
}
catch(...){}
UpdateData(FALSE);
getTables();////得到数据库中的数据表(自己定义的函数)
}
保存:void CChapq2_1View::OnLaw() //简单修改功能中“保存”按钮
{
// TODO: Add your control notification handler code here
m_strSQL = _T('');
m_strSQL='select * from ['+m_strTableName+']';
MessageBox('修改的内容已保存');
UpdateData(FALSE);
OnExecute();//执行SQL语句
}
执行SQL语句:
OnExecute():void CChapq2_1View::OnExecute()
{
// TODO: Add your control notification handler code here
try
{
m_Recordset.CreateInstance(__uuidof(Recordset));
UpdateData(TRUE);
m_Connection->CursorLocation=adUseClient;//设置游标非常重要,如果没有,则无法显示数据
//真正执行SQL的代码
m_Recordset->Open(m_strSQL.GetBuffer(0),m_Connection.GetInterfacePtr(),adOpenDynamic,adLockOptimistic,adCmdText);
}
catch(_com_error &e)
{
GenerateError(e.Error(),e.Description());
}
catch(...){}
//将结果集m_Recordset里边的数据 更新 到DataGrid关联的变量:m_DataGrid中
m_DataGrid.SetRefDataSource((LPUNKNOWN)m_Recordset);
m_DataGrid.Refresh();
UpdateData(FALSE);//将变量里边的信息 更新 到关联的控件DataGrid中去(真正的显示)
m_Recordset=NULL;
}
如何实现 在DataGrid内直接 修改 信息的操作呢?
本站仅提供存储服务,所有内容均由用户发布,如发现有害或侵权内容,请
点击举报。