知识大全 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中链接动态链接库的方法简要说明

在VC中链接动态链接库的方法简要说明  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!方法一windo

知识大全 jquery动态增加text元素以及删除文本内容实例代码

  这段代码是通过jquery动态增加限定数额的text(本例为个)以及清除文本内容用到了after()方法追加元素<!以下为script代码开始>复制代码代码如下:<script&

知识大全 在SQL中删除重复记录(多种方法)

在SQL中删除重复记录(多种方法)  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!  学习sql有一

知识大全 在SQL Server中快速删除重复记录

在SQLServer中快速删除重复记录  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!lishixi

知识大全 在SQL Server中如何删除数据库

在SQLServer中如何删除数据库  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!lishixin

知识大全 在PB中动态修改SQL语句[2]

在PB中动态修改SQL语句[2]  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧! &nbs

知识大全 在PB中动态修改SQL语句[1]

在PB中动态修改SQL语句[1]  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧! &nbs

知识大全 PL/SQL开发中动态SQL的使用方法

PL/SQL开发中动态SQL的使用方法  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!  内容摘要在

知识大全 请问在sql2000中怎么区分登入,用户,角色,并用例子举例说明

cha138/Article/program/SQLServer/201404/30574

知识大全 SQL Server中动态和静态内存分配

SQLServer中动态和静态内存分配  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!  SQL服务