Windows服务应用程序与SQL服务器数据库交互

时间:2010-12-24 04:40:39

标签: sql-server multithreading windows-services

我有一个Windows服务应用程序,旨在与SQL服务器数据库(INSERT,UPDATE,ETC)进行交互。 Windows服务应用程序也是多线程的。

我创建了一个“App_Data”文件夹来保存我的数据库并使用app.config文件来获取连接信息等。

安装并启动服务后,没有任何反应,数据库不会更新,等等。

有没有人编写过与数据库交互的Windows服务应用程序?请告诉我如何克服这个问题..

由于

2 个答案:

答案 0 :(得分:0)

根据您的描述,您不一定有数据库问题。您需要的是一种调试Windows服务的方法。特别是OnStart。

这是我经常在用C#编写的Windows服务中的OnStart中放入的内容

 protected override void OnStart(string[] args)
     {
        foreach (string arg in args)
        {
            if (arg == "DEBUG_SERVICE")
                    DebugMode();

        }

         #if DEBUG
             DebugMode();
         #endif

         timer.Interval = 1;
         timer.Start();

        }

    private static void DebugMode()
    {

        Debugger.Break();
    }

现在,当您想要调试OnStart时,可以从“服务控制”面板添加“DEBUG_SERVICE”命令参数。否则,您将不得不尝试手动附加调试器,这可能不及时。

还要注意我是如何启动计时器的。这允许单独的线程执行实际工作。这很重要,因为您希望OnStart及时完成。不需要计时器,因为某些Windows服务会响应文件监视器之类的事件,但更常见的情况是,它似乎是人们在Windows服务中执行的间隔轮询。

答案 1 :(得分:0)

据我所知,App_Data文件夹以及指向它的连接字符串仅在ASP.NET Web应用程序和网站中可用 - 在其他类型的Windows应用程序中

我的建议:将SQL Server数据库放在数据库服务器上 - 可以是本地计算机和SQL Server Express数据库 - 并连接到该服务器实例!