我用delphi7和sql server 2005写一个简单的网络数据库程序,主窗口有一个定时器,客户机每1分钟扫描一次服务器上sql server2005数据库,看看有没有自己新数据,程序启动程序后长时间放置,第一次用户登录时,点用户名下拉栏,里面是空的,并报数据库连接错误,第二次再点,用户名就有了,能正常登录,能进行进一步的数据操作。请教大家这是什么情况?

解决方案 »

  1.   

    你是不是在定时器中写的数据库用名及连接?在FormCreate的时候就初始化连接比较好。
      

  2.   

    你的程序中直接连接数据库,还是DataSnap方式?
     
      

  3.   

    我在建立窗体时进行数据库连接,在定时器内只是用adoquery扫描数据库。
      

  4.   

    1、使用ADO套接字连接数据库;
    2、确定连接上数据库后,才能搜索刷新数据; 
      

  5.   

    已经使用adoconnection连接数据库,用户登录后能进行查询、增加、删除数据库操作,只是长时间开着程序,不去动它,再次使用程序进行用户登录时第一次点用户名下拉栏时会报连接错误并且没有用户名列表,第二次点下拉拦时用户名就有了,能进行正常登录和数据库操作。
      

  6.   

        这种情况,似乎是与连接数据库断了,常理连接数据库后,不会自动断线。sql server 数据库服务启动以后没有异常的话是一直在运行的。MYSQL有小时的限制,到了就自动断开,需要重新连接。需连接都设成的永不过期。
        此外,由于网络不稳定可能导致数据库连接断开。你的数据库与程序在同一机器上,就不存在此问题。如果访问局域网数据库,此类问题,大有可能。
        还有MSSQL服务器程序的问题,也可能出现自动断线问题。需要重新安装MSSQL Server程序。    建议:
    1、找一下是否设置上剖,或是数据库(sql server 2005)自身出现问题,长时间未数据读取,就断线;重装一下SQL Server程序;
    2、建议使用Timer控件设置一个心跳包,几分钟,就连接一下数据, 这样,可以保持长时间连接。 定时检查一下,发现断开了,就重新连接一下!
      

  7.   

    程序中设了一个定时器,每一分钟用adoquery去查询一次数据库,看看是否有自己的数据,并且根据这个adoquery中的select语句是否正常运行,若出错,就用adoconnecttion自动重连数据库。从程序运行情况看,自动重连数据库是运行正常的,没有出现定时器中adoquery运行报错。
      

  8.   

    ADOCONNECTION的KEEPCONNECTION设置为TRUE
    ADOQUERY的PREPARED设置为TRUE
    再试试如果没有ADOCONNECTION的话,加一个去试试