更新或插入规范化的SQL数据库

时间:2013-12-30 01:34:40

标签: c# sql asp.net-mvc-4

我有一个普遍的问题。在插入或更新到规范化表时,您可以使用常规插入或更新SQL语句,还是需要使用存储过程?我正在编写MVC应用程序,并决定不使用EF或LINQ,因此我可以在制作SQL的同时学习SQL。

2 个答案:

答案 0 :(得分:1)

是。您可以使用常规插入或更新。 将存储过程视为SQL语句的别名。看看这个: What is a stored procedure?

答案 1 :(得分:0)

您可以使用其中之一。使用SQL Server的System.Data.SqlClient命名空间最好从内存和性能。 EF允许您为所有操作指定存储过程,这将是朝着正确方向迈出的简单步骤。你缺乏的唯一体验就是连接/状态管理。

直接从代码中调用SELECT / INSERT / UPDATE / DELETE等语句肯定是可能的,但是出于一致性和维护原因,我会默认使用所有CRUD操作的存储过程......

良好的句法结构:

using( System.Data.Common.DbConnection conn = new System.Data.SqlClient.SqlConnection("<<connection string>>)
{
     using(System.Data.Common.DbCommand cmd = conn.CreateCommand())
     {
         cmd.CommandType = <Choose either TEXT or StoredProcedure>;
         cmd.Text = "<T-SQL or name of sproc:"dbo.ProcedureName">;
         using( System.Data.Common.DbDataReader rdr = cmd.ExecuteReader() )
         {
              //if only reading 1 row
              if( rdr.Read() )  // the .Read() method will read row by row
              {

                  string s = (string) rdr["Column"];  //<-- best to always check for nulls.
              }

         }
}

您必须始终注意数据库连接,确保所有连接都已关闭/处理,这是您必须要做的事情。

上面显示的使用结构化代码是一个很好的模型,特别是对于OLEDB命令,但是对于ADO.NET,我几乎只在USING语句中包含Connections和Readers。