Paradox DB:如何以编程方式更改数据库路径
Posted
技术标签:
【中文标题】Paradox DB:如何以编程方式更改数据库路径【英文标题】:Paradox DB: how to change database path programmatically 【发布时间】:2014-07-25 08:31:10 【问题描述】:我想以编程方式更改我的数据库路径。我有一个包含多个表的文件夹,我的用户应该能够从一个数据库更改到另一个数据库。例如:active db: D:\app_db\db1 可以改为 D:\app_db\db2
void change_db(std::string dir)
char c[MAX_PATH]=0;
TStringList *list= new TStringList();
list->Clear();
sprintf(c,"PATH=%s",dir.c_str());
list->Add(c);
Session->ModifyAlias(dbalias,list);
delete list;
Table1->DatabaseName = dbalias;
当我运行上面的例程时,表格仍然包含旧路径!
Table1->Database->Directory = c;
我将目录设置为新目录,但我的应用程序仍使用旧表。
这里有什么问题?
谢谢
【问题讨论】:
【参考方案1】:对于简单的 Paradox 访问,我建议您将TDatabase
组件与TTable
或TQuery
一起使用。不要使用别名。
将TDatabase.DatabaseName
设置为您想要的任何内容。您可以使用此名称将 TTable
和 TQuery
组件链接到 TDatabase 组件。它们对应的 DatabaseName 属性应设置为与TDatabase
组件相同的名称。
将TDatabase.DriverName
设置为STANDARD
。
确保 TDatabase.Connected
设置为 false。
要设置数据库的路径,请使用TDatabase.Params
字符串列表。
首先调用Params上的Clear方法清空列表,然后调用Add方法设置路径。
如果您需要多用户访问,那么您还需要在嵌入式 TDatabase 会话组件上设置一个 netdir。
这就是它在 Delphi 中的样子:
MyDatabase.Close;
MyDatabase.Params.Clear;
MyDatabase.Params.Add('PATH=' + PathToYourDatabase);
// NetFileDir can be the same as the database, but I recommend a different folder.
// Only needed for multiuser access. All users must use the same folder.
MyDatabase.Session.NetFileDir := PathToYourNetFileDir;
MyDatabase.Open;
如果您只需要一个与数据库的连接并且仅从主 UI 线程访问数据库,则无需添加 TSession
组件。 TDatabase 自动在Session
属性中创建一个默认会话组件。
【讨论】:
谢谢,使用 Session 做这个很复杂。我会寻找其他解决方案。 您可以使用 TSession,但这不是必需的。上面的代码具体没有使用TSession。以上是关于Paradox DB:如何以编程方式更改数据库路径的主要内容,如果未能解决你的问题,请参考以下文章
如何以编程方式更改 Android 中的字符串资源 xml 值?
使用 microsoft.jet.oledb.4.0 从 paradox db 过滤日期字段