关于在.net程序中调用数据库的DTS包

之前我就如何在.net程序中调用数据库的DTS包发表过一篇文章(详细内容见http://www.cnblogs.com/jimmyhsu/archive/2005/03/01/110598.html)。之前老是苦恼程序可以正常执行不报错误,但是DTS包实际上并没有执行。也老找不出错误在哪里,就暂时放下了。

今天灵感一来,心想会不会是因为.net对中文支持不是100%完美导致的。然后我就把注意锁定在程序的以下代码上
            string package_name = "导入oracle核心数据库";
            
string DTSCommandText = string.Format(@"/S {0} /U {1} /P {2} /N {3}", server_name, user_name, password, package_name);
            Trace.Warn(DTSCommandText);
            Process myProc 
= new Process();
            myProc.StartInfo.FileName 
= @"dtsrun.exe"
            myProc.StartInfo.Arguments 
= DTSCommandText;
            myProc.StartInfo.CreateNoWindow 
= true;
            myProc.Start();

结果我将DTS包的名字改为英文DataExportToOracle,同时在数据库里也将名字做相应修改。结果程序可以执行DTS包了。呵呵,开心~~~

其实这个我也是受了SQL语句的启发。比如如果一个字段是Nvarchar类型的,里面保存的是中文字符(我测试的是繁体,不知道简体是否也会有这个问题)的话。

你用下面的语句去查询,将一个也查不到:
select * from tableA where columnA='偸偸愛妳'

而换成下面的语句,将得到预期的结果
select * from tableA where columnA=N'偸偸愛妳'

呵呵,又胡吹了一通,也不知道是否能帮助到大家,这就睡觉去。
posted on 2005-04-15 22:47  湘南和也  阅读(1550)  评论(6编辑  收藏  举报