这段连接数据库的代码为什么运行时出错(编译能通过,运行时出错)

beihua 2006-12-11 09:57:29
这段连接数据库的代码为什么运行时出错,说什么访问被挂起,被隔离(编译能通过,运行时出错)
(1)DataModule
unit dbconn;

interface

uses
SysUtils, Classes, DB, ADODB;

type
TdataModDBConn = class(TDataModule)
connMain: TADOConnection;
procedure DataModuleCreate(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;

var
dataModDBConn: TdataModDBConn;

implementation

{$R *.dfm}

procedure TdataModDBConn.DataModuleCreate(Sender: TObject);
var connString:String;
begin
connString:='Provider=Microsoft.Jet.OLEDB.4.0;Data Source=D:\abc.mdb;Persist Security Info=False';
connMain.ConnectionString:=connString;
connMain.Connected:=true;
end;

end.
(2)主窗体
unit main;

interface

uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, ExtCtrls, StdCtrls, jpeg, ComCtrls, DB, ADODB, dbconn;

type
TfrmMain = class(TForm)
pnlTop: TPanel;
pnlLeft: TPanel;
splMain: TSplitter;
pnlRight: TPanel;
imgBanner: TImage;
scrboxLeftMenu: TScrollBox;
treeVLeftMenu: TTreeView;
dataSetLeftMenu: TADODataSet;
procedure FormClose(Sender: TObject; var Action: TCloseAction);
procedure FormCreate(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;

var
frmMain: TfrmMain;

implementation

{$R *.dfm}

procedure TfrmMain.FormClose(Sender: TObject; var Action: TCloseAction);
begin
frmMain.Free;
frmMain:=nil;
Application.Terminate;
end;

procedure TfrmMain.FormCreate(Sender: TObject);
var leftMenuRootNode:TTreeNode;
var name:String;
begin
dataSetLeftMenu.Connection:=dataModDBConn.connMain;//好像执行到这一句出错
dataSetLeftMenu.CommandText:='select * from menu';
dataSetLeftMenu.Active:=true;

leftMenuRootNode:=treeVLeftMenu.Items.Add(nil,'菜单');
while not dataSetLeftMenu.Eof do
begin
name:=dataSetLeftMenu.FieldValues['name'];
treeVLeftMenu.Items.AddChild(leftMenuRootNode,name);
dataSetLeftMenu.Next;
end;

end;

end.
...全文
107 1 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
1 条回复
切换为时间正序
请发表友善的回复…
发表回复
mdejtod 2006-12-11
  • 打赏
  • 举报
回复
在调用数据窗体的connMain时,你数据窗体都还没创建,地址引用出错~~
在前面添加一句创建窗体的代码就好了.
datamodule1 := tdatamodule1.Create(self);

2,507

社区成员

发帖
与我相关
我的任务
社区描述
Delphi 数据库相关
社区管理员
  • 数据库相关社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧