调用informix出现在的问题
下面是我写的一个关于读取informix数据库存储过程的调用,采用直接执行sql的方法.rolName获取的是中文.在web上执行无效,在数把库端用execute procedure updaterncchildpri_test("武汉") 可以运行.希望遇到同样问题的朋友或高手能给点意见和解决方法.因网上的资料有限,现在急着用,public void ExcuseRole(string roleName,string connectionString)
{
using (OleDbConnection conn = new OleDbConnection(connectionString))
{
string commandString ="string.Format("execute procedure updaterncchildpri_test ('{0}')",roleName);
OleDbCommand cmd = new OleDbCommand(commandString, conn);
//cmd.CommandType = CommandType.StoredProcedure;
//IDataParameter[] parmeter ={ new OleDbParameter(defineName,OleDbType.VarChar,10),
// new OleDbParameter("rval",OleDbType.VarChar,20)};
//parmeter[0].Value = ToInformixValid(roleName);
//cmd.Parameters.Add(parmeter[0]);
//parmeter[1].Direction = ParameterDirection.ReturnValue;
//cmd.Parameters.Add(parmeter[1]);
cmd.ExecuteNonQuery();
}
}
当然我将获取的rolename进行下面的转换也无效
public string ToInformixValid(string str)
{
Encoding e8859Encode = Encoding.GetEncoding("iso-8859-1");
Encoding defEncode = Encoding.Default;
byte[] srcBytes = defEncode.GetBytes(str);
return e8859Encode.GetString(srcBytes);
} --------------------编程问答-------------------- 沉了吗?怎么没人回答
--------------------编程问答-------------------- public string ToInformixValid(string str)
{
Encoding e8859Encode = Encoding.GetEncoding("UTF-8"); Encoding defEncode = Encoding.Default;
byte[] srcBytes = defEncode.GetBytes(str);
return e8859Encode.GetString(srcBytes);
}
这样嘞 --------------------编程问答-------------------- 你这样是原本的编码,没有用的,我那个编码才能用.当然补充一下,我的存储过程有返回值,
create procedure update_test(rolename varchar(255))
returning varchar(255);
define ret varchar(255);
let ret = "update role:" || rolename;
...
let ret = ret || " insert ok.";
end procedure;
补充:.NET技术 , ASP.NET