SqlCommand参数不起作用

Jos*_*sen -3 c#

任务:

用必需的数据替换sql语句中的某些变量.

问题:

变量没有被替换

C#代码:

SqlCommand cmd = new SqlCommand(@"
     select 
                 1 [GL], 
                 (
                     select 
                             isnull(COUNT(*), 0)
                         from 
                             @DataDB..APSetup
                 ) [AP],
                 (
                     select 
                             isnull(COUNT(*), 0)
                         from
                             @DataDB..ARSetup
                 ) [AR],
                 (
                     select 
                             isnull(COUNT(*), 0)
                         from 
                             @DataDB..CASetup
                 ) [CA],
                 case 
                     when (
                          select 
                                  isnull(COUNT(*), 0) 
                              from
                                  @DataDB..SalesTax
                          ) > 0 
                         then 1 else 0
                 end [TX], 
                 (
                     select 
                             isnull(COUNT(*), 0)
                         from
                             @DataDB..INSetup
                 ) [IN], 
                 (
                     select
                             isnull(COUNT(*), 0)
                         from 
                             @DataDB..POSetup
                 ) [PO],
                 (
                     select
                             isnull(COUNT(*), 0)
                         from 
                             @DataDB..SOSetup
                 ) [SO], 
                 (
                     select 
                             isnull(COUNT(*), 0)
                         from
                             @DataDB..RQSetup
                 ) [RQ],
                 (
                    select 
                             COUNT(*)
                        from 
                             @DataDB..pcsetup 
                        Where 
                             Setupid = 'PC' AND PERNBR <> ''
                 ) [PJ] 
    from 
          @DataDB..glsetup");

    cmd.Parameters.AddWithValue("@DataDB", CurrentBranch.AppDB);
    AppConnection.InitialCatalog = CurrentBranch.AppDB;
    Modules.AddRange(SqlQueries.DataQuery2(cmd, AppConnection.ConnectionString)); 
Run Code Online (Sandbox Code Playgroud)

Sql查询:

select 1 [GL], (select isnull(COUNT(*),0) from @DataDB..APSetup) [AP], (select isnull(COUNT(*),0) from @DataDB..ARSetup) [AR], (select isnull(COUNT(*),0) from @DataDB..CASetup) [CA], case when (select isnull(COUNT(*),0) from @DataDB..SalesTax) > 0 then 1 else 0 end [TX], (select isnull(COUNT(*),0) from @DataDB..INSetup) [IN], (select isnull(COUNT(*),0) from @DataDB..POSetup) [PO], (select isnull(COUNT(*),0) from @DataDB..SOSetup) [SO], (select isnull(COUNT(*),0) from @DataDB..RQSetup) [RQ],  (select COUNT(*) from @DataDB..pcsetup Where Setupid = 'PC' AND PERNBR <> '') [PJ] from @DataDB..glsetup
Run Code Online (Sandbox Code Playgroud)

题:

为什么变量替换不起作用?

附加信息:

问题不是查询,当我手动将@DataDB替换为其预期值时,它可以正常工作.

问题是C#SqlCommand.Parameters.AddWithValue();

aqu*_*nas 6

原因是您无法参数化您要从中选择的数据库/表.你不能这样做:select * from @SomeTable你已经在C#中这样做,只需这样做:

(为清楚起见,剪断):

string sql = string.Format("select isnull(COUNT(*),0) from {0}..APSetup)...", CurrentBranch.AppDB);
Run Code Online (Sandbox Code Playgroud)