Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/319.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 选择一个条目sql_C#_Sql - Fatal编程技术网

C# 选择一个条目sql

C# 选择一个条目sql,c#,sql,C#,Sql,我试图从数据库中只选择一个条目。它目前正在返回一个xml文档对象,我不知道为什么。至少,这是我的javascript告诉我的。我希望它返回一个字符串,该字符串是gameRequestUser的名称,其中userName=“this user” 您应该做的一件事是进入SQL Server Management studio,并尝试直接在那里运行查询: SELECT gameRequestUser FROM UserData Where userName='this user' 话虽如此,另一件需

我试图从数据库中只选择一个条目。它目前正在返回一个xml文档对象,我不知道为什么。至少,这是我的javascript告诉我的。我希望它返回一个字符串,该字符串是gameRequestUser的名称,其中userName=“this user”


您应该做的一件事是进入SQL Server Management studio,并尝试直接在那里运行查询:

SELECT gameRequestUser FROM UserData Where userName='this user'
话虽如此,另一件需要记住的事情是,您可以通过执行以下操作来告诉SQL最多返回一行:

SELECT top 1 gameRequestUser FROM UserData Where userName='this user'

我希望这有帮助

您应该使用
ExecuteScalar
而不是
ExecuteReader

user = (string)getRequest.ExecuteScalar();
甚至在您应该使用SQLServerManagementStudio检查查询结果之前,在那里运行查询并检查结果是否正常

  • 使用“选择顶部1…”。。。质疑

    从UserData中选择前1名gameRequestUser,其中

  • 使用SqlCommand的ExecuteScalar()方法而不是ExecuteReader(),因为您只需要返回一个字段值


    SqlCommand getRequest=新的SqlCommand(..)

    字符串user=Convert.ToString(cmd.ExecuteScalar())


  • 始终使用参数,可以避免太多问题(字符串引用、sql注入等)


    你能发布你认为你得到的“XML文档”的内容吗?你不应该公开显示你的完整连接字符串,包括IP、用户名和密码。谢谢,忘记了。我的$.get语句中有一个警报,它只是说XML文档对象您应该使用一个参数来设置用户名,而不是将字符串插入query.SqlCommand getRequest=new SqlCommand(“从UserData中选择前1名gameRequestUser,其中userName=”+会话[“userName”].ToString()+”,conn);SqlDataReader=getRequest.ExecuteReader();reader.Read();user=reader.GetValue(0.ToString().Trim()@史蒂夫:为什么你认为“应该”在这里是个错误的词
    ExecuteScalar
    正是针对这类查询的,因此它比使用
    SqlDataReader
    @MarcinJuraszek好得多
    应该
    是必须的,ExecuteScalar也可以工作,当然,在这种情况下,ExecuteScalar更好,但我不认为这会改变结果。@Steve应该!=必须:)但这并不重要——我很高兴它奏效了,问题得到了回答。
    
    user = (string)getRequest.ExecuteScalar();
    
    using(SqlConnection conn = new SqlConnection("yourconnectionstring"))
    {
        SqlCommand getRequest = new SqlCommand("SELECT gameRequestUser FROM UserData Where " + 
                                               "userName=@user", conn); 
        conn.Open(); 
        getRequest.Parameters.AddWithValue("@user",Session["userName"].ToString()) 
        SqlDataReader reader = getRequest.ExecuteReader(); 
        while (reader.Read()) { 
            user = reader.GetValue(0).ToString().Trim(); 
        } 
    }