单元unit2: (供所有其他单元数据库连接调用的)
DataModule2
ADOConnection1
DataSource1
ADOQuery1单元 unit1: TYPE
DBGrid1: TDBGrid; .....implementation{$R *.dfm}
uses unit2;procedure TForm1.FormCreate(Sender: TObject);
beginunit2.DataModule2.ADOConnection1.ConnectionString := //这里就开始报错了
'Provider=SQLOLEDB.1;
Password=sa;
Persist Security Info=True;
User ID=sa;
Data Source=LGS6715'; unit2.DataModule2.ADOConnection1.Connected := true;
unit2.DataModule2.ADOConnection1.free;
end;
end.------------------------------------------
不知道该怎么写才合理?
我想公共调用UNIT2的资源,实现UNit里代码化配置数据库连接,取数据库记录,并显示在UNIT1中的
datagrid中
DataModule2
ADOConnection1
DataSource1
ADOQuery1单元 unit1: TYPE
DBGrid1: TDBGrid; .....implementation{$R *.dfm}
uses unit2;procedure TForm1.FormCreate(Sender: TObject);
beginunit2.DataModule2.ADOConnection1.ConnectionString := //这里就开始报错了
'Provider=SQLOLEDB.1;
Password=sa;
Persist Security Info=True;
User ID=sa;
Data Source=LGS6715'; unit2.DataModule2.ADOConnection1.Connected := true;
unit2.DataModule2.ADOConnection1.free;
end;
end.------------------------------------------
不知道该怎么写才合理?
我想公共调用UNIT2的资源,实现UNit里代码化配置数据库连接,取数据库记录,并显示在UNIT1中的
datagrid中
unit2;DataModule2.ADOConnection1.ConnectionString := //这里就开始报错了
'Provider=SQLOLEDB.1;
Password=sa;
Persist Security Info=True;
User ID=sa;
Data Source=LGS6715';就行了。 www.coderpub.com
然后unit1和unit2都uses DataModule的单元。然后在unit1或unit2里面需要访问数据库是通过
DataModule2.ADOConnection1.Connected := true;
DataModule2.ADOConnection1.free;
begin
with unit2.DataModule2.AdoConnection1 do
begin
ConnectionString := 'Provider=SQLOLEDB.1; Password=sa; Persist Security Info=True;User ID=sa; Data Source=LGS6715'; //放在一行
Connected := true;
free;
end;
end.
----------------------------------------
....
implementationuses Unit2;{$R *.dfm}procedure TForm1.FormCreate(Sender: TObject);
begin
with unit2.DataModule2.AdoConnection1 do
begin
ConnectionString := 'Provider=SQLOLEDB.1; Password=sa; Persist Security Info=True;User ID=sa; Data Source=LGS6715'; //放在一行
Connected := true;
free;
end;
end;----------------------------------------
报错:
project project_96118.exe raised exception class eaccessviolation with message
'access violation at address 004ae4f4 in moudle 'project_96118.exe',
read of address 00000060',process stopped,use step or run to continue
然后unit1和unit2都uses DataModule的单元。然后在unit1或unit2里面需要访问数据库是通过
DataModule2.ADOConnection1.Connected := true;
DataModule2.ADOConnection1.free;不要unit2.DataModule2.ADOConnection1.Connected := true;
unit2 里就有1个datamoudle
datamoudle里放了 ADOConnection1
DataSource1
ADOQuery1unit1
......implementationuses Unit2;{$R *.dfm}procedure TForm1.FormCreate(Sender: TObject);
begin
with unit2.DataModule2.AdoConnection1 do
begin
ConnectionString := 'Provider=SQLOLEDB.1; Password=sa; Persist Security Info=True;User ID=sa; Data Source=LGS6715'; //放在一行
Connected := true;
free;
end;
end;
其实我就是按照你的意思做的 --------------------------------------datamodule 就是定义在UNIT2 单元里的,(如果定义一个datamodule ,它会自动创建一个单元,我这个UNIT2单元也是这么来的)UNIT2 单元的datamodule 我就放了3个组件:
ADOConnection1
DataSource1
ADOQuery1现在想在UNIT单元运用UNIT2单元的这些部件,实现数据库连接,OK?在UNIT1单元是这么写的:
-----------------------------
......implementationuses Unit2;{$R *.dfm}procedure TForm1.FormCreate(Sender: TObject);
begin
with unit2.DataModule2.AdoConnection1 do //这行就开始报错了
begin
ConnectionString := 'Provider=SQLOLEDB.1; Password=sa; Persist Security Info=True;User ID=sa; Data Source=LGS6715'; //放在一行
Connected := true;
free;
end;
end;
-------------------------------------不知道该怎么解决?送上UNIT2单元代码:
------------------
unit Unit2;interfaceuses
SysUtils, Classes, DB, ADODB;type
TDataModule2 = class(TDataModule)
DataSource1: TDataSource;
ADOQuery1: TADOQuery;
ADOConnection1: TADOConnection; private
{ Private declarations }
public
{ Public declarations }
end;var
DataModule2: TDataModule2;implementation{$R *.dfm}end.