我动态创建了ADoConnection;AdoQuery,DataSource这三个控键,然后从INI文件读入配置文件信息,想通过INI文件连接数据库,以后只要更改INI文件就可以移植整个系统了,但体统总是出错,搞了一天都没解决。现给出程序段,望兄弟们支持: 还有在静态下连接是通过的。 unit U_Public;
type TForm1 = class(TForm) Button1: TButton; DBGrid1: TDBGrid; procedure FormCreate(Sender: TObject); private { Private declarations } public { Public declarations } end;
var Form1: TForm1;
implementation
{$R *.dfm}
procedure TForm1.FormCreate(Sender: TObject); Var DBConnect,DataBaseName,UserName,PassWord:String; Filename,IP:String; Testini:TiniFile; ADoConnection_DB:TADoConnection; AdoQuery_DB:TAdoQuery; DataSource_DB:TDataSource; begin ADOQuery_DB:=TADOQuery.Create(nil); Filename:=ExtractFilePath(paramstr(0))+'DB.ini'; Testini:=TInifile.Create(filename); if Fileexists('DB.ini') then begin UserName:=Testini.ReadString('DBSet','UserName','); //读取INI信息中的用户名 DataBaseName:=Testini.ReadString('DBSet','DataBaseName','); //读取INI信息中的数据库名 IP:=testini.ReadString('DBSet','IP','); //读取INI信息中的 IP //获取连接的字符串 DBConnect:='Provider=SQLOLEDB.1;Password='+Password+';Persist Security Info=True'; DBConnect:=DBConnect+';User ID='+UserName+';Initial Catalog='+DataBaseName+';Data Source='+IP; With ADOConnection_DB Do Begin ConnectionString:='Provider=SQLOLEDB.1;Password=Endo;Persist Security Info=True;User ID=Endo;Initial Catalog=Endo;Data Source=10.0.0.8'; LoginPrompt:=False; Connected:=True; End; With Adoquery_DB Do Begin Connection:=ADoConnection_DB; Active:=True; Close;SQL.Clear;SQL.Add('Select * From Test');Open; End; DataSource_DB.DataSet:=Adoquery_DB; end; end;