C# 将SQL数据返回到C对象

C# 将SQL数据返回到C对象,c#,sql,asp.net,sql-server,C#,Sql,Asp.net,Sql Server,我正在开发一个网站使用ASP.NETC。我有一个SQLServer数据库。我希望能够从表中检索数据,其中包含我的数据 例如。我希望能够从Details中选择streamname,其中streamid=@streamid,并将从查询中获得的值返回给C对象 以下是我尝试过的C: private void ReadSteamDetails() { using (SqlConnection connection = new SqlConnection(connectionString))

我正在开发一个网站使用ASP.NETC。我有一个SQLServer数据库。我希望能够从表中检索数据,其中包含我的数据

例如。我希望能够从Details中选择streamname,其中streamid=@streamid,并将从查询中获得的值返回给C对象

以下是我尝试过的C:

private void ReadSteamDetails()
{
    using (SqlConnection connection = new SqlConnection(connectionString))
    {
        using (SqlCommand command = new SqlCommand())
        {
            command.Connection = connection;
            command.CommandType = CommandType.Text;
            command.CommandText = "SELECT SteamID FROM Details WHERE SteamID = @SteamID";
            command.Parameters.Add("@SteamID", SqlDbType.NVarChar);
            command.Parameters["@SteamID"].Value = SteamID;

            connection.Open();
            DisplaySQLID = command.ExecuteNonQuery().ToString();
            connection.Close();
        }
    }
}
运行此代码只会返回-1,对于该精确查询,使用ExecuteScalar而不是ExecuteOnQuery。

对于该精确查询,使用ExecuteScalar而不是ExecuteOnQuery。

您正在使用的,返回一个int值,指示SQL语句影响的行数。它应该与insert、update或delete一起使用,但不能与select语句一起使用

在执行select语句时,如果希望使用迭代查询结果,或者使用填充数据集或数据表,或者如果查询返回0或1结果,则应使用,这里就是这种情况。 此外,您的代码可以而且应该更短—例如,您可以直接在SqlCommand构造函数中指定select语句和连接对象

我会这样写:

using (SqlConnection connection = new SqlConnection(connectionString))
{
    using (SqlCommand command = new SqlCommand("SELECT SteamID FROM Details WHERE SteamID = @SteamID", connection))
    {
        command.Parameters.Add("@SteamID", SqlDbType.NVarChar).Value = SteamID;
        connection.Open();
        DisplaySQLID = command.ExecuteSalar()?.ToString() ?? "";
    }
}
请注意,您的查询可能不会返回任何结果,因此ExecuteScalar将返回null,因此使用null条件运算符和null合并运算符。

您正在使用的,它返回一个int值,指示受SQL语句影响的行数。它应该与insert、update或delete一起使用,但不能与select语句一起使用

在执行select语句时,如果希望使用迭代查询结果,或者使用填充数据集或数据表,或者如果查询返回0或1结果,则应使用,这里就是这种情况。 此外,您的代码可以而且应该更短—例如,您可以直接在SqlCommand构造函数中指定select语句和连接对象

我会这样写:

using (SqlConnection connection = new SqlConnection(connectionString))
{
    using (SqlCommand command = new SqlCommand("SELECT SteamID FROM Details WHERE SteamID = @SteamID", connection))
    {
        command.Parameters.Add("@SteamID", SqlDbType.NVarChar).Value = SteamID;
        connection.Open();
        DisplaySQLID = command.ExecuteSalar()?.ToString() ?? "";
    }
}

请注意,您的查询可能不会返回任何结果,因此ExecuteScalar将返回null,因此使用if null条件运算符和null合并运算符。

您可以为此使用实体框架

通过实体框架和链接的结合,你可以得到你想要的结果集

实体=新实体连接字符串


var result=entities.Details.where=>a.streamid=@streamid

您可以为此使用实体框架

通过实体框架和链接的结合,你可以得到你想要的结果集

实体=新实体连接字符串


var result=entities.Details.where=>a.streamid=@streamid

显示您正在尝试的c代码不要使用ExecuteOnQuery,使用ExecuteCalar.use DataAdapter代替SqlCommand@Amit你说的问题声明是什么意思?错误消息?使用任何ORM而不是sql命令。显示您正在尝试的c代码不使用ExecuteOnQuery,使用ExecuteScalar。使用DataAdapter而不是sql命令SqlCommand@Amit你说的问题声明是什么意思?错误消息?使用任何ORM而不是sql命令。我可以发誓我尝试过这个。。。这么简单。。。谢谢你让我觉得自己很愚蠢:P但是说真的,谢谢你!等着回答吧timerI可以发誓我试过这个。。。这么简单。。。谢谢你让我觉得自己很愚蠢:P但是说真的,谢谢你!就等着回答计时器