关于在.net程序中调用数据库的DTS包
之前我就如何在.net程序中调用数据库的DTS包发表过一篇文章(详细内容见http://www.cnblogs.com/jimmyhsu/archive/2005/03/01/110598.html)。之前老是苦恼程序可以正常执行不报错误,但是DTS包实际上并没有执行。也老找不出错误在哪里,就暂时放下了。
今天灵感一来,心想会不会是因为.net对中文支持不是100%完美导致的。然后我就把注意锁定在程序的以下代码上
结果我将DTS包的名字改为英文DataExportToOracle,同时在数据库里也将名字做相应修改。结果程序可以执行DTS包了。呵呵,开心~~~
其实这个我也是受了SQL语句的启发。比如如果一个字段是Nvarchar类型的,里面保存的是中文字符(我测试的是繁体,不知道简体是否也会有这个问题)的话。
你用下面的语句去查询,将一个也查不到:
select * from tableA where columnA='偸偸愛妳'
而换成下面的语句,将得到预期的结果
select * from tableA where columnA=N'偸偸愛妳'
呵呵,又胡吹了一通,也不知道是否能帮助到大家,这就睡觉去。
今天灵感一来,心想会不会是因为.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();
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'偸偸愛妳'
呵呵,又胡吹了一通,也不知道是否能帮助到大家,这就睡觉去。