选择一个条目sql

时间:2012-05-26 21:38:46

标签: c# sql

我正在尝试从数据库中只选择一个条目。它目前正在返回一个xml文档对象,我无法弄清楚原因。至少,这就是我的javascript告诉我的内容。我希望它返回一个字符串,该字符串是gameRequestUser的名称,其中userName =“this user”

          try {
            SqlConnection conn = new SqlConnection(@"Data asdfasdf;database=asdfsdfdf;User id=asdfasdfasdfPassword=asdfasdf;");

            SqlCommand getRequest = new SqlCommand("SELECT gameRequestUser FROM UserData Where userName='" + Session["userName"].ToString() + "'", conn);

            conn.Open();

            SqlDataReader reader = getRequest.ExecuteReader();

            while (reader.Read()) {
                user = reader.GetValue(0).ToString().Trim();
            }

            conn.Close();

            return user;
        } catch (Exception e) { return e.Message.ToString(); }

4 个答案:

答案 0 :(得分:3)

您应该使用ExecuteScalar代替ExecuteReader

user = (string)getRequest.ExecuteScalar();

甚至在您使用SQL Server Management Studio检查查询结果之前 - 在那里运行查询并检查结果是否正常。

答案 1 :(得分:2)

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

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(); 
    } 
}

答案 2 :(得分:1)

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

SELECT gameRequestUser FROM UserData Where userName='this user'

话虽如此,要记住的另一件事是你可以通过做类似的事情告诉SQL最多返回给你一行:

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

我希望这有帮助!

答案 3 :(得分:1)

  1. 使用SELECT TOP 1 ...查询

    SELECT TOP 1 gameRequestUser FROM UserData WHERE ...

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

    SqlCommand getRequest = new SqlCommand(....);
    ...
    string user = Convert.ToString(cmd.ExecuteScalar());