在过去的某个时刻,在我的VB6时代,我记得能够创建一个sql命令对象(不一定与今天的.NET风格相同),并自动填写sql参数。
这允许我做一些事情,比如只传递我绝对知道存在的参数,如果两个不同的客户端使用不同版本的数据库,我可以调用我的程序知道我仍然会得到一个有意义的响应。< / p>
这样的事情:
Dim cmd as SqlCommand
Set cmd = New SqlCommand(Connection)
cmd.CommandText = "MagicStoredProcedure"
cmd.CommandType = CommandType.StoredProcedure
If cmd.Parameters.Count > 0 Then
If cmd.Parameters(0).Name = "@FirstParameter" Then
cmd.Parameters("@FirstParameter").Value = someValue
End If
End If
Dim r as Recordset
Set r = cmd.ExecuteRecordset()
我记得这样做,但我找不到自己的任何例子,并且尝试在.NET中执行此操作似乎根本不起作用。我看到的所有例子(我已经搜索了一段时间)都手动添加参数。
任何指针?
答案 0 :(得分:0)
我找到了SQLCommandBuilder.DeriveParameters程序,它完全符合我的要求。
SQLCommandBuilder.DeriveParameters(cmd)
If cmd.Parameters.Contains("@FirstParameter") Then
cmd.Parameters("@FirstParameter").Value = someValue
End If
不是我预期的地方。我希望将其烘焙到Command对象或Parameters集合中。
答案 1 :(得分:-1)
我过去曾使用过模板解决方案进行数据库访问,它使用映射到存储过程变量的类属性,并在需要时动态构建字符串。
它与您在使用Visual Studio时将连接数据库中的存储过程和表添加到项目时的效果非常相似。
也许它可以指出你正确的方向。