高手请帮忙!一个ADOconnection问题!! 在登陆窗口中连接了一个数据库,现在在另一窗口中想通过一按钮事件改变现在数据库的连接,连接到新的数据库中去,这个事件也成功了,可是当程序退出,再运行时,又会连接到原来那个数据库中,用什么办法能使重新登陆后连接到新的数据库呢? 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 把数据库的连接的字符串保存起来,可以用INI 文件保存,,也可能保存到注册表,,然后下次运行时读取啊,, 你需要把与数据库连接的信息自己记到ini,或文本文件里,每次都都那里读连接信息,更改后同时也更改你的连接信息到ini或文本文件中adoconnection不会记你修改的信息的 procedure Tfrmmain.FormCreate(Sender: TObject);var Reg: TRegistry; ServerName:String; // [数据服务器名] LoginName:String; // [登录用户名] LoginPW:String; // [登录口令] iListCount:integer;begin Reg := TRegistry.Create; try Reg.RootKey := HKEY_CURRENT_USER; //判断该注册表项是否存在 if (Reg.OpenKey('\Software\Microsoft\Windows\CurrentVersion\Ebang 进销存系统V1.0', false))=false then if Reg.OpenKey('\Software\Microsoft\Windows\CurrentVersion', True) then begin //不存在 则新建注册表项 Reg.CreateKey('Ebang 进销存系统V1.0'); Reg.OpenKey('\Software\Microsoft\Windows\CurrentVersion\Ebang 进销存系统V1.0', True); Reg.WriteString('ServerName',''); //初始化 [数据服务器名] 项的值 Reg.WriteString('LoginName','sa'); //初始化 [登录用户名] 项的值 Reg.WriteString('LoginPW',''); //初始化 [登录口令] 项的值 MessageBox(Handle,'你的数据库连接尚未设置好!请用本系统自带的数据库配置工具进行设置!','系统提示',32); application.Terminate; end; //读取 [数据服务器名] 项的值 ServerName:=Trim(Reg.ReadString('ServerName')); //读取 [登录用户名] 项的值 LoginName:=Trim(Reg.ReadString('LoginName')); //读取 [登录口令] 项的值 LoginPW:=Trim(Reg.ReadString('LoginPW')); Reg.CloseKey; finally inherited; end; Reg.Free; try cdata.cconn.Connected:=False; cdata.cconn.ConnectionString:='Provider=SQLOLEDB.1;'+ 'Persist Security Info=False;'+ 'User ID='+Trim(LoginName)+ ';Password='+Trim(LoginPW)+ ';Initial Catalog='+'store'+ ';Data Source='+Trim(ServerName)+''; cdata.cconn.Connected:=True; // ShowMessage('OK'); except MessageBox(Handle,'数据库连接失败!请用本系统自带的数据库配置工具进行设置!','系统提示',32); application.Terminate; self.Free; end; 就是你的数据库的连接是静态的 所以每次打开程序的时候就自动的连接了原来的数据库的 把每次连接的数据库保存到ini是很好的建议的 问题是INI文件应该在哪个页面里创建呢,在事件窗口中的话,那么你登陆窗口一定要有一个默认连接的数据库,到时候怎么把这个去掉呢?不好去掉,重新运行程序后又是默认连接。用什么办法才能行呢? 看看这个代码 烦!菜鸟求SOCKET协议的分解问题 超级小问题,关于database.谢谢 excel导入interbase问题 冲绳岛的妈妈是谁,你知道吗? 大家帮忙啊,郁闷死我了!! 网络存取 高分求救 如何修改一对多的数据库 我怎么才能让clientsocket的onconnect事件自动执行?急!急!急! 关于进度条显示问题 简单的类型转换问题,却一直解决不了,急!!!
var
Reg: TRegistry;
ServerName:String; // [数据服务器名]
LoginName:String; // [登录用户名]
LoginPW:String; // [登录口令]
iListCount:integer;
begin
Reg := TRegistry.Create;
try
Reg.RootKey := HKEY_CURRENT_USER; //判断该注册表项是否存在
if (Reg.OpenKey('\Software\Microsoft\Windows\CurrentVersion\Ebang 进销存系统V1.0', false))=false then
if Reg.OpenKey('\Software\Microsoft\Windows\CurrentVersion', True) then
begin
//不存在 则新建注册表项
Reg.CreateKey('Ebang 进销存系统V1.0');
Reg.OpenKey('\Software\Microsoft\Windows\CurrentVersion\Ebang 进销存系统V1.0', True);
Reg.WriteString('ServerName',''); //初始化 [数据服务器名] 项的值
Reg.WriteString('LoginName','sa'); //初始化 [登录用户名] 项的值
Reg.WriteString('LoginPW',''); //初始化 [登录口令] 项的值
MessageBox(Handle,'你的数据库连接尚未设置好!请用本系统自带的数据库配置工具进行设置!','系统提示',32);
application.Terminate;
end;
//读取 [数据服务器名] 项的值
ServerName:=Trim(Reg.ReadString('ServerName'));
//读取 [登录用户名] 项的值
LoginName:=Trim(Reg.ReadString('LoginName'));
//读取 [登录口令] 项的值
LoginPW:=Trim(Reg.ReadString('LoginPW'));
Reg.CloseKey;
finally
inherited;
end;
Reg.Free; try
cdata.cconn.Connected:=False;
cdata.cconn.ConnectionString:='Provider=SQLOLEDB.1;'+
'Persist Security Info=False;'+
'User ID='+Trim(LoginName)+
';Password='+Trim(LoginPW)+
';Initial Catalog='+'store'+
';Data Source='+Trim(ServerName)+'';
cdata.cconn.Connected:=True;
// ShowMessage('OK');
except
MessageBox(Handle,'数据库连接失败!请用本系统自带的数据库配置工具进行设置!','系统提示',32);
application.Terminate;
self.Free;
end;
用什么办法才能行呢?