当我尝试对用户进行身份验证时,我经常遇到以下错误:
ERROR [HY000] [Informix .NET provider]Inexact character conversion during translation.
public static int IsValidPortalUser(string p_u, string p_p)
{
int ret = 0;
using (IfxConnection conn = new IfxConnection(connectionString))
{
IfxCommand DBCmd = new IfxCommand();
String p = My_Decryption_2(p_p);
try
{
if (conn.State == ConnectionState.Closed)
conn.Open();
DBCmd = new IfxCommand();
DBCmd.Connection = conn;
DBCmd.CommandText = "SELECT nvl(emp_num,0) FROM emp_mas_queue WHERE username = ? AND DECRYPT_CHAR(password, 'XXXXXX') = ? ";
DBCmd.Parameters.Add("user_name", p_u);
DBCmd.Parameters.Add("password", p);
using (IfxDataReader dataReader = DBCmd.ExecuteReader())
{
if (dataReader.Read())
{
if (dataReader[0] != null && !string.IsNullOrEmpty(dataReader[0].ToString()))
{
ret = int.Parse(dataReader[0].ToString());
}
}
dataReader.Close();
}
}
catch (ThreadAbortException e)
{
}
catch (ApplicationException e)
{
}
conn.Close();
return ret;
}
}
答案 0 :(得分:2)
答案 1 :(得分:2)
由于这是stackoverflow中提到此错误的唯一位置,我将添加通过在连接字符串级别指定DB_LOCALE和CLIENT_LOCALE来解决类似问题,确保两者相同且与Database DB_LOCALE相对应。
修改环境变量无效。
我必须说它是在具有以下客户端版本的Windows 10系统上: clientsdk.4.10.TC6DE.WIN