Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/335.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# 从SQL Server检索两个值并将其存储到c中#_C#_Sql - Fatal编程技术网

C# 从SQL Server检索两个值并将其存储到c中#

C# 从SQL Server检索两个值并将其存储到c中#,c#,sql,C#,Sql,以下是我正在努力实现的目标。我想从同一个表中的同一行中获取两个值,并将它们存储到两个变量中。我在MVC中做这件事 以下是我正在做的: SqlCommand amd = new SqlCommand("SELECT [Value1] FROM [ExampleTable] where Ad_name=@adname", con); SqlCommand bmd = new SqlCommand("SELECT [Value2] FROM [ExampleTable] where Ad_name=@

以下是我正在努力实现的目标。我想从同一个表中的同一行中获取两个值,并将它们存储到两个变量中。我在MVC中做这件事

以下是我正在做的:

SqlCommand amd = new SqlCommand("SELECT [Value1] FROM [ExampleTable] where Ad_name=@adname", con);
SqlCommand bmd = new SqlCommand("SELECT [Value2] FROM [ExampleTable] where Ad_name=@adname", con);
amd.Parameters.AddWithValue("@adname", aname);
bmd.Parameters.AddWithValue("@adname", aname);
imgpath1 = amd.ExecuteScalar().ToString();
imgpath2 = bmd.ExecuteScalar().ToString();
但我想要的是:

SqlCommand amd = new SqlCommand("SELECT [Value1] AND [Value2] FROM [ExampleTable] where Ad_name=@adname", con);
amd.Parameters.AddWithValue("@adname", aname);
imgpath1 = Value1;
imgpath2 = Value2;

如何在不编写多个查询的情况下实现这一点?谢谢

您使用该方法只调用了数据库一次。
请注意,所需的单列是如何列在用逗号分隔的SELECT之后的。
这是
此方法返回一个数据读取器,可用于获取行的单个值。
我假设您的查询只返回一条记录,因此,循环并不是绝对必要的

SqlCommand amd = new SqlCommand("SELECT [Value1], [Value2] FROM [ExampleTable] where Ad_name=@adname", con);
amd.Parameters.AddWithValue("@adname", aname);
SqlDataReader reader = amd.ExecuteReader();
while(reader.Read())
{
    imgPath1 = reader[0].ToString();
    imgPath2 = reader[1].ToString();
}

请参见SqlCommand返回的方法:


使用逗号作为检索列之间的分隔符,使用GetOrdinal避免像[1]和[2]这样的常量

const string ColumnOne = "ColumnOne";
const string ColumnTwo = "ColumnTwo";
var sqlCmd = new SqlCommand("select [VALUE1] as " + ColumnOne + ", [VALUE2] as " + ColumnTwo + " from table", sqlConn);
var sqlCmdReader = sqlCmd.ExecuteReader();
if (sqlCmdReader.Read())
    {
    var resultOne= sqlCmdReader.GetString(sqlCmdReader.GetOrdinal(ColumnOne));
    var resultTwo= sqlCmdReader.GetString(sqlCmdReader.GetOrdinal(ColumnTwo ));
}

您的第二个SQL命令将不起作用,如果您想查询值,您将无法执行标量查询

尝试:

并添加参数

那你可以

var reader = command.ExecuteReader();
然后通过

reader["[Value1]"];
reader["[Value2]"];
本质上,执行标量查询意味着只返回单个值的查询

var reader = command.ExecuteReader();
reader["[Value1]"];
reader["[Value2]"];