c# – SQL参数和问号

c# – SQL参数和问号,第1张

概述我正在从经典ASP切换到ASP.NET.而且我在使用旧方法轻松做一些基本的东西时遇到了一些麻烦.下面是一个方便的ASP函数,我用它来执行几行的标量查询. FUNCTION ExecuteScalarParams(SQLQuery, Parameter_Array)Set cmd1 = Server.CreateObject("ADODB.Command") cmd1.ActiveConnect 我正在从经典ASP切换到ASP.NET.而且我在使用旧方法轻松做一些基本的东西时遇到了一些麻烦.下面是一个方便的ASP函数,我用它来执行几行的标量查询.
FUNCTION ExecuteScalarParams(sqlquery,Parameter_Array)Set cmd1 = Server.CreateObject("ADODB.Command") cmd1.ActiveConnection = con cmd1.CommandText = sqlquery cmd1.CommandType = 1 FOR ParamCount = 0 TO UBOUND(Parameter_Array)    cmd1.Parameters(ParamCount) = Parameter_Array(ParamCount)NEXT 'ParamCountSet rstScalar = cmd1.Execute()IF NOT rstScalar.EOF THEN    arrScalar = rstScalar.GetRows()    IF UBOUND(arrScalar,2) = 0 THEN        ExecuteScalarParams = arrScalar(0,0)    ELSE        ExecuteScalarParams = NulL    END IFELSE    ExecuteScalarParams = NulLEND IFrstScalar.CloseSet rstScalar = nothingSet cmd1 = nothingEND FUNCTION

我曾经传递带有问号的SQL查询作为参数的占位符,如下所示:

SELECT top 1 Username FROM Members WHERE (Created>?) AND (adminLevel=?);

然后我会设置一个参数数组并将其传递给函数:

MyArray = ARRAY("1-JAN-2012",1)

数组中的参数将按其出现的顺序替换查询字符串中的问号.

我试图在C#中模仿这个函数,但我陷入了必须传递参数的部分.到目前为止,我已经到了必须使用@Created和@adminLevel等命名占位符而不是问号的点,然后我必须设置这样的参数对象:

sqlParameter param = new sqlParameter();param.Parametername = "@adminLevel";param.Value = 1;

有没有办法传递参数而不必设置参数名称,只需使用问号和它们出现的顺序来指定哪个参数在哪里?

解决方法 编辑:正如Dana所指出的,MSDN Docs for Parameters显示您需要为sqlClIEnt使用命名参数,但可以使用oleDb / ODBC的位置参数.

您可以使用下面的代码轻松添加参数;这是我使用的骨架,但我确信有更好的方法.

你仍然需要使用命名参数,但你可以通过命名它们@a,@ b,@ c来模拟你的问号. – 位置参数很好,直到你得到多个参数,你必须不断计算问号的数量,以确定在哪里应用哪个参数值,经常导致错误.

using (var con = new sqlConnection(System.Configuration.ConfigurationManager.ConnectionStrings["ConnectionString"].ConnectionString)){    con.open();    {        using (var command = con.CreateCommand())        {            command.Connection = conn;            command.CommandText = "SELECT * FROM [dbo].[table] WHERE [c1] = @a AND [c2] = @b";            command.Parameters.AdDWithValue("@a",aVal);            command.Parameters.AdDWithValue("@b",bVal);            command.CommandType = CommandType.Text;            using (var reader = command.ExecuteReader())            {                if (reader.HasRows)                {                    while (reader.Read())                    {                        ///                    }                }                else                {                    ///                }            }        }    }}
总结

以上是内存溢出为你收集整理的c# – SQL参数和问号全部内容,希望文章能够帮你解决c# – SQL参数和问号所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: https://outofmemory.cn/langs/1244744.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-06-07
下一篇 2022-06-07

发表评论

登录后才能评论

评论列表(0条)

保存