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