Database控件使用中出现的奇怪问题

Xsyntax 2003-08-21 09:43:25
一段使用Database控件连接数据库的代码:

DataModul->Database->Connected = false;
DataModul->Database->Params->Clear();
DataModul->Database->AliasName = m_servername;
DataModul->Database->Params->Add("USER NAME=" + m_username);
DataModul->Database->Params->Add("PASSWORD=" + m_password);
DataModul->Database->Connected = true;

其中m_servername、m_username、m_password从配置文件读取,跟踪发现这三个参数值没有问题。

可执行程序放在一般目录名下连接数据库无问题,但放在带有“)”的目录下(如bin)目录下)则肯定报连接数据库失败,错误发生在"DataModul->Database->Connected = true;"这一句,错误提示如下:

General SQL error. ORA-03114:not connected to ORACLE

目录中带有“)”对BDE连接数据库有什么影响呢?请教应该如何解决该问题。

...全文
51 5 打赏 收藏 转发到动态 举报
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
Xsyntax 2003-08-25
  • 打赏
  • 举报
回复
keiy()老兄正解。
PLsqldev在带')'的目录下连不上数据库,我用pro*c编写的程序在带')'的目录下(windows平台)也连不上数据库。
应该是Oracle的问题,我们正在联系Oracle的工程师。
柯本 2003-08-23
  • 打赏
  • 举报
回复
我试了,是oracle本身的问题:
1 用bcb+bde 错
2 用bcb+ado 错
3 用bcb+odac 错
4 用bcb+oci 错
xizhouhawk 2003-08-23
  • 打赏
  • 举报
回复
可能是')'为转义字符,可能对目录的表示有影响
windlyzhang 2003-08-22
  • 打赏
  • 举报
回复
你先测试一下这三个参数m_servername、m_username、m_password取得是否正确,然后再判断是何错误,你的错误提示是没有找到oracle的服务名,也即使m_servername的值不对!
lanchong781126 2003-08-22
  • 打赏
  • 举报
回复
缺少服务名
DataBaseTool: 简单的数据库查询、修改工具。 最新版本: 1.0.0.7 20190616 如不能正常执行,请运行 Regist.bat 注册必要的组件。 (在win7下可能由于权限的问题无法复制和注册文件到系统目录,解决方法是: 打开‘开始’菜单->‘所有程序’->‘附件’,右键点击‘命令提示符’,选择‘以管理员身份运行’, 启动命令行程序后,转到本程序目录,然后执行Regist.bat) 本程序可用的数据库可以是Access的.mdb文件,.xls文件,.csv文件,.txt文件等 也可用于打开SQL Server数据库和已建立ODBC数据源的其他数据库 若要打开mdb文件、xls文件、csv文件、txt文件,可以点“Browse”按钮定位文件,也可以直接把文件拖到MdbFile列表框。 若要打开SQLServer数据库,则需要在MdbFile输入框输入“sql:ServerName,DataBaseName,UserName,Password”, 其 ServerName 是数据库服务器的名称或IP地址 DataBaseName 是数据库名称 UserName 是用户名称 Password 是用户密码 若要连接其他数据库,可以直接输入数据源的名称(DSN),格式为:“dsn:数据源的名称;uid=用户名;pwd=密码” Field1 和 Field2 是查询条件,所选表格的字段已列出,点选字段名、比较运算符,然后在后面输入条件 支持最多两个查询条件,如果需要更多查询条件或者构造更复杂的条件,请点击 “ExeSQL” 按钮,在那里可以自己输入任何合法的 SQL 命令,程序将帮您执行它! FieldToReplace 及下面两个输入框是用来把数据表某一个字段的特定字符串替换为其他字符串: StrTobeReplace 是需要被替换掉的字符串,StrToReplace 是用来替换的字符串! (不要奇怪为什么会提供如此奇怪的功能!是因为工作需要替换某个表所有记录的某个字段的指定字符串,才写了这个程序,就是说这个功能是写这个程序的初衷!) 如果点选 Order 复选框,则会按照 Field1, Field2, FieldToReplace 的顺序排序,如果 Field1 或者 Field2 已经是 查询条件的一部分,则不参与排序。 如果点选 AutoUpdate 复选框,则在下面表格修改的数据会自动更新到数据库,如果仅修改一个单元格的数据,则修改完后需要按回车键确定才会存入数据库! 如果没有点选 AutoUpdate 复选框,并在表格修改了数据,按“UpDate”按钮也可以把修改的数据更新到数据库(这个不太常用!) 右侧的字段列表是查询时需要显示的列,如果一个也不选或者全选,则都将查询所有字段(即select *) 【常用的】 EXESQL 按钮: 可以直接输入一个简单的SQL命令并执行。 ‘Show queried data’ 选项: 指示所输入的 sql 命令是否会返回数据集,如果勾选,程序会尝试读取返回的数据集,如果不勾选,程序就只是执行命令并尝试返回受影响的行数。 程序会自动判断这个命令是否会返回数据集,如果判断为会返回数据集,比如输入的是一个 类似 select * from 的命令,则自动勾选‘Show queried data’。如果您确定命令会返回数据集但这个选项没有自动勾选,您可以手动勾选, 这样程序就会尝试读取并显示得到的结果。 ‘LongSQL’按钮: 如果您想要输入一个很长很复杂的命令,可以再按‘LongSQL’按钮,会弹出一个可以输入多行文字的新输入窗口,然后就可以在其输入多行命令。 换行: 在这个输入控件,直接按回车就是换行,如果按 Ctrl+回车 则相当于按‘OK’按钮,会立即执行输入的命令。 多个命令: 如果想要一次执行多个命令,比如几百几千行的 insert 命令,可以一次把所有这些命令都复制到 LongSQL 的输入框, 每一命令之间用英文分号';'分隔,然后按 Ctrl+回车 或点击‘OK’按钮执行。 ‘Ignore errors’选项: 如果输入的多行命令可能有些会出错,比如 insert 了重复的数据,并且希望除出错的命令外其他的命令可以正常执行,可以选这个选项, 这样的话,程序会跳过出错的命令并继续执行后面的命令。 数据导出: ‘Export’按钮: 如果想要导出查询或命令的结果,可以在结果显示出来后,按‘Export’按钮,程序会自动启动Excel并把数据导出到Excel;如果电脑上没有 安装Excel,则这个按钮不起作用。 复制数据: 用户可以选择把数据复制到剪贴板上,复制有2种方式: 1) 复制所选行 按住 Ctrl 键并用鼠标点击每行的行首,可以选择多行(所选择的行并不要求相邻),选择完毕后,在所选行上点击鼠标右键选择 ‘Copy’菜单进行复制。 2) 复制所选列 点击需要复制的第一列的列标题,然后按住‘Shift’键再点击需要复制的最后一列的列标题(按列复制时要求这些列必须相邻), 选择完毕后,在所选行上点击鼠标右键选择‘Copy’菜单进行复制。 ‘Copy’菜单有2个,一个是 ‘Copy(Using Tab)’,另一个是‘Copy(Using ',')’, 如果选择‘Copy(Using Tab)’则复制的数据,各字段值之间会用 Tab 分隔, 如果选择‘Copy(Using ',')’则复制的数据,各字段值之间会用英文的逗号分隔。 ================================================================================== 特别的命令: 如果想查看每个表格各有多少数据,可以执行: SELECT $TABLEINFO$ 如果想查看某个表格的字段定义,可以执行: SELECT $FIELDINFO$ where table=TableName,其‘TableName’是您想查看的表格的名称 ================================================================================== 这个程序可以作为临时或不想打开庞大的数据库软件时查看或修改数据的小工具,也可以作为验证sql是否正确的工具! 或者通过在界面上点选查询条件,按 “Find” 按钮,然后再按 “ExeSQL” 按钮,然后把自动生成的sql命令复制出来用到其他地方,即把这个程序作为简便的生成sql命令的工具. win7 或 win10系统下,需要以管理员身份运行 Regist.bat 以注册所需的组件。

1,178

社区成员

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

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