我要求对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,也在连接字符串中添加* LIBL,但它没有找到该文件。我已经尝试了很多组合,以及使用斜杠来分隔库和文件。
如果相关,则连接字符串为:
Driver={Client Access ODBC Driver (32-bit)}; System=" + server + "; UID=" + DBUser + "; PWD=" + DBPassword + ";";
答案 0 :(得分:1)
用于此请求的库列表是用于进行身份验证的用户配置文件的库列表。用户配置文件指向两个与库列表相关的项目:作业描述和初始程序。检查作业说明以查看库列表的内容。可能它没有包含SOMEFILE的库。这离开了最初的计划。如果在初始程序中设置了库列表,则会出现问题,因为初始程序仅在配置文件登录到终端会话时执行。
解决这个问题的方法是创建一个包含所需库列表的用户配置文件和作业说明。