当前位置: 首页 > news >正文

杭州网络科技网站山东汽车行业网站开发

杭州网络科技网站,山东汽车行业网站开发,电商网站大全,自主网站解决方法一#xff1a;异常时关闭连接#xff0c;WinXP#xff0c;win7 32位大部分情况都是起作用的#xff0c;不过在有些windows操作系统下#xff08;如家庭版#xff09;不起作用#xff0c;不知为何#xff1f; try //执行sql操作 except AdoConnection.close;//… 解决方法一异常时关闭连接WinXPwin7 32位大部分情况都是起作用的不过在有些windows操作系统下如家庭版不起作用不知为何   try //执行sql操作 except AdoConnection.close;//出现异常时关闭连接在执行sql语句时会自动打开连接从而实现断线重连 end;     解决方法二ADO控件动态创建独立设置连接字符串为了避免连接不上时界面卡死可以考虑放到线程中执行。 推荐亲测有效 unit untMain;interfaceusesWindows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,IniFiles, ExtCtrls, DB, ADODB,ActiveX;typeTFrmMain class(TForm)Timer2: TTimer; procedure FormClose(Sender: TObject; var Action: TCloseAction); procedure FormShow(Sender: TObject);procedure Timer2Timer(Sender: TObject);private{ Private declarations } public{ Public declarations }procedure getXXData(); end;//ADO连接获取数据线程TAdoThread class(TThread)protectedprocedure execute; override;end; varFrmMain: TFrmMain;ConString: string;{ 初始化临界区CS变量 }CS: TRTLCriticalSection; implementationuses untabout;{$R *.dfm}{ TForm1 }{ 写程序异常日志 } procedure write_error_log(str: string); varF: TextFile;mfile: string; begintry//判断保存日志文件的目录是否存在if not DirectoryExists(ExtractFilePath(ParamStr(0)) log) thenMkDir(ExtractFilePath(ParamStr(0)) log);//按日期及时间设定保存日志的文件名mfile : ExtractFilePath(ParamStr(0)) log\ErrLog_ formatdatetime(yyyy-mm-dd, now) .txt;AssignFile(F,mfile);if not FileExists(mfile) thenRewrite(F);//如果文件不存在则创建一个新的文件并写入Append(F); //追加写入Writeln(F,str);//写入并换行CloseFile(F);exceptend; end; procedure TFrmMain.FormClose(Sender: TObject; var Action: TCloseAction); begin{ 清除线程CS变量 }DeleteCriticalSection(CS);Timer2.Enabled : False;end; procedure TFrmMain.FormShow(Sender: TObject); varclientini: TIniFile; db_server,user,password:string; begin{ 获取ini配置信息}clientini : TIniFile.Create(.\config.ini);tryif clientininil thenbegindb_server : trim(clientini.readString(database,db_server,));user : trim(clientini.readString(database,user,sa));password : trim(clientini.readString(database,password,)); ConString : ProviderSQLOLEDB.1;Persist Security InfoFalse;User IDuser;Passwordpassword;Initial CatalogTestdb;Data Sourcedb_server;end;finallyclientini.Free;end;InitializeCriticalSection(CS);//初始化线程临界区end;procedure TFrmMain.Timer2Timer(Sender: TObject); beginTimer2.Enabled : False;TAdoThread.Create(False); end; procedure TFrmMain.getXXData(); varADOStoredProc1: TADOStoredProc; beginADOStoredProc1 : TADOStoredProc.Create(nil);//动态创建ADO控件trytryADOStoredProc1.ConnectionString : ConString;//采用独立的连接字符串if ADOStoredProc1.Active thenADOStoredProc1.Active : false;ADOStoredProc1.ProcedureName : GetData;ADOStoredProc1.Prepared : false;ADOStoredProc1.Parameters.Refresh;ADOStoredProc1.Prepared : true;ADOStoredProc1.ExecProc;excepton E:Exception dobeginwrite_error_log(FormatDateTime(yyyy-mm-dd hh:nn:ss,Now) 执行getXXData时发生异常!错误原因:E.Message);end;endfinallyADOStoredProc1.Free;end; end;{ TAdoThread } procedure TAdoThread.execute; begininherited;FreeOnTerminate : True; //设置线程执行完成后自动释放{进入线程临界区}EnterCriticalSection(CS);tryCoInitialize(nil); //线程中使用ADO必须调用需Uses ActiveX{读取HIS数据}FrmMain.getHisData(FrmMain.hasCharge);CoUninitialize;finally{ 离开线程临界区 }LeaveCriticalSection(CS);end;FrmMain.Timer2.Enabled : True; end;end.其他解决方法未验证资料来自http://bbs.csdn.net/topics/390958648Win7上ADO连接SQLServer过几十分钟后自动断网(被防火墙拦截等)问题终于解决了困惑了很久今天终于解决了方法很简单和大家共享一下。问题现象ADO连接SQLServer过几十分钟后(有的过几周)数据库连接无缘无故断开再做数据库操作报错“连接失败”。实际上此时数据库服务器可以ping通新创建其他ADO控件连接数据库也没问题。就这个ADO不行了。问题分析刚开始想得比较简单只要创建个线程或者Timer时时判断ADOConnecton1.Active属性false不得了么。但实际上因为后台原因或者服务断开再重连、被防火墙拦截等意外情况发生时ADOConnecton1.Active属性仍然是true无法判断。后来想到用ping如果ping不通那就断开了但是ping通了未必说明数据库就能连通ping无法判断数据库能否连通。那么线程里面不断执行个select GetDate 之类简单SQL如果失败就判断数据库断开行不行呢显然不行多用户同时不断连接数据库对服务器压力太大了不可取。后来网上查了很多材料有人提出捕获OleException的方法既不创建线程和定时器判断数据库是否断开而是当用户执行操作发生Ole异常时捕获它如果是数据库连接错误那么恢复数据库连接即可我在他们代码基础上完善了一下以下是实现代码。控件    Button1: TButton;    ADOConnection1: TADOConnection;    Button2: TButton;    ADOQuery1: TADOQuery;    DataSource1: TDataSource;    DBGrid1: TDBGrid;    ApplicationEvents1: TApplicationEvents;代码  uses ComObj;{$R *.dfm}procedure TForm1.ApplicationEvents1Exception(Sender: TObject; E: Exception);var  I: integer;begin  //请执行如下命令或者其他方法强制产生数据库连接断开情况以触发如下异常。  //net stop MsSqlServer  //net start MsSqlServer  if (E is EOleException) and ((E as EOleException).ErrorCode -2147467259) then  begin    ADOConnection1.Connected : False;    try      ADOConnection1.Connected : True;    except On E2: Exception do    begin      MessageDlg(重连数据库发生错误#13  E2.Message, mtError, [mbOK], 0);    end;    end;  end;end;procedure TForm1.Button1Click(Sender: TObject);var  sSQL: string;begin  sSQL: ProviderSQLOLEDB.1;PasswordYourPassword;Persist Security InfoTrue;     User IDsa;Initial CatalogYourDatabase;Data Source.;  with ADOConnection1 do  begin    LoginPrompt: false;    Connected: false;    ConnectionString: sSQL;    Connected: true;  end;  ShowMessage(ok);end;procedure TForm1.Button2Click(Sender: TObject);begin  with ADOQuery1 do  begin    Close;    SQL.Clear;    SQL.Add(select * from Test);    Open;  end;end;   转载于:https://www.cnblogs.com/tc310/p/5133505.html
http://www.pierceye.com/news/69497/

相关文章:

  • 哪个网站教做公众号个人可以做商城网站吗
  • 免费的海报设计网站企业网站建设服务
  • win7如何安装iis来浏览asp网站商务网站建设实训心得体会
  • 精品手机网站案例东莞市城市建设管理局
  • 网站制作产品资料网络推广包括哪些
  • 北辰网站建设做海报文案的参考网站
  • 手机购物网站源码百度云做网站有优势吗
  • 云南新建设国际小学网站dedecms做的网站_网站中的图片总是被同一ip恶意点击
  • 网站制作报价开网站开发要什么软件
  • 关于网络的网站怎么做做网站建设有哪些公司好
  • 信息门户网站制作新手怎样做网络推广
  • 中国建设银行企业官网站广告公司注册需要什么条件
  • 广南网站建设企业画册设计排版
  • 网站seo报表qq查冻结网站怎么做
  • 上海 食品网站设计做外单网站亚马逊
  • 网站优化方案案例郴州网站seo优化
  • 惠州企业自助建站自适应网站好吗
  • 文化体育局网站建设seo综合查询爱站
  • 怎样做外国石雕产品网站网站建设与制作价格
  • 网页设计心得体会2000字广州制作网站seo
  • 如何找专业的网站建设公司网站建设颜色代码表
  • 做电商海报的网站网站网页设计制作
  • 建设项目环境登记表辽宁省网站北京小企业网站建设
  • 毕业设计团购网站建设crm是什么系统软件
  • 如何跳过网站会员平面设计网站首页
  • 网站建设 中企动力 石家庄网站维护预算
  • 乐云seo商城网站建设公司网站建设推合同
  • 建设网站怎么设置网站页面大小可做百度百科参考资料的网站
  • 江门网站seo推广wordpress有点
  • 给网站做收录较好的软件专注网站搭建的公司