我在本机上做了一个程序,后面是SQL,但这个后台数据库不在本机上,而是安装在另外一台电脑上。
我该如何让我这个程序连接另外那台电脑的SQL上呢?
我该如何让我这个程序连接另外那台电脑的SQL上呢?
解决方案 »
- 将图片从sql server读出,插入到word文档的特定位置
- 急救!窗体打开问题。
- 如何使tstringgrid的标题居中显示?
- 我要实现双面打印
- 请问:用哪个调试工具可以看到另一个正在运行的程序的内容?如:一个输入框
- 预览的时候正常,打印的时候有时只能打印第一页
- 如何查找一个文件夹下的所有文件(包括子文件夹)并把文件名存到一个数组中?(高手进来)
- 自己定义打印预览的窗口的时候,怎样调用这个自己定义的窗口?
- 菜鸟问题:请问如何以独占方式(打开以后拒绝任何其他进程的读写)打开文本文件?
- Delphi7同一网段内从别的电脑硬盘拷贝文件到本机硬盘
- Delphi 的兄弟们,能否帮c++ builder 小弟解决这个问题???[visibroker 中gatekeeper 的用法]
- 请教delete 的键盘码表!
'Provider=Microsoft.Jet.OLEDB.4.0;Password="";' +
'Data Source=' + path +
';Persist Security Info=True';仔细研究一下就知道 连接串中可以写机器网络的名字 也可以是IP地址
------------------------------------------------------------------------------
金盆洗澡 重出江湖 打劫.抢分 掀起一场腥风血雨 戒烟攒钱 只为换新车
你可以这样设置odbc,通过注册表
procedure Tdataset_.Button1Click(Sender: TObject);
var reg:tregistry;
begin
reg:=tregistry.Create;
reg.RootKey:=HKEY_CURRENT_USER;
reg.CloseKey;
if reg.OpenKey('Software\ODBC\ODBC.INI\ODBC Data Sources',true) then
begin
reg.WriteString('databasename','SQL Server');
reg.CloseKey;
end
else
form1.showtext('您没有操作系统的管理员权限');
if reg.OpenKey('Software\ODBC\ODBC.INI\WLXT',true) then
begin
reg.WriteString('Database','WLXT');
reg.WriteString('Driver','C:\WINDOWS\System32\SQLSRV32.dll');
reg.WriteString('LastUser','sa');
reg.WriteString('Server','server name');
form1.showtext('完成!请点击测试进行测试!');
button2.SetFocus;
end
else
form1.showtext('您没有操作系统的管理员权限');
button2.Enabled:=true;
reg.Free;
end;
运行 cmd
ipconfig /all
就可以看到ip乐~
你把服务器的地址改成这个ip肯定没有问题~不过下次登陆网络的时候又要改~比较麻烦
'Provider=SQLOLEDB.1;Persist Security Info=False;User ID=sa;'
------
+'Initial Catalog=anyisys;Data Source=WK1'
-------------- -----
如果是的话,我想很简单,ADOQuery,在静态设置连接字符串时,他会列出你整个局域网内的所有SQL数据库服务器,你只要选择你想要的就行了。
InfoFile:=TIniFile.Create(GetCurrentDir()+'\login.ini');
server:=InfoFile.ReadString('server','server',s);
database:=InfoFile.ReadString('database','database',s);
user:=InfoFile.ReadString('user','user',s);
password:=InfoFile.ReadString('password','password',s);
//////////////////
Produce.ConnectionString:='Provider=SQLOLEDB.1;Persist Security Info=False;'
+'user id='+user+';'
+'Password='+password+';'
+'Initial Catalog='+database+';'
+'Data Source='+server;
produce.Open();
produce.Close();/////////////下面是INI文件////////////
[server]
server=IBMCZJ
[database]
database=AIS20050602140751
[user]
user=sa
[password]
password=
完善: 连接时还要涉及到 SQL Server的端口,默认是1433,但也有可能出现其它的,呵呵,所以嘛,连接时应该还加个端口,会更好点呵呵
procedure TdtmGlobal.conMainBeforeConnect(Sender: TObject);
function GetConnectStr(var ServerExists: boolean): string;
var
ServerMachine, UserID, Password, DBName: string;
begin
ServerMachine := ReadRegString(RootPath, 'Server');
if SameText(ServerMachine, '') then
ServerExists := False
else ServerExists := True;
UserID := ReadRegString(RootPath, 'UserID');
Password := ReadRegString(RootPath, 'Password');
if Password = '' then
Password := ''
else
Password := Mydecrypt(Password, MyKey);
DBName := ReadRegString(RootPath, 'DBName'); Result := 'Provider=SQLOLEDB.1;' +
'Password=' + Password + ';' + 'Persist Security Info=True;' +
'User ID=' + UserID + '; ' + 'Initial Catalog=' + DBName + ';' +
'Data Source=' + ServerMachine;
end;
var
AServerExists: boolean;
ConnectStr: string;
begin
conMain.Connected := False;
ConnectStr := GetConnectStr(AServerExists);
if AServerExists then
begin
conMain.ConnectionString := ConnectStr;
conMain.DefaultDatabase := '';
end;
end;
var
Reg: TRegistry;
begin
Reg := TRegistry.Create;
try
Reg.RootKey := HKEY_CURRENT_USER;
if Reg.OpenKey(KeyPath, True) then
Reg.WriteString(KeyName, KeyValue);
finally
FreeAndNil(Reg);
end;
end;
begin
inherited;
WriteRegString(RootPath, 'Server', edtServer.Text);
WriteRegString(RootPath, 'DBName', edtDBName.Text);
WriteRegString(RootPath, 'UserID', edtUserID.Text);
if edtPassword.Text = '' then
WriteRegString(RootPath, 'Password', '')
else
WriteRegString(RootPath, 'Password', Myencrypt(edtPassword.Text, SoftKey));
accidence
accidence