2013-05-18 101 views
1

我想问一下,哪种方法是更好的方法来插入/更新/删除数据到数据库,直接从数据层使用查询或为每个插入和删除创建存储过程?使用查询从程序或使用存储过程插入/更新/删除数据库中的数据

+0

你可以找到利弊&存储过程的缺点v/s内嵌查询... – Sachin

+0

我认为最好的方法是程序。 –

+0

如果我的要求是动态地创建一些表格,那么我应该为这些表格做些什么? – MYK

回答

1

对于您正在讨论的查询类型,您的问题取决于完全是

  • 有关与需要没有数据库端规则的单个表简单的CRUD操作应遵循的,直接SELECTUPDATE,或DELETE语句都是精品。

  • 对于更复杂的操作,例如当数据库应用规范化并访问多个表时,存储过程值得工作。 (实际上,“仅在需要额外工作时才使用存储过程”是一个很好的规则。)

  • 对于单个查询调用中的多行的简单CRUD,程序查询是唯一的方法除非你想要使用XML。

  • (以及简单的CRUD在那里你将要使用的记录感知接口,要么应该工作得很好。)

+0

从安全的角度来看也有所不同。在SQL Server中,您可以将'INSERT INTO A'语句放入存储过程,并授予用户在该SP上的EXECUTE权限,在这种情况下,不需要在'A'上的INSERT权限。如果没有INSERT权限,用户将只能使用该SP插入“A”。调用一个任意的'INSERT INTO A ...'将被禁止。 –

0

我总是用一个存储过程来完成简单的CRUD操作

我曾经在一个SP内做过所有的CRUD操作,希望对你有帮助。

对于实例

create proc <procedure name> 
(
    <parameterName> <datatype>=<default value if any>, 
    @mode varchar(20) 
) 
as 
begin 

if(@mode='Insert') 
begin 

    --your query for insert 
end 

if(@mode='Update') 
begin 

    --your query for update 
end 

if(@mode='Delete') 
begin 

    --your query for delete 
end 

if(@mode='Select') 
begin 

    --your query for Select 
end 

end 

,你可以有更多的“模式”,如“按ID选择”,“软删除”,“硬删除”,等等......

相关问题