Delphi7+ADO+SQL Server 2000应用程序发布的问题。 有几个问题想问一下。1、如何在程序中动态连接不同的数据库呢?2、是否可以在用户电脑上不安装SQL Server而正常运行我的程序呢?如果可以,该如何把程序打包发布呢?多谢! 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 1。可以用下拉框让用户选择数据库服务器代码如下: uses Comobj; procedure TForm1.Button1Click(Sender: TObject); var SQLServer:Variant; ServerList:Variant; i,nServers:integer; sRetValue:String; begin SQLServer := CreateOleObject('SQLDMO.Application'); ServerList:= SQLServer.ListAvailableSQLServers; nServers:=ServerList.Count; for i := 1 to nservers do ListBox1.Items.Add(ServerList.Item(i)); SQLServer:=NULL; serverList:=NULL; end;2。ADO就行了,安装ADO 2.6或以上版本 再问一下,我安装了MDAC2.8,是否还需要去控制面板设置ODBC?如果需要,是否可以通过程序来设置呢?怎么设置呢?给个例子可以吗? 我是初学用SQL Server数据库。我在一台电脑上(没有安装SQL Server)安装了MDAC2.8,去设置ODBC的时候总是说连接不上服务器。是不是用SQL Server的话一定要有一个服务器?不管是本地的还是局域网还是远程Internet上的? 有没有什么办法可以用ADO不通过ODBC连接数据库?我在网上查到是内嵌连接,不知道是怎么回事,有人可以指导一下吗? 我给你写个ADO连接access的例子,数据库文件放在和可执行文件同目录下:在FORMCREATE中加入以下语句就可以了:procedure TfrmMain.FormActivate(Sender: TObject);beginif adoconnection1.Connected =false thenbeginadoconnection1.Close ;adoconnection1.LoginPrompt :=false;//不弹出登录窗口adoconnection1.ConnectionString :='Provider=Microsoft.Jet.OLEDB.4.0;User ID=Admin;Data Source='+extractfilepath(application.ExeName)+'your.mdb;';adoconnection1.Connected :=true;end;以连接SQL为例,现提供以下思路1、在窗口添加一连接,2、将一些参数如服务器名,登录名等参数放在一个INI文件里,直接在软件里从配置文件里去读取3、在窗口建立时直接连接procedure TDataModul1.DataModuleCreate(Sender: TObject);var ConStr, Lpathname:string; pini:Tinifile;begin with AdoCnt do begin connected:=False; pini:=Tinifile.Create(ExtractFilePath(ParamStr(0))+'db.ini');//取得INI文件 ConStr := 'Provider='+Pini.ReadString('Connect','Provider','SQLOLEDB.1'); ConStr := ConStr+';Password=12'; ConStr := ConStr+';Persist Security Info=True;User ID=' +Pini.ReadString('Connect','User ID','sa'); ConStr := ConStr+';Initial Catalog=test10'; ConStr := ConStr+';Data Source='+Pini.ReadString('Connect','Data Source','SqlServer'); ConStr := ConStr+';Use Procedure for Prepare=1;Auto Translate=True;Packet Size=4096;' +'Use Encryption for Data=False;Tag with column collation when possible=False'; Pini.Free; Connectionstring := ConStr; Try Connected:=True; except end; 我的程序其实有两个数据库要求的,一个是数据在客户本地机器上存一份数据,另外还要存一份到我们公司的服务器上。这样是否要在客户的机器上安装SQL Server呢? 有关于COMBOBOX的操作,请兄弟们帮助? 数字问题~ XML文件递归算法 线程的返回值 如何判断一个字段是否是主关键关键字 请问stringgrid能实现隔行选吗,怎么做 有关制作安装程序! Delphi 不能通过 Interface 重指定控件的事件? [有分哦] 怎样讲*.doc转变为*.jpg? delphi中如何把一个webbroker生成的dll在ie中打开? 能否编这样一个程序,开机后,一定要输入正确密码,硬盘才能引导进入操作系统? 如何使用动态数组!!在线等待
代码如下: uses Comobj;
procedure TForm1.Button1Click(Sender: TObject);
var
SQLServer:Variant;
ServerList:Variant;
i,nServers:integer;
sRetValue:String;
begin
SQLServer := CreateOleObject('SQLDMO.Application');
ServerList:= SQLServer.ListAvailableSQLServers;
nServers:=ServerList.Count;
for i := 1 to nservers do
ListBox1.Items.Add(ServerList.Item(i));
SQLServer:=NULL;
serverList:=NULL;
end;2。ADO就行了,安装ADO 2.6或以上版本
在FORMCREATE中加入以下语句就可以了:
procedure TfrmMain.FormActivate(Sender: TObject);
begin
if adoconnection1.Connected =false then
begin
adoconnection1.Close ;
adoconnection1.LoginPrompt :=false;//不弹出登录窗口
adoconnection1.ConnectionString :='Provider=Microsoft.Jet.OLEDB.4.0;User ID=Admin;Data Source='+extractfilepath(application.ExeName)+'your.mdb;';
adoconnection1.Connected :=true;
end;
以连接SQL为例,现提供以下思路
1、在窗口添加一连接,
2、将一些参数如服务器名,登录名等参数放在一个INI文件里,直接在软件里从配置文件里去读取
3、在窗口建立时直接连接
procedure TDataModul1.DataModuleCreate(Sender: TObject);
var ConStr, Lpathname:string;
pini:Tinifile;
begin
with AdoCnt do
begin
connected:=False;
pini:=Tinifile.Create(ExtractFilePath(ParamStr(0))+'db.ini');//取得INI文件
ConStr := 'Provider='+Pini.ReadString('Connect','Provider','SQLOLEDB.1');
ConStr := ConStr+';Password=12';
ConStr := ConStr+';Persist Security Info=True;User ID='
+Pini.ReadString('Connect','User ID','sa');
ConStr := ConStr+';Initial Catalog=test10';
ConStr := ConStr+';Data Source='+Pini.ReadString('Connect','Data Source','SqlServer');
ConStr := ConStr+';Use Procedure for Prepare=1;Auto Translate=True;Packet Size=4096;'
+'Use Encryption for Data=False;Tag with column collation when possible=False';
Pini.Free;
Connectionstring := ConStr;
Try
Connected:=True;
except
end;