将SQL数据返回给C#对象

时间:2017-10-23 11:58:45

标签: c# sql asp.net sql-server

我正在使用ASP.NET C#开发一个网站。我有一个SQL-Server数据库。我希望能够从表中检索数据,并且数据已经存在。

例如,Here is my Details Table。我希望能够执行SELECT SteamName FROM Details WHERE SteamID = @SteamID之类的操作,并将我从查询中获得的值返回给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

3 个答案:

答案 0 :(得分:2)

对于该确切查询,请使用[ { rabbitmq_mqtt, [ {retained_message_store, rabbit_mqtt_retained_msg_store_noop} ] } ]. 而不是ExecuteScalar

答案 1 :(得分:2)

您正在使用ExecuteNonQuery(),它返回一个int值,表示受SQL语句影响的行数。它应与insertupdatedelete一起使用,但不能与select语句一起使用。

执行select语句时,如果要使用ExecuteReader()迭代查询结果,则应使用DataReader,或使用DataAdapter填充ExecuteScalar()如果您的查询应返回0或1个结果,则{1}}或DataSet?.使用??。 此外,您的代码可以而且应该更短 - 例如,您可以直接在DataTable构造函数中指定select语句和连接对象。

以下是我的写作方式:

SqlCommand

请注意,您的查询可能不会返回任何结果,因此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条件运算符(pandas)和null合并运算符({{ 3}})。

答案 2 :(得分:-1)

您可以为此目的使用实体框架。 。 。

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

实体实体=新实体(连接字符串);

var result = entities.Details.Where(a => a.SteamID = @SteamID)