D7连接问题数据库的处理方式,欧是新手,请高手给解答下(100)

  • 主题发起人 主题发起人 ksx
  • 开始时间 开始时间
K

ksx

Unregistered / Unconfirmed
GUEST, unregistred user!
在SQL 企业管理器里面检索一个数据表格出现错误提示,运行程序后第一遍能正确提示,按第二遍Btn按钮的时候出现 "连接失败" 的错误提示,请问,我的程序该怎样写?或者控件该怎样配置?程序代码如下:(不是事务本身的错误,是数据有问题,我就是想在程序遇到有错误的数据库时改怎样写,怎样做出正确的提示)unit Unit1;interfaceuses Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, Dialogs, DB, Grids, DBGrids, ADODB, StdCtrls;type TForm1 = class(TForm) Button1: TButton; ADOConnection1: TADOConnection; ADOQuery1: TADOQuery; DBGrid1: TDBGrid; DataSource1: TDataSource; procedure Button1Click(Sender: TObject); private { Private declarations } public { Public declarations } end;var Form1: TForm1;implementation{$R *.dfm}procedure TForm1.Button1Click(Sender: TObject);beginTryADOConnection1.BeginTrans; with ADOQuery1 Do Begin Close; SQL.Clear; SQL.Add('Select sCstCode as 客户编码,sName as 姓名,sAddr as 地址 from pdocstdir where sName like :aa'); Parameters.ParamByName('aa').Value :='王%'; open; End;ADOConnection1.CommitTrans;ExceptADOConnection1.RollbackTrans;Application.MessageBox('数据库故障,请重新测试','问题',64);end;end;end.
 
上面这段代码貌似没错~~控件也不需要设置什么~ADOConnection1的connected设为true~楼主查查是不是其他原因~~
 
把事务的部分去掉。单纯查询的话不用事务
 
If Dataset Server Is Stoped ,this code can't detect any thing. So ,remove the transaction code. Agree upstair 's method.
 
最后没有关闭:with ADOQuery1 Do Begin Close; ... Open; ...Close;end;
 
在窗体运行时(FORM1.FormShow)就连接数据库,以后每按Btn按钮就不用连了,或设一变量,初始为0,连接数据库后为1,每按Btn按钮检查该变量如为1则不用再连
 
单独的查询不需要事务,lz把事务去掉再试试。从代码上看没有什么错误。
 
我运行查询分析器查询表格出的错误提示:服务器: 消息 7987,级别 22,状态 3,行 1在数据库 'Port005' 中检测到一个可能的数据库一致性问题。应该对数据库 'Port005' 运行 DBCC CHECKDB 和 DBCC CHECKCATALOG。连接中断 //只是想对这个问题做过讨论...我是在学习过程中...本身跟事务无太多关系...也不是连接数据库和Close的问题..Close用后会将表格的数据也清空..故障依然...我做了几个测试,都是第一次点击Btn按钮后,提示正常...第二次提示..连接失败..不断的重复此循环
 
换一个数据库测试看看,有时候数据库本身有损坏的。
 
有可能是SQLServer本身有问题,也可能是数据库文件的问题,最好都试一下,把数据库复制到其他的Sqlserver上试试。
 
呀,,,我都说了,,是数据库本身的问题...用查询管理器查询数据库会报错....
 

Similar threads

S
回复
0
查看
3K
SUNSTONE的Delphi笔记
S
S
回复
0
查看
2K
SUNSTONE的Delphi笔记
S
I
回复
0
查看
590
import
I
I
回复
0
查看
579
import
I
后退
顶部