gpt4 book ai didi

c# - SqlDataReader 在项目之间表现不同

转载 作者:行者123 更新时间:2023-11-30 22:14:37 25 4
gpt4 key购买 nike

我的项目是一个 Windows 服务,我在从我的数据库返回值时遇到了问题,所以我将这段代码分离到一个控制台应用程序中以便于调试,但在我的服务中不起作用的代码在控制台应用程序。

所以在我的服务中我有这个类

public class DBHandler
{
public string ReadSQL(string sql)
{
try
{
using (SqlConnection DBConnection = new SqlConnection(@"Data Source=***;Initial Catalog=***;Integrated Security=True;User ID=***;Password=***"))
{
DBConnection.Open();
SqlCommand DBCommand = new SqlCommand(sql, DBConnection);
SqlDataReader sqlResults = DBCommand.ExecuteReader();
if (sqlResults.HasRows)
{
while (sqlResults.Read())
{
return sqlResults.GetString(0);
}
}
return sqlResults.HasRows.ToString();
}
}
catch (Exception e)
{
return e.ToString();
}
}

我用的是什么

DBHandler dbHandler = new DBHandler();
WriteToClientStream(clientStream, dbHandler.ReadSQL(string.Format("SELECT PlayerName FROM Player WHERE PlayerName = '{0}'", UserName)) + "\r\n");

sqlResults.HasRows 返回 false,但在 SQL Server 和测试控制台应用程序中相同的查询返回结果

public static void Main(string[] args)
{
Console.WriteLine(ReadSQL(string.Format("SELECT PlayerName FROM Player WHERE PlayerName = '{0}'", "Hex")));
Console.ReadLine();
}

public static string ReadSQL(string sql)
{
try
{
using (SqlConnection DBConnection = new SqlConnection(@"Data Source=***;Initial Xatalog=***;Integrated Security=True;User ID=***;Password=***"))
{
DBConnection.Open();
SqlCommand DBCommand = new SqlCommand(sql, DBConnection);
SqlDataReader sqlResults = DBCommand.ExecuteReader();
if (sqlResults.HasRows)
{
while (sqlResults.Read())
{
return sqlResults.GetString(0);
}
}
return sqlResults.HasRows.ToString();
}
}
catch (Exception e)
{
return e.ToString();
}
}

最佳答案

也许这个问题比你想象的要简单。

如果您像在控制台应用程序中那样在服务中尝试相同的参数,怎么样?

因此更改您现有的代码:

   WriteToClientStream(clientStream, dbHandler.ReadSQL(string.Format(
"SELECT PlayerName FROM Player WHERE PlayerName = '{0}'", UserName)) + "\r\n");

收件人:

WriteToClientStream(clientStream, dbHandler.ReadSQL(string.Format(
"SELECT PlayerName FROM Player WHERE PlayerName = '{0}'", "Hex")));

如果可行,请尝试。

如果是,如果您正确传递了 UserName,则可能需要检查您的代码。

关于c# - SqlDataReader 在项目之间表现不同,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18424050/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com