知识大全 VC在SQL Server7中动态增加/删除用户
Posted 权限
篇首语:读书是最好的学习。追随伟大人物的思想,是最富有趣味的一门科学。本文由小常识网(cha138.com)小编为大家整理,主要介绍了知识大全 VC在SQL Server7中动态增加/删除用户相关的知识,希望对你有一定的参考价值。
VC在SQL Server7中动态增加/删除用户 以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!
本文主要通过调用SQL Server 的系统存储过程和系统表 在程序中动态增加和删除用户 一 首先用系统管理员帐号登录系统 程序省略 请看源程序 二 进入用户管理界面 读取数据库 从master sysdatabse中读取所有数据库 void CUser::AddDataBase() _RecordsetPtr rs; _bstr_t bt; HRESULT hr; CString str; bt=(_bstr_t) select * from master sysdatabases ; try hr=rs CreateInstance (__uuidof(Recordset)); ASSERT(SUCCEEDED(hr)); //打开数据源 hr=rs >Open (bt cn GetInterfacePtr () adOpenDynamic adLockOptimistic adCmdText); ASSERT(SUCCEEDED(hr)); rs >MoveFirst(); while(!rs >EndOfFile) str=(char*)(_bstr_t)rs >Fields >GetItem( name ) >Value; m_database AddString(str); rs >MoveNext(); rs >Close(); m_database SetCurSel( ); catch(__error) 读取用户 从master syslogins视图中读取所有非NT用户 void CUser::AddUser() _RecordsetPtr rs; _bstr_t bt; HRESULT hr; CString str; bt=(_bstr_t) select * from master syslogins where isntname= ; try hr=rs CreateInstance (__uuidof(Recordset)); ASSERT(SUCCEEDED(hr)); //打开数据源 hr=rs >Open (bt cn GetInterfacePtr () adOpenDynamic adLockOptimistic adCmdText); ASSERT(SUCCEEDED(hr)); rs >MoveFirst(); while(!rs >EndOfFile) str=(char*)(_bstr_t)rs >Fields >GetItem( name ) >Value; m_user_list AddString(str); rs >MoveNext(); rs >Close(); m_user_list SetCurSel ( ); catch(__error) 读取当前用户有权限的数据库 每个数据库有权限的用户在每个数据的sysusers表中 void CUser::OnSelchangeUserList() CString strUser strDB; m_db_list ResetContent (); m_user_list GetText (m_user_list GetCurSel () strUser); for(int i= ;i<m_database GetCount ();i++) m_database GetLBText (i strDB); if(HasRight(strUser strDB)) m_db_list AddString (strDB); if(m_db_list GetCount ()> ) m_db_list SetCurSel ( ); //查看用户user有没有数据库database的权限 BOOL CUser::HasRight(CString user CString database) _RecordsetPtr rs; _bstr_t bt; HRESULT hr; BOOL bResult=FALSE; bt=(_bstr_t) select * from +(_bstr_t)database+(_bstr_t) sysusers where name= +(_bstr_t)user+(_bstr_t) ; try hr=rs CreateInstance (__uuidof(Recordset)); ASSERT(SUCCEEDED(hr)); //打开数据源 hr=rs >Open (bt cn GetInterfacePtr () adOpenDynamic adLockOptimistic adCmdText); ASSERT(SUCCEEDED(hr)); rs >MoveFirst(); rs >Close(); bResult=TRUE; catch(__error) return bResult; 增加用户及授予权限 增加用户调用存储过程sp_addlogin 授予权限调用存储过程sp_grantdbaccess 基本用法为:sp_addlogin username password sp_grantdbaccess usernamevoid CUser::OnOK() // TODO: Add extra validation here UpdateData(); CString strDB; m_database GetLBText (m_database GetCurSel() strDB); if(m_user IsEmpty () || m_user== sa ) return; try if(m_user_list FindString ( m_user)< ) cn >Execute ( sp_addlogin +(_bstr_t)m_user+ +(_bstr_t)m_user+ NULL adExecuteNoRecords); m_user_list AddString (m_user); else cn >PutDefaultDatabase ((_bstr_t)strDB); cn >Execute ( sp_grantdbaccess +(_bstr_t)m_user+(_bstr_t) NULL adExecuteNoRecords); m_db_list AddString (strDB); catch(__error) AfxMessageBox( 发生错误! ); //CDialog::OnOK(); 删除用户及权限: 删除用户调用存储过程sp_droplogin 授予权限调用存储过程sp_revokedbaccess 基本用法为:sp_droplogin username sp_revokedbaccess usernamevoid CUser::OnBnClickedDel() UpdateData(); m_user TrimRight (); if(m_user IsEmpty () || m_user== sa || m_user_list FindString ( m_user)< ) AfxMessageBox( 不能删除! ); return; CString strDB; m_database GetLBText (m_database GetCurSel () strDB); try if(m_db_list GetCount ()< ) //删除用户 cn >Execute ( exec sp_droplogin +(_bstr_t)m_user+ NULL adExecuteNoRecords); m_user_list DeleteString (m_user_list FindString ( m_user)); else //删除权限 if(m_db_list FindString ( strDB)>= ) cn >PutDefaultDatabase ((_bstr_t)strDB); cn >Execute ( exec sp_revokedbaccess +(_bstr_t)m_user+ NULL adExecuteNoRecords); m_db_list DeleteString (m_db_list FindString ( strDB)); catch(__error) AfxMessageBox( 发生错误! ); cha138/Article/program/SQLServer/201311/21990相关参考
在VC中链接动态链接库的方法简要说明 以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!方法一windo
知识大全 jquery动态增加text元素以及删除文本内容实例代码
这段代码是通过jquery动态增加限定数额的text(本例为个)以及清除文本内容用到了after()方法追加元素<!以下为script代码开始>复制代码代码如下:<script&
在SQL中删除重复记录(多种方法) 以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧! 学习sql有一
在SQLServer中快速删除重复记录 以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!lishixi
在SQLServer中如何删除数据库 以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!lishixin
在PB中动态修改SQL语句[2] 以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧! &nbs
在PB中动态修改SQL语句[1] 以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧! &nbs
PL/SQL开发中动态SQL的使用方法 以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧! 内容摘要在
知识大全 请问在sql2000中怎么区分登入,用户,角色,并用例子举例说明
cha138/Article/program/SQLServer/201404/30574
SQLServer中动态和静态内存分配 以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧! SQL服务