我正在使用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
答案 0 :(得分:2)
对于该确切查询,请使用[
{
rabbitmq_mqtt, [
{retained_message_store, rabbit_mqtt_retained_msg_store_noop}
]
}
].
而不是ExecuteScalar
。
答案 1 :(得分:2)
您正在使用ExecuteNonQuery()
,它返回一个int值,表示受SQL语句影响的行数。它应与insert
,update
或delete
一起使用,但不能与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)