创建了一个TService Application(Windows服务程序),在服务中加了一个Form,服务也设置成了“允许服务与桌面交互”,我想在Form中能访问SQL数据库,但在Form中放入TADOConnection控件后,服务无法启动,提示服务启动后又停止了。删除静态放入的TADOConnection控件,改为动态创建时,服务可以正常启动,但是TADConnection.Create时程序就不会执行了。这是什么原因呀?服务要怎样才能正确的访问数据库呢?

解决方案 »

  1.   

    动态的一样不会。代码不会执行。现试了一下,数据库控件放置到Data Module中就行了。但是为什么会这样呢?为什么在Form中的数据库控件建立就不行?
      

  2.   

    放在Form当中,是随着服务进程被创建而初始化的。而放到Data Module同样是须用时初始化的(除非出现在Application自动创建对象列表当中)。
      

  3.   

    ADOConnection 的 ConnectionString设置正确吗?
    可以在Form 的 showm 方法中重新设置 
    ConnectionString的值 然后再open控件
      

  4.   

    难道你在formcreate引用 了数据库控件即使执行adoquery.sql.clear这样的语句,背后也会引起数据库的连接动作