+ -
当前位置:首页 → 问答吧 → ODBC访问mysql的问题

ODBC访问mysql的问题

时间:2011-10-03

来源:互联网

小弟写了一个工具用于同步两个视频网站的数据。

程序是保持长期运行的类似服务端程序一样开着不关。。

它会定时从服务器与本地数据对比检查出更新内容并且下载数据以及相关视频文件,截图文件。 待下载完成后插入本地数据库。 用的是ODBC。

现在发现了一个问题。。 首先程序刚启动时, 任务管理器中查看进程占用内存是12M左右, 几个小时后, 便会降为6M左右。。 貌似在这个时候, 如果服务器上再有数据更新时, 则会插入数据库失败。。

我想问的是, TADOConnection对象是不是长时间如果没有使用, 会自动断开连接, 造成插入数据失败。

我找不到原因。
Delphi(Pascal) code

function OpenConnect(Conn: TADOConnection): Boolean;
var
  rs: TADOQuery;
  strConnString: string;
begin
  Result := True;
  strConnString := 'Driver={MySQL ODBC 3.51 Driver};CHARSET=gbk;SERVER=' + DB_SERVER + ';PORT=' + DB_PORT + ';USER=' + DB_USER + ';PASSWORD=' + DB_PASS + ';DATABASE=' + DB_NAME + ';';
  Conn.ConnectionString := strConnString;
  try
    Conn.LoginPrompt := True;
    Conn.Open;
  except
    Result := False;
  end;

  if Conn.Connected then begin
    rs := TADOQuery.Create(nil);
    rs.Connection := Conn;
    rs.SQL.Text := 'SET NAMES gbk;';
    rs.ExecSQL();

    {
    rs.Close();
    rs.SQL.Text := 'SET character_set_client = utf8;';
    rs.ExecSQL();  
    rs.Close();
    rs.SQL.Text := 'SET character_set_connection = utf8;';
    rs.ExecSQL();
    rs.Close();
    rs.SQL.Text := 'SET character_set_database = utf8;';
    rs.ExecSQL();
    rs.Close();
    rs.SQL.Text := 'SET character_set_results = GBK;';
    rs.ExecSQL();    
    rs.Close();
    rs.SQL.Text := 'SET character_set_server = utf8;';
    rs.ExecSQL();
    }

    rs.Close;
    rs.Free;
  end;
end;


我的程序是有一个全局变量 conn: TADOConnection, 在程序启动时直接连接数据库, 成功才继续运行。

另外还有一个问题, 我实在是找不到关于Conn.LoginPrompt这个属性的说明, 网上找到的代码这里都赋值False, 目前我刚刚修改成True在测试。

谢谢各位了。。

作者: TXPlain   发布时间: 2011-10-03

帮助里面搜索“TCustomConnection,LoginPrompt”(不包含引号)

作者: s11ss   发布时间: 2011-10-03

热门下载

更多