紧急求助----怎样连接远程数据库?100分相送!

tdhiger 2003-10-06 12:16:29
本人做一个小数据库软件。BCB+ACCESS

一、现在本地的程序可以运行,可是如果我要打包做成EXE文件的话,如果拿到别的机器上运行时是不是也要进行ODBC数据源的设置?我想是不是可以让程序自动配置,比如自动打开同目录下的数据文件,不用我在BDE里进行设置!

二、如果我想做成一个可以远程访问的,应该怎么做?
假设ACCESS数据库在202.113.13.168上,我在别的机器上运行软件,对数据库进行查询等操作,应该怎么来连接数据库?我在论坛上看到过类似的问题,但是都没有详细的代码,我想应该使用ADO来做,可是我不知道怎么在程序里设置连接数据库。是不是在远程上还要进行数据源的设置?

哪位大哥能不能给个实际例子,来个详细的说明!
不胜感激!问题解决即结贴!
...全文
163 20 打赏 收藏 转发到动态 举报
写回复
用AI写文章
20 条回复
切换为时间正序
请发表友善的回复…
发表回复
tdhiger 2003-10-11
  • 打赏
  • 举报
回复
本地的连接我现在用的ADO,连接没有问题了。也不用设置了。
我现在最想知道的是怎么在bc里连接上远程sql server 2000数据库!
虽然楼上有不少人说了好多方法。
可我对这方面知道得实在是太少,所以连接还是不成功。希望哪位大哥能够详细说一下连接过程。即用BC中的ADO连接远程数据库SQL SERVER2000。

谢谢各位的回答!请继续支持!
tdhiger 2003-10-11
  • 打赏
  • 举报
回复
这位大哥,能不能给我留个联系方式:QQ或者邮箱
我想好好的请教你一下!
关于连接远程SQL SERVER2000的问题!在此先表示感谢!
chifengwatch 2003-10-10
  • 打赏
  • 举报
回复
一、现在本地的程序可以运行,可是如果我要打包做成EXE文件的话,如果拿到别的机器上运行时是不是也要进行ODBC数据源的设置?我想是不是可以让程序自动配置,比如自动打开同目录下的数据文件,不用我在BDE里进行设置!

a、如果你在你的程序里用的是ODBC数据源,那么在别的机器上运行时也要进行ODBC数据源的设置。(建议你用ado连接)
b、可以让程序自动配置(ODBC数据源),我以前实现过,你在注册表里搜索一下你现有的ODBC数据源就会了解个大概了。(至少要写两个键值,具体我记不清了)

二、如果我想做成一个可以远程访问的,应该怎么做?
假设使用ACCESS数据库,我个人认为很不容易实现。
//////////////////////////////////////////////////////////////////////
我在服务器上(win2000 Server)安装了SQL SERVER 2000,我的客户端的操作系统是XP,可是在ADOQUERY里测试时还是连不上,那个SQL SERVER 2000的连接工具是什么呀?

我认为各位说的SQL SERVER 2000的连接工具是SQL SERVER 2000的客户端。

如果我要联结远程数据库,我是不是必须先在本机的ODBC数据源里进行配置,然后才能在c++builder的ADO组件里进行设置?这样才能连接上远程数据库呀?

不用,直接用ado就可以。

//////////////////////////////
另,问一句,你配置的本地ODBC,测试通过了吗?
slhuang 2003-10-10
  • 打赏
  • 举报
回复
以前做过动态的连接。想过一个方法,希望对你有用。可以远程访问。用SQLServer+CB.
为试可以在不同的机器运行。第一次启动数据库是手动,然后调用写入的文件内容做连接字符串。
可以一试。
ADOConnection1->ConnectionString = PromptDataSource(0, ""); //手动连接一次。
FILE* myfile=fopen("slh.txt","w");
AnsiString connstr;
connstr=ADOConnection1->ConnectionString;

fputs(connstr.c_str(),myfile);
fclose(myfile);
//后面的自己搞定了。
heromyth 2003-10-10
  • 打赏
  • 举报
回复
呵呵,这两天我也在想这个问题(因为我习惯了apache+php+mysql这样的组合,所以对如何用bcb访问远端数据库的方式不太习惯)。
大致可行方法:
1.用本地odbc连接远端的SQL数据库服务器(如sql2000),数据库自然放置在服务器了啦。
2.用interbase组件连接远端的interbase服务器(数据库当然也放服务器里,而且interbase也是一个sql服务器)
3.用ado(具体怎么弄,我也在查资料^_^)
huangjuliang 2003-10-10
  • 打赏
  • 举报
回复
你安装SQL 2000 是怎么装的呀?
在安装时不是有选项吗?

这里面不是有连接工具?
gdyt007 2003-10-10
  • 打赏
  • 举报
回复
呵呵!荣少最近*****
哈哈!严重支持啊!
kataboy 2003-10-10
  • 打赏
  • 举报
回复
给大家送上一个好东西!
bool GetConnectionString(String &str,String strFile)
{
String strCon,strPath;
String ServerName,UserName,Password,InitDB;
bool bAuto=false;
TIniFile *pIni=NULL;
strPath=ExtractFilePath(ParamStr(0))+strFile;

try
{
pIni=new TIniFile(strPath);
ServerName=pIni->ReadString ("Database","ServerName","");
UserName=pIni->ReadString ("Database","UserName","");
InitDB=pIni->ReadString ("Database","InitDB","");
Password=pIni->ReadString ("Database","Password","");
bAuto=pIni->ReadBool ("Options","AutoConnected",true);
strCon="Provider=SQLOLEDB.1;Password=" + Password + ";Persist Security Info=True;User ID=" + UserName + ";Initial Catalog=" + InitDB + ";Data Source=" + ServerName;
}
__finally
{
delete pIni;
}
str=strCon;
return bAuto;
}

//---------------------------------------------------------------------------
String SetConnectionString(String ServerName,String UserName,String Password,String InitDB,bool bAuto,String strFile)
{
String strCon,strPath;

TIniFile *pIni=NULL;
strPath=ExtractFilePath(ParamStr(0))+strFile;

try
{
pIni=new TIniFile(strPath);
pIni->WriteString ("Database","ServerName",ServerName);
pIni->WriteString ("Database","UserName",UserName);
pIni->WriteString ("Database","InitDB",InitDB);
pIni->WriteString ("Database","Password",Password);
pIni->WriteBool ("Options","AutoConnected",bAuto);
}
__finally
{
delete pIni;
}

return strCon;
}
这两个函数是通过ini文件来设置连接字符串的。
gdyt007 2003-10-08
  • 打赏
  • 举报
回复
同意huangjuliang(学习,学习,再学习!) 的




huangjuliang 2003-10-08
  • 打赏
  • 举报
回复
这是客户端的问题

假如客户端操作系统是Win XP 或Win 2003 就没有问题了

如果不是Win XP ,那要装SQL Server 2000 的连接工具的!

还有你装的是SQL2000个人版,其它电脑可能是连不上的,这个版本我在其它电脑上没有试

过!应当是不行的!

你装个SQL2000简体中文标准版就可以了!不过这样服务器就要装Win 2000 Server了!
tdhiger 2003-10-08
  • 打赏
  • 举报
回复
我在服务器上安装了SQL2000个人版,然后在别的机器上用ADOQUERY连接。

Provider=SQLOLEDB.1;Password=higer;Persist Security Info=True;User ID=higer;Initial Catalog=pubs;Data Source=202.113.13.168

可是总是连接不上,错误提示为:
“初始化提供者中发生错误,测试连接失败。客户端无法建立连接。”
请问这是怎么回事?
tdhiger 2003-10-08
  • 打赏
  • 举报
回复
客户端工具是什么呀?我怎么找不到?
netying 2003-10-08
  • 打赏
  • 举报
回复
先用客户端工具测试一下看
tdhiger 2003-10-08
  • 打赏
  • 举报
回复
我在服务器上(win2000 Server)安装了SQL SERVER 2000,我的客户端的操作系统是XP,可是在ADOQUERY里测试时还是连不上,那个SQL SERVER 2000的连接工具是什么呀?

如果我要联结远程数据库,我是不是必须先在本机的ODBC数据源里进行配置,然后才能在c++builder的ADO组件里进行设置?这样才能连接上远程数据库呀?

哪位大侠知道具体的过程,请不吝赐教!本人在此感激万分。如果在此不便的话,可以发到我邮箱里:higer@126.com,再次感激!
我不懂电脑 2003-10-06
  • 打赏
  • 举报
回复
建议用ADO做一个配置文件,程序从配置中读连接字符串,动态连接数据库
然后用install打包
「已注销」 2003-10-06
  • 打赏
  • 举报
回复
应该重新配置数据源
huangjuliang 2003-10-06
  • 打赏
  • 举报
回复
用access做数据服务器的话,
这很难办!
huangjuliang 2003-10-06
  • 打赏
  • 举报
回复
实际上你用access做远程数据库,这是很不好的

你最好用SQL Server 2000来作数据库

楼上的代码??hehe !

你也要给他改个IP,user ,password 呀!

现假设你用的数据库为sql server 2000
用户名为user,数据库名为school,password为aaaa ,

ADOQuery1->ConnectionString="Provider=SQLOLEDB.1;Password=aaaa;Persist Security Info=True;User ID=user;Initial Catalog=school;Data Source=202.113.13.168";
xizhouhawk 2003-10-06
  • 打赏
  • 举报
回复
ADOQuery1->ConnectionString="Provider=SQLOLEDB.1;Password=password;Persist Security Info=True;User ID=user;Initial Catalog=school;Data Source=202.116.64.8";

xizhouhawk 2003-10-06
  • 打赏
  • 举报
回复
上面老兄既然你们知道就说详细一点啊,就这么两句别人怎么知道怎么做呢!
我也想知道,学习!
忘高人回答问题的时候还要站在提问题人的角度上,使你提的问题对对方有启发,使对方能按照你的
意见能够向解决问题的方向前进!

1,178

社区成员

发帖
与我相关
我的任务
社区描述
C++ Builder 数据库及相关技术
社区管理员
  • 数据库及相关技术社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧