Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/320.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# 对Windows服务进行SQL调用_C#_Sql_Windows Services - Fatal编程技术网

C# 对Windows服务进行SQL调用

C# 对Windows服务进行SQL调用,c#,sql,windows-services,C#,Sql,Windows Services,我制作的应用程序如下:我有一个在本地服务器上运行的Web服务,该Web服务返回json如下: [{"Id":1,"Titulo":"Live to win","Link":"https://www.youtube.com/embed/DPHlGVe8wxI","BandaId":1,"BandaNome":"Paul Stanley","GeneroId":1,"GeneroNome":"Rock","DtCriacao":"2017-03-23T16:42:54","CriadorId":1,

我制作的应用程序如下:我有一个在本地服务器上运行的Web服务,该Web服务返回json如下:

[{"Id":1,"Titulo":"Live to win","Link":"https://www.youtube.com/embed/DPHlGVe8wxI","BandaId":1,"BandaNome":"Paul Stanley","GeneroId":1,"GeneroNome":"Rock","DtCriacao":"2017-03-23T16:42:54","CriadorId":1,"CriadorNome":"Márcio Eric","Ativo":false},{"Id":2,"Titulo":"Welcome to the jungle","Link":null,"BandaId":2,"BandaNome":"Guns n´ roses","GeneroId":1,"GeneroNome":"Rock","DtCriacao":"2017-03-23T16:42:54","CriadorId":2,"CriadorNome":"Usuário Teste","Ativo":true},{"Id":3,"Titulo":"Something just like this","Link":null,"BandaId":3,"BandaNome":"The Chainsmokers","GeneroId":3,"GeneroNome":"Indie","DtCriacao":"2017-03-23T16:42:54","CriadorId":1,"CriadorNome":"Márcio Eric","Ativo":true},{"Id":4,"Titulo":"Beliver","Link":null,"BandaId":4,"BandaNome":"Imagine Dragons","GeneroId":3,"GeneroNome":"Indie","DtCriacao":"2017-03-23T16:42:54","CriadorId":1,"CriadorNome":"Márcio Eric","Ativo":true},{"Id":5,"Titulo":"Radioactive","Link":null,"BandaId":4,"BandaNome":"Imagine Dragons","GeneroId":3,"GeneroNome":"Indie","DtCriacao":"2017-03-23T16:42:54","CriadorId":1,"CriadorNome":"Márcio Eric","Ativo":true},{"Id":6,"Titulo":"Friends - Original Mix","Link":null,"BandaId":5,"BandaNome":"Steener","GeneroId":2,"GeneroNome":"EDM","DtCriacao":"2017-03-23T16:42:54","CriadorId":2,"CriadorNome":"Usuário Teste","Ativo":true},{"Id":7,"Titulo":"Amanheceu","Link":null,"BandaId":6,"BandaNome":"Scalene","GeneroId":3,"GeneroNome":"Indie","DtCriacao":"2017-03-23T16:42:54","CriadorId":2,"CriadorNome":"Usuário Teste","Ativo":true},{"Id":8,"Titulo":"Sonhador II","Link":null,"BandaId":6,"BandaNome":"Scalene","GeneroId":3,"GeneroNome":"Indie","DtCriacao":"2017-03-23T16:42:54","CriadorId":2,"CriadorNome":"Usuário Teste","Ativo":true},{"Id":9,"Titulo":"Amianto","Link":null,"BandaId":7,"BandaNome":"Supercombo","GeneroId":3,"GeneroNome":"Indie","DtCriacao":"2017-03-23T16:42:54","CriadorId":1,"CriadorNome":"Márcio Eric","Ativo":true},{"Id":10,"Titulo":"Monstros","Link":null,"BandaId":7,"BandaNome":"Supercombo","GeneroId":3,"GeneroNome":"Indie","DtCriacao":"2017-03-23T16:42:54","CriadorId":1,"CriadorNome":"Márcio Eric","Ativo":true},{"Id":11,"Titulo":"Piloto Automático","Link":null,"BandaId":7,"BandaNome":"Supercombo","GeneroId":3,"GeneroNome":"Indie","DtCriacao":"2017-03-23T16:42:54","CriadorId":2,"CriadorNome":"Usuário Teste","Ativo":true},{"Id":12,"Titulo":"Eutanásia","Link":null,"BandaId":7,"BandaNome":"Supercombo","GeneroId":3,"GeneroNome":"Indie","DtCriacao":"2017-03-23T16:42:54","CriadorId":1,"CriadorNome":"Márcio Eric","Ativo":true},{"Id":13,"Titulo":"Shots - Broiler Remix","Link":null,"BandaId":4,"BandaNome":"Imagine Dragons","GeneroId":3,"GeneroNome":"Indie","DtCriacao":"2017-03-24T16:55:46","CriadorId":1,"CriadorNome":"Márcio Eric","Ativo":true}]
但现在我需要创建一个与此Web服务通信的Windows服务,以及它在数据库中接收到的内容,我花了一整天的时间以多种方式使用此Web服务,但我没有发现任何有关Web服务或其他方面的良好做法。我将向您展示我所做的,但我想了解一些有关Windows服务的提示,谢谢

这是我的密码

服务:

private Timer _worker;
    private readonly int _interval = Convert.ToInt32(ConfigurationManager.AppSettings["timer"]);
    private readonly string _connection = ConfigurationManager.AppSettings["connection"];
    //private readonly Connector _usuarioConnector;
    private readonly Connector _bandaConnector;
    //private readonly Connector _generoConnector;
    private readonly Connector _musicaConnector;
    private SqlConnection conn;

    public Service1()
    {
        //_usuarioConnector = new Connector("UsuarioBase");
        _bandaConnector = new Connector("BandaBase");
        //_generoConnector = new Connector("GeneroBase");
        _musicaConnector = new Connector("MusicaBase");
        InitializeComponent();
    }

    protected override void OnStart(string[] args)
    {
        _worker = new Timer((Update), null, 0, _interval);
    }

    protected override void OnStop()
    {

    }

    private void Update(Object state)
    {
        using (SqlConnection connection = new SqlConnection(
           _connection))
        {
            SqlCommand command = new SqlCommand("insert into Genero(nome, descricao, dtcriacao, criadorid, ativo) values('teste', 'teste', getdate(), 1, 1)", connection);
            command.Connection.Open();
            command.ExecuteNonQuery();
            EventLog.WriteEntry("Query executada", EventLogEntryType.Warning);
        }
    }
加载器

public class Loader
{
    public static List<Usuario> LoadUsuarios(Connector usuarioConnector)
    {
        return (List<Usuario>)Newtonsoft.Json.JsonConvert.DeserializeObject(usuarioConnector.GetData(), typeof(List<Usuario>));
    }
    public static List<Banda> LoadBandas(Connector bandaConnector)
    {
        var bandasDtos = (List<BandaDto>)Newtonsoft.Json.JsonConvert.DeserializeObject(bandaConnector.GetData(), typeof(List<BandaDto>));
        return bandasDtos.Select(dto => dto.ConvertToBanda()).ToList();
    }
    //public static List<Genero> LoadGeneros(Connector generoConnector)
    //{
        //var musicasDtos = (List<MusicaDto>)Newtonsoft.Json.JsonConvert.DeserializeObject(musicaConnector.GetData(), typeof(List<MusicaDto>));
        //return musicasDtos.Select(dto => dto.ConvertToMusica()).ToList();
    //}
    public static List<Musica> LoadMusicas(Connector musicaConnector)
    {
        var musicasDtos = (List<MusicaDto>)Newtonsoft.Json.JsonConvert.DeserializeObject(musicaConnector.GetData(), typeof(List<MusicaDto>));
        return musicasDtos.Select(dto => dto.ConvertToMusica()).ToList();
    }
}
 private string Host { get; }
    private WebRequest _request;
    public WebResponse Response;
    public string ConnectionStatus;
    private Stream _dataStream;
    private StreamReader _reader;

    public Connector(string config)
    {
        Host = ConfigurationManager.AppSettings[config];

    }

    public string GetData()
    {
        StartConnection();
        _dataStream = Response.GetResponseStream();
        _reader = new StreamReader(_dataStream);
        var toReturn = _reader.ReadToEnd();
        EndConnection();
        return toReturn;
    }

    private void StartConnection()
    {
        _request = WebRequest.Create(Host);
        _request.Credentials = CredentialCache.DefaultCredentials;
        Response = _request.GetResponse();
        ConnectionStatus = (((HttpWebResponse)Response).StatusDescription);
    }

    private void EndConnection()
    {
        _reader.Close();
        Response.Close();
    }

Edit1在当前代码中,它正在执行select,但是在我打算执行的操作中将执行inserts

中,我发现,不幸的是计时器不工作,所以我将其更改为线程。

在更新方法中,您正在执行select语句,而不是更新。我知道我正在执行select,当时我正在测试,但好吧,我还是更新了。好吧,那你的问题是什么?很简单,不起作用,我已经编译了好几次,安装和卸载了我的机器,尝试用事件日志进行调试,但是当我打开连接池时,它甚至不执行writeEntry。没有理由在OnStart中创建SqlConnection。只需在更新中创建、打开和关闭。我也会对你的代码进行一些不同的格式化。查看以下MSDN中的CreateCommand示例