C# 将SQL数据返回到C对象
我正在开发一个网站使用ASP.NETC。我有一个SQLServer数据库。我希望能够从表中检索数据,其中包含我的数据 例如。我希望能够从Details中选择streamname,其中streamid=@streamid,并将从查询中获得的值返回给C对象 以下是我尝试过的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))
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但是说真的,谢谢你!就等着回答计时器