C# 选择一个条目sql
我试图从数据库中只选择一个条目。它目前正在返回一个xml文档对象,我不知道为什么。至少,这是我的javascript告诉我的。我希望它返回一个字符串,该字符串是gameRequestUser的名称,其中userName=“this user”C# 选择一个条目sql,c#,sql,C#,Sql,我试图从数据库中只选择一个条目。它目前正在返回一个xml文档对象,我不知道为什么。至少,这是我的javascript告诉我的。我希望它返回一个字符串,该字符串是gameRequestUser的名称,其中userName=“this user” 您应该做的一件事是进入SQL Server Management studio,并尝试直接在那里运行查询: SELECT gameRequestUser FROM UserData Where 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检查查询结果之前,在那里运行查询并检查结果是否正常
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();
}
}