如何使用C#创建用户oracle数据库而不是使用SQL手动输入用户名,密码?我想在Visual Studio Form中使用C#语言创建Oracle数据库用户。
当我点击Create
按钮时,它应该使用C#语言自动创建数据库用户名和密码。请帮我。
enter image description here
答案 0 :(得分:0)
嗯,这不是一项简单的任务。我不会说C#所以我只会评论Oracle的故事。
新用户由另一个特权用户(即被授予CREATE USER权限的用户)创建 - 并非每个用户都能够执行此操作。例如,SYS是,但SYS是特殊的,您根本不应该使用它,而是创建另一个用户并授予它执行此类操作所需的权限(一个选项是授予它DBA角色)。
现在,作为特权用户连接,您将运行CREATE USER命令,如下所示:
create user oliur --> this is username
identified by oliur_pw --> this is password
default tablespace users
temporary tablespace temp
profile default
quota unlimited on users;
可用表空间列表是
select tablespace_name from dba_tablespaces;
一旦这样做,您应该为新创建的用户授予一些初始权限。否则,他将无法执行任何,甚至无法连接到数据库。这将是CREATE SESSION特权。其他一些特权:
grant create session to oliur;
grant create table to oliur;
grant create procedure to oliur;
...
也许您可以创建一个存储过程,该存储过程驻留在特权用户的架构中。您将传递用户名(作为参数),它将创建具有该名称的用户。从密码开始,您可以将其设置为与用户名相同,常量,加密等等 - 这取决于您。
请注意,此类过程必须使用动态SQL(EXECUTE IMMEDIATE),否则您无法从过程执行DDL。
这就是它的样子:
create or replace procedure p_create_user (par_username in varchar2) is
begin
execute immediate ('create user ' || par_username ||
' identified by ' || par_username ||
' default tablespace user_data ' ||
' temporary tablespace temp' ||
' profile default' ||
' quota unlimited on user_data');
execute immediate ('grant create session to ' || par_username);
end;
/
在Oracle中,将其称为:
begin
p_create_user('oliur');
end;
/
PL/SQL procedure successfully completed.
好的,让我们以oliur连接:
SQL> connect oliur/oliur@kc11g
Connected.
很酷,成功!我们可以做点什么吗?
SQL> create table test (id number);
create table test (id number)
*
ERROR at line 1:
ORA-01031: insufficient privileges
没有,缺少这样做的特权。
现在,从故事的C#部分来看,你只需要弄清楚如何调用Oracle程序,但我希望这比上面的任务更简单。