我正在考虑将非敏感SQL代码存储在表的列中。这被认为是可接受的做法吗?如果是,那么最好的数据类型是什么?此代码将由C#代码访问。
编辑 - 我正在使用SQL服务器。但是,这似乎是一个通用的RDBMS问题。
此外,相关问题 - What are the pros and cons to keeping SQL in Stored Procs versus Code
答案 0 :(得分:4)
使用stored procedures。它们基本上就是您所描述的内容,但内置支持维护和安全性。
您可以创建一个程序:
CREATE PROCEDURE GetCustomerByID ( @CustomerID varchar(11) )
AS
BEGIN
SELECT CustomerName, CustomerAddress
FROM Customers
WHERE CustomerID = @CustomerID
END
然后call it from C#使用EXEC
命令或指定CommandType.StoredProcedure
。
SqlCommand sqc = new SqlCommand("GetCustomerByID", con);
sqc.CommandType = CommandType.StoredProcedure;
sqc.Parameters.AddWithValue("@CustomerID", "FOOBAR");
var reader = sqc.ExecuteReader();
如果从SQL调用它,请使用EXEC
EXEC GetCustomerByID @CustomerID = 'FOOBAR';
要稍后更改,请使用ALTER PROCEDURE
或DROP PROCEDURE
代替CREATE PROCEDURE