关于ADOConnection的问题(100分)

  • 主题发起人 主题发起人 ywan
  • 开始时间 开始时间
Y

ywan

Unregistered / Unconfirmed
GUEST, unregistred user!
[:D] 小弟在数据库中遇到一个难题:想把数据库文件放在程序路径下,
在ADOConnection建立连接时,根据程序的路径找到数据库并建立
连接,请问有什么办法?最好能给出程序,谢谢!
 
使用udl文件做联接就OK了在adoconnectionr connectstring中选building,然后选udl文件
 
path:=extractfilepath(paramstr(0));
ADOConnection.ConnectionString:=format('Provider=Microsoft.Jet.OLEDB.4.0;
Data Source=%sdb1.mdb;Persist Security Info=False',[path]);
 
先在IDE环境中生成ConnectionString,然后复制到代码中,并在目录那儿用程序路径代替,
在OnFormCreate事件指定给ADOConnection的ConnectionString,然后ADOConnection.Open就可以了
 
我用的是ACCESS数据库!
 
关于YNTW的方法我已用过,不过出现很多错误,(显示很多没有定义之类的东西)
请问要不要建立原生的ADOCONECTION?
 
TO ywan:
不需要用原生的,用一个ADOConnection控件就可以了,你仔细检查一下,这个方法我常用,
没出现什么问题呀
 
动态连接
在OnFormCreate事件
ADOConnection.ConnectionString:='Provider=Microsoft.Jet.OLEDB.4.0;'+
'Data Source='+GetCurrentDir+'db1.mdb';
ADOConnection1.KeepConnection:=true;
 
请问有没有相类似的程序?谢谢!
 
var
Path:Stirng;
begin
Path:=ExtractFileDir(Application.ExeName);
ADOConnection.ConnectionString:='Provider=Microsoft.Jet.OLEDB.4.0;'+
'Data Source='+Path+'/db1.mdb';
ADOConnection.Open;
end;

 
其实,在
'Data Source=db1.mdb';中可以不写路径,将数据库放在执行文件目录中就行了
[:)]
 
请看我的一段源代码吧,或许对你有用的:
adoconnection1.Close ;
adoconnection1.LoginPrompt :=false;
adoconnection1.ConnectionString :='Provider=Microsoft.Jet.OLEDB.4.0;User ID=Admin;Data Source='+extractfilepath(application.ExeName)+'gzsjk.mdb;';
adoconnection1.Connected :=true;
 
把数据库的设置存放到一个配置文件或者放到注册表中;
连接的时候,连接字符串可以根据设置来生成。
 
这里的一段程序是从connectionstring复制的,但最后一句出现的错误我解决不了,
请指点:
procedure TForm4.FormCreate(Sender: TObject);
var
s,path:string;
begin
s:=extractfilepath('companydp');
path:=s+'/companyadb.mdb';
Form1.ADOConnection1.open('Provider=Microsoft.Jet.OLEDB.4.0;'+
'Data Source:=path;'+
'Extended Properties="";'+
'Jet OLEDB:Compact Without Replica Repair=False;'+
'Jet OLEDB:Create System Database=False;'+
'Jet OLEDB:Database Locking Mode=1;'+
'Jet OLEDB:Database Password="";'+

'Jet OLEDB:Encrypt Database=False;'+
'Jet OLEDB:Engine Type=5;'+
'Jet OLEDB:Global Bulk Transactions=1;'+
'Jet OLEDB:Global Partial Bulk Ops=2;'+
'Jet OLEDB:New Database Password="";'+
'Jet OLEDB:Registry Path="";'+
'Jet OLEDB:SFP=False;'+
'Jet OLEDB:System database="";'+
'Locale Identifier=1033;'+
'Mode=share Deny None;'+
'Password="";'+
'Persist Security Info=False;'+
'User ID=Admin;'+
'Jet OLEDB:Don't Copy Locale on Compact=False' [Error] Unit4.pas(83): Unterminated string
);

[Error] Unit4.pas(83): There is no overloaded version of
'Open' that can be called with these arguments
[Error] Unit4.pas(83): Incompatible types
[Error] Unit4.pas(83): Unterminated string

end;
 
碰巧正好写完:)我这样完成的!使用的是sqlserver,access更方便一些!
建议使用adoConnection.connectionstring的build 自动生成连接字,在修改以下程序段!
AppPath := ExtractFilePath(Application.ExeName); { 运行程序路径 }
...
with Dm.qrBuildDBStru do
begin
{建立Tpmis数据库}
Close;
SQL.Clear;
SQL.add('IF EXISTS (SELECT * FROM sysdatabases WHERE name = ''Tpmis'')');
SQL.add('BEGIN');
SQL.add(' DROP database Tpmis');
SQL.add('END;');
SQL.Add('SET DATEFORMAT YMD ');
SQL.Add('create database Tpmis on '); { 设置日期字段格式 }
SQL.Add('primary ');
SQL.Add('(NAME=Tpmis_Data,FILENAME='+''''+AppPath+'DBT/Tpmis_Data.MDF'+''''+',');
SQL.Add('Size=10MB,MAXSIZE=20MB,FILEGROWTH=1MB)');
SQL.Add('LOG ON (NAME=Tpmis_log,Filename='+''''+AppPath+'DBT/Tpmis_log.MDF'+''''+',');
SQL.Add('Size=5MB,MAXSIZE=8MB, FILEGROWTH=2MB)');
Prepared;
execsql;
close;
 
谢谢大家的帮助,只是分数有限,小弟只有说对不起了
 
后退
顶部