C# 比较asp.net中表中的值
我正在编辑代码隐藏文件,在数据库中,我将这4个表链接在一起:C# 比较asp.net中表中的值,c#,asp.net,C#,Asp.net,我正在编辑代码隐藏文件,在数据库中,我将这4个表链接在一起: Table :Compannies -------------------- companyId -------------------- companyName -------------------- 以及: 以及: 以及: 现在,我想检查所有companyName,如果选择相应地=“YES”,则执行该操作 string sqlIns = "SELECT companyName FROM Companies WHERE comp
Table :Compannies
--------------------
companyId
--------------------
companyName
--------------------
以及:
以及:
以及:
现在,我想检查所有companyName,如果选择相应地=“YES”,则执行该操作
string sqlIns = "SELECT companyName FROM Companies WHERE companyId IN
(SELECT companyId FROM UserCompany WHERE userId IN
(SELECT UserId FROM Users WHERE Email IN
(SELECT Email FROM Choice WHERE Choice='YES')"
SqlConnection conn = new SqlConnection(ConfigurationSettings.AppSettings["connectionString"]);
conn.Open();
try
{
SqlCommand cmdIns = new SqlCommand(sqlIns, conn);
if (cmdIns.Parameters.compareValue("currentCompanyName", companyName))//how to compare?
{
//action here
}
else
{
//another action
}
cmdIns.ExecuteNonQuery();
cmdIns.Parameters.Clear();
cmdIns.Dispose();
cmdIns = null;
}
catch (Exception ex)
{
throw new Exception(ex.ToString(), ex);
}
finally
{
conn.Close();
}
我不知道如何比较从表中提取的值,我的代码中是否存在语法或逻辑错误?尝试使用
内部联接
而不是嵌套查询:
以下是更改的查询:
SELECT cn.companyName from companies cn
INNER JOIN UserCompany uc ON uc.companyid = cn.companyid
INNER JOIN Users u ON u.userId = uc.userId
INNER JOIN Choice c ON c.Email = u.Email And c.Choice = @Choice
WHERE cn.CompanyName = @CompanyName;
示例代码如下所示:
string commandText = @"SELECT cn.companyId, cn.companyName from companies cn
INNER JOIN UserCompany uc ON uc.companyid = cn.companyid
INNER JOIN Users u ON u.userId = uc.userId
INNER JOIN Choice c ON c.Email = u.Email And c.Choice = @Choice
WHERE cn.CompanyName = @CompanyName;";
string connectionString = ConfigurationSettings.AppSettings["connectionString"];
using (SqlConnection connection = new SqlConnection(connectionString))
{
SqlCommand command = new SqlCommand(commandText, connection);
command.Parameters.AddWithValue("@Choice", "YES");
command.Parameters.AddWithValue("@CompanyName", "currentCompanyName");
try
{
connection.Open();
datagridview.DataSource = command.ExecuteReader();
datagridview.DataBind();
}
catch (Exception ex)
{
//handle exception
}
}
但是在
SqlCommand
中没有定义参数?什么是cmdIns.Parameters.compareValue()方法?我认为它不存在。你的问题不清楚。似乎你想将结果与另一个公司名称进行比较?是的,它是正确的!我只想获取“choice”=“YES”的公司名称Hi Zeeshan,“cmdIns.Parameters.compareValue()”可能不存在,我只是不知道如何设置条件。如何使用该内部关节来获取choice=YES的所有公司ID?您可以在查询中同时使用选择cn.companyId、cn.companyName
或其中任何一个。在上面的代码中,我的意思是,我应该将cn.CompanyName=@CompanyName的位置改为c.Choice='YES'吗?它没有正确返回。不,您不必在查询中进行更改。对于前面带有@
符号的变量,您将在参数中提供值。请参见command.Parameters.AddWithValue
这里您给@Parameters赋值。对不起,我弄糊涂了。所以在SqlCommand命令之后=新的SqlCommand(commandText,connection);和command.Parameters.AddWithValue(“@Choice”,“YES”);我能得到什么。看起来它将为表选项添加值YES。但这里我需要的是获取companyID where Choice=“YES”,然后在我的另一个问题中,我将从数据网格中删除带有该companyID的行。
string sqlIns = "SELECT companyName FROM Companies WHERE companyId IN
(SELECT companyId FROM UserCompany WHERE userId IN
(SELECT UserId FROM Users WHERE Email IN
(SELECT Email FROM Choice WHERE Choice='YES')"
SqlConnection conn = new SqlConnection(ConfigurationSettings.AppSettings["connectionString"]);
conn.Open();
try
{
SqlCommand cmdIns = new SqlCommand(sqlIns, conn);
if (cmdIns.Parameters.compareValue("currentCompanyName", companyName))//how to compare?
{
//action here
}
else
{
//another action
}
cmdIns.ExecuteNonQuery();
cmdIns.Parameters.Clear();
cmdIns.Dispose();
cmdIns = null;
}
catch (Exception ex)
{
throw new Exception(ex.ToString(), ex);
}
finally
{
conn.Close();
}
SELECT cn.companyName from companies cn
INNER JOIN UserCompany uc ON uc.companyid = cn.companyid
INNER JOIN Users u ON u.userId = uc.userId
INNER JOIN Choice c ON c.Email = u.Email And c.Choice = @Choice
WHERE cn.CompanyName = @CompanyName;
string commandText = @"SELECT cn.companyId, cn.companyName from companies cn
INNER JOIN UserCompany uc ON uc.companyid = cn.companyid
INNER JOIN Users u ON u.userId = uc.userId
INNER JOIN Choice c ON c.Email = u.Email And c.Choice = @Choice
WHERE cn.CompanyName = @CompanyName;";
string connectionString = ConfigurationSettings.AppSettings["connectionString"];
using (SqlConnection connection = new SqlConnection(connectionString))
{
SqlCommand command = new SqlCommand(commandText, connection);
command.Parameters.AddWithValue("@Choice", "YES");
command.Parameters.AddWithValue("@CompanyName", "currentCompanyName");
try
{
connection.Open();
datagridview.DataSource = command.ExecuteReader();
datagridview.DataBind();
}
catch (Exception ex)
{
//handle exception
}
}