如果检测MSSQL2000系统中已经存在的登录名。(100分)

  • 主题发起人 主题发起人 Fins
  • 开始时间 开始时间
F

Fins

Unregistered / Unconfirmed
GUEST, unregistred user!
  我用程序建立登录帐号,SP_ADDLOGIN 帐户名,但是我不知无何检测这个帐户名是否已经存在。
请各位大侠帮助。
 
drop procedure adduser
go
create procedure adduser @name varchar(40)
as
if @name in ( select name from dbo.sysxlogins )
print '用戶存在'
else
begin
exec ('sp_addlogin '+ @name)
print '添加用成功'
end


 
如果不是在master數據里主存儲過程的話﹐可按下操作
CREATE procedure adduser @name varchar(40)
as
if @name in ( select name from master.dbo.sysxlogins )
print '用戶存在'
else
begin
exec ('sp_addlogin '+ @name)
print '添加用成功'
end
GO
 
这是一个存贮过程吗?必须要对master.dbo.sysxlogins 这个数据库进行读取吗?
我好像可以用Sp_HelpLogins这个命令显示所有登录用户的信息,但是它显示两个报表
我用Query控件无法读取。
 
是的﹗是一個存儲過程﹗ 把過程改成以下內容
drop procedure adduser
go
CREATE procedure adduser @name varchar(40)
as
if @name in ( select name from master.dbo.sysxlogins )
select '用戶存在' as revalue
else
begin
exec ('sp_addlogin '+ @name)
select '添加用成功' as revalue
end
GO
我用Delphi的Adostoredproc調用成功
procedure TForm1.BitBtn1Click(Sender: TObject);
begin
adostoredproc1.Close;
adostoredproc1.Parameters[1].value:=edit1.text;
adostoredproc1.Open;
showmessage(adostoredproc1.Fields[0].AsString);

end;
 
那我直接用Delphi的Query控件进行操作不就行了。为什么要用存储过程呢?
Query1.Sql.Clear;
Query1.Sql.Add('Select * From master.dbo.sysxlogins');
Query1.Open;
If Not Query1.Locate('Name',Edt_LoginName.Text,[参数忘了比较长]) Then
Begin
Query1.Close;
Query1.Sql.Clear;
Query1.Sql.Add('Exec Sp_AddLogin :LoginName');
Query1.ParamByName('LoginName').Value:=Edt_LoginName.Text;
Query1.ExecSql;
End
Else
Begin
Showmessage('此登录名已经存在!');
End;
这样可以吗?

 
不知以上方案是否可行。我还想问各位大大的方案和我的这种方法的优缺点在什么地方。
我想知道存贮过程在这种服务器数据库的操作过程中起一个什么样的作用?谢谢。
 
各位大大是不是觉得分数不够。不够我也可再加。请各位帮帮忙。
 
接受答案了.
 
后退
顶部