Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/278.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 使用查询时不起作用但不会引发异常c的变量#_C#_Sql_Asp.net_.net_Sql Server - Fatal编程技术网

C# 使用查询时不起作用但不会引发异常c的变量#

C# 使用查询时不起作用但不会引发异常c的变量#,c#,sql,asp.net,.net,sql-server,C#,Sql,Asp.net,.net,Sql Server,当我尝试使用query6-->运行它时,[religion]=@religionVar会将我返回到数据表中,仅返回表的标题,但当我对query5执行此操作时,它会将我返回到表中 string query5 = "SELECT * FROM[PhoneTableSql] WHERE[district] = '5' AND([religion] = @religionVar OR[religion] = '4')"; string query6 = "SELECT * FROM[PhoneTable

当我尝试使用query6-->运行它时,[religion]=@religionVar会将我返回到数据表中,仅返回表的标题,但当我对query5执行此操作时,它会将我返回到表中

string query5 = "SELECT * FROM[PhoneTableSql] WHERE[district] = '5' AND([religion] = @religionVar OR[religion] = '4')";
string query6 = "SELECT * FROM[PhoneTableSql] WHERE[district] = '6' AND([religion] = @religionVar OR[religion] = '4')";
如果我像这里那样做,query6会很好地返回表格

string query5 = "SELECT * FROM[PhoneTableSql] WHERE[district] = '5' AND([religion] = @religionVar OR[religion] = '4')";
string query6 = "SELECT * FROM[PhoneTableSql] WHERE[district] = '6' AND([religion] = '1' OR[religion] = '4')";
我试着运行它的mssql和它的工作很好,但我不能解释为什么它首先工作,而在另一个不工作

string query5 = "SELECT * FROM[PhoneTableSql] WHERE[district] = '5' AND([religion] = @religionVar OR[religion] = '4')";
string query6 = "SELECT * FROM[PhoneTableSql] WHERE[district] = '6' AND([religion] = '1' OR[religion] = '4')";

using (SqlConnection con = new SqlConnection(@"Data Source=CATISERVER1\SQLEXPRESS;Initial Catalog=dsa;Persist Security Info=True;User ID=mcsager;Password=*******"))
{
    try
    {                    
        SqlCommand cmd5 = new SqlCommand(query5, con);
        cmd5.Parameters.AddWithValue("@religionVar", 1);
        SqlCommand cmd6 = new SqlCommand(query6, con);
        cmd6.Parameters.AddWithValue("@religionVar", 1);
        SqlDataAdapter adpter5 = new SqlDataAdapter(cmd5);
        adpter5.Fill(MyAppManager.ChangeFactorWeightsInstance.DtDistrict_5);
        SqlDataAdapter adpter6 = new SqlDataAdapter(cmd6);
        adpter6.Fill(MyAppManager.ChangeFactorWeightsInstance.DtDistrict_6);
    }
    catch{}
}

在一个连接上使用同一变量两次。在sql中为每个查询指定它自己的变量。我用您的代码将@religionvar替换为@religionvar1和@religionvar2

string query5 = "SELECT * FROM[PhoneTableSql] WHERE[district] = '5' AND([religion] = @religionVar1 OR[religion] = '4')";
string query6 = "SELECT * FROM[PhoneTableSql] WHERE[district] = '6' AND([religion] = @religionVar2 OR[religion] = '4')";

    using (SqlConnection con = new SqlConnection(@"Data Source=CATISERVER1\SQLEXPRESS;Initial Catalog=dsa;Persist Security Info=True;User ID=mcsager;Password=*******"))
    {
        try
        {                    
            SqlCommand cmd5 = new SqlCommand(query5, con);
            cmd5.Parameters.AddWithValue("@religionVar1", 1);
            SqlCommand cmd6 = new SqlCommand(query6, con);
            cmd6.Parameters.AddWithValue("@religionVar2", 1);

            SqlDataAdapter adpter5 = new SqlDataAdapter(cmd5);
            adpter5.Fill(MyAppManager.ChangeFactorWeightsInstance.DtDistrict_5);
            SqlDataAdapter adpter6 = new SqlDataAdapter(cmd6);
            adpter6.Fill(MyAppManager.ChangeFactorWeightsInstance.DtDistrict_6);
        }
        catch{}
    }

可能是因为您正在传递一个
INT
值,但该列是
VARCHAR
(如查询中的单引号所示)。您是否注意到
[宗教]之间没有空格
MyAppManager.ChangeFactorWeightInstance.DtDistrict\u 6
此行对数据表有什么作用?如果在MSSQL中运行如预期的那样工作,那么您必须对返回结果做一些不同的操作。如果将
query5
传递到
adapter6
,会发生什么情况?它们似乎具有相同的结构。您可能想看看这篇文章。“但不会抛出异常”您在这里吞下了它:
catch{}
。大多数时候都是空的捕捉块。这相当于在发动机警示灯上贴上黑色胶带。我相信这不会引起问题,特别是原始问题中描述的问题。如果您能准确指出您所更改的内容,那就太好了。这就像一场发现差异的游戏