C# SQL查询未从C/ASP.net获取所有数据

C# SQL查询未从C/ASP.net获取所有数据,c#,asp.net,sql,sql-server,C#,Asp.net,Sql,Sql Server,我的SQL查询没有从多个列获取信息。 对于测试,我尝试使用2,但我也尝试获取所有数据,两次它都只给我找到的第一列 string connectionString = SqlDataSource1.ConnectionString; SqlConnection connection = new SqlConnection(connectionString); string insert = "SELECT [ProductName], [productSpace] FROM [Products]

我的SQL查询没有从多个列获取信息。 对于测试,我尝试使用2,但我也尝试获取所有数据,两次它都只给我找到的第一列

string connectionString = SqlDataSource1.ConnectionString;
SqlConnection connection = new SqlConnection(connectionString);
string insert = "SELECT [ProductName], [productSpace]  FROM [Products] WHERE [ProductId] = '" + NoDupes[z] + "'";

SqlCommand cmd1 = new SqlCommand(insert, connection); 
cmd1.Connection.Open();
Response.Write(cmd1.ExecuteScalar().ToString());

cmd1.Connection.Close();

执行查询,并返回查询中第一行的第一列 查询返回的结果集。添加了其他列或行 忽略

如果要从查询中返回多个值,则需要使用

不清楚你想写什么,但作为一个例子

using(SqlDataReader reader = cmd1.ExecuteReader())
{
    while (reader.Read())
    {
        Response.Write(reader[0].ToString()); //This writes first column values for your all rows.
    }
}
逐行读取查询结果

您应该使用来处理SqlConnection和SqlCommand,就像我处理SqlDataReader一样。喜欢

更重要的是,您应该始终使用。这种类型的字符串连接对攻击是开放的

比如,

string insert = @"SELECT ProductName, productSpace FROM Products
                  WHERE ProductId = @id";
SqlCommand cmd1 = new SqlCommand(insert, connection);
cmd1.Parameters.AddWithValue("@id", NoDupes[z]);
最后,您不需要对所有列或表名使用方括号[]。如果您的数据库对象名为或包含空格,请使用它。当然,不建议两者都使用。

来自

执行查询,并返回查询中第一行的第一列 查询返回的结果集。添加了其他列或行 忽略

如果要从查询中返回多个值,则需要使用

不清楚你想写什么,但作为一个例子

using(SqlDataReader reader = cmd1.ExecuteReader())
{
    while (reader.Read())
    {
        Response.Write(reader[0].ToString()); //This writes first column values for your all rows.
    }
}
逐行读取查询结果

您应该使用来处理SqlConnection和SqlCommand,就像我处理SqlDataReader一样。喜欢

更重要的是,您应该始终使用。这种类型的字符串连接对攻击是开放的

比如,

string insert = @"SELECT ProductName, productSpace FROM Products
                  WHERE ProductId = @id";
SqlCommand cmd1 = new SqlCommand(insert, connection);
cmd1.Parameters.AddWithValue("@id", NoDupes[z]);

最后,您不需要对所有列或表名使用方括号[]。如果数据库对象名为或包含空格,则使用它。当然,不建议两者都使用。

ExecuteScalar执行查询,并返回查询返回的结果集中第一行的第一列。其他列或行将被忽略。

ExecuteScalar执行查询,并返回查询返回的结果集中第一行的第一列。其他列或行被忽略。

您需要在datareader中使用和迭代

using (var dr= cmd.ExecuteReader())
    {
        while(dr.Read())
        {
            //Logic
        }
    }
您需要使用和迭代datareader

using (var dr= cmd.ExecuteReader())
    {
        while(dr.Read())
        {
            //Logic
        }
    }
如果你使用

ExecuteScalar():
将处理包含聚合函数的非操作查询。 返回查询结果的第一行和第一列值。 返回类型为对象。 返回值是必需的,应指定给所需类型的变量

ExecuteReader():
将使用操作和非操作查询选择 返回查询所选行的集合。 返回类型为DataReader。 返回值是必需的,应该分配给另一个对象DataReader

SqlDataReader rdr= cmd1.ExecuteReader();
while (rdr.read())
{  
 Response.Write(rdr.GetValue().ToString().Trim());

}
如果你使用

ExecuteScalar():
将处理包含聚合函数的非操作查询。 返回查询结果的第一行和第一列值。 返回类型为对象。 返回值是必需的,应指定给所需类型的变量

ExecuteReader():
将使用操作和非操作查询选择 返回查询所选行的集合。 返回类型为DataReader。 返回值是必需的,应该分配给另一个对象DataReader

SqlDataReader rdr= cmd1.ExecuteReader();
while (rdr.read())
{  
 Response.Write(rdr.GetValue().ToString().Trim());

}
试试这个

SqlDataReader reader = cmd1.ExecuteReader();
while (reader.Read())
{
     Response.Write((String.Format("{0}", reader[0]));
}
试试这个

SqlDataReader reader = cmd1.ExecuteReader();
while (reader.Read())
{
     Response.Write((String.Format("{0}", reader[0]));
}

跟随索纳·格努尔邮报,跟随索纳·格努尔邮报。