我需要对 AS400 上的文件执行基本 SQL(在本例中为插入)。我正在使用运行在 Windows 2008 上的 C# 编写一个胖客户端命令行应用程序。
如果我指定一个库和一个文件如下:
insert into somelibrary.somefile (col1,col2) values val1,val2
然后就可以了。问题是 somelibrary
的值会因用户和环境而异。我想使用库列表 *LIBL,这样它将以正确的顺序获取用户已分配的任何库。如果可能的话,我想避免使用配置文件。
与我一起测试的用户在他的库列表中有包含 somefile
的库。如果我尝试:
insert into somefile (col1,col2...) values val1,val2
我得到一个错误:
ERROR [42S02] [IBM][System i Access ODBC Driver][DB2 for i5/OS]SQL0204 - somefile in username type *FILE not found.
我已经尝试在 SQL 和连接字符串中添加 *LIBL,但找不到文件。我已经尝试了很多组合,以及使用斜杠来分隔库和文件。
如果相关,连接字符串是:
Driver={Client Access ODBC Driver (32-bit)}; System=" + server + "; UID=" + DBUser + "; PWD=" + DBPassword + ";";
用于此请求的库列表是用于验证的用户配置文件的库列表。用户配置文件指向与库列表相关的两个项目:工作描述和初始程序。检查工作描述以查看图书馆列表是什么。可能,它不会有包含 SOMEFILE 的库。这留下了初始程序。如果在初始程序中设置了库列表,则会出现问题,因为初始程序仅在配置文件登录到终端 session 时才执行。
解决这个问题的方法是创建一个用户配置文件和职位描述,其中包含您需要的库列表。
我是一名优秀的程序员,十分优秀!