我有一个简单的 Windows 服务,在这个服务中,我试图在一个计时器 block 中连接到一个 sql server(我试图在 onStart 方法中只这样做一次 -> 相同的结果)。
目前我正在尝试使用以下代码执行选择:
using (SqlConnection sc = new SqlConnection())
{
var sqlConnection = new SqlConnection(_sqlConnectionString);
string commanda = "SELECT Moneda, SimbolMoneda FROM NomMoneda WHERE Moneda != '' AND SimbolMoneda != ''";
SqlCommand command = new SqlCommand(commanda, sqlConnection);
command.CommandType = System.Data.CommandType.Text;
IDataReader reader;
sc.ConnectionString = _sqlConnectionString;
sc.Open();
reader = command.ExecuteReader(CommandBehavior.CloseConnection);
}
我将服务附加到调试,我注意到它没有通过这行代码 sc.Open()
。
该服务与sql server不在同一台机器上,但我尝试将其安装在不同用户下,LocalSystem,NetworkService,与sql server同一域内的用户,但没有结果。
如有任何帮助,我们将不胜感激。
最佳答案
看起来您的代码中可能存在逻辑错误。您正在为 SqlConnection
使用 sc
,但是当您创建命令对象时,您使用的是 sqlConnection
,它实际上从未打开过。
这一行是问题所在:
SqlCommand command = new SqlCommand(commanda, sqlConnection);
请尝试以下操作:
SqlCommand command = new SqlCommand(commanda, sc);
在用户评论后 10:22 编辑
为了确认您已按照指示进行了更改,我重新调整了您的代码。您可以尝试以下操作吗:
using (SqlConnection sc = new SqlConnection())
{
sc.ConnectionString = _sqlConnectionString;
sc.Open();
string commanda = "SELECT Moneda, SimbolMoneda FROM NomMoneda WHERE Moneda != '' AND SimbolMoneda != ''";
SqlCommand command = new SqlCommand(commanda, sc);
command.CommandType = System.Data.CommandType.Text;
IDataReader reader;
reader = command.ExecuteReader();
}
关于c# - windows服务打不开sql连接,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17942443/