错误:ORA-00932: 不一致的数据类型: 要求 - 得到的却是 BLOB
源码: StringBuilder strSql = new StringBuilder();
strSql.Append("SELECT UserID FROM Accounts_Users WHERE Password= :Password");
OracleParameter[] parameters = {
new OracleParameter("Password", OracleType.Blob,EncryptedPassword.Length)};
parameters[0].Value = EncryptedPassword;
password 为blob类型。
EncryptedPassword 为byte[]类型.
源码: StringBuilder strSql = new StringBuilder();
strSql.Append("SELECT UserID FROM Accounts_Users WHERE Password= :Password");
OracleParameter[] parameters = {
new OracleParameter("Password", OracleType.Blob,EncryptedPassword.Length)};
parameters[0].Value = EncryptedPassword;
password 为blob类型。
EncryptedPassword 为byte[]类型.
解决方案 »
- 在线等,急急急
- oracle 的 toplevel 怎么用啊
- DBMS_OUTPUT.put与DBMS_OUTPUT.put_line的区别????
- oracle连接外网问题。
- 我在proc中使用了UNION语句,当其中一个SELECT未查出结果时,sqlcode返回SQL_EOS.
- 系统前一小时的时间怎样表示?
- 这个问题怎么解决阿,不能登录了
- 各位老大,哪里有oracle 9i for win200/winnt下载?
- 我都一个星期没有想出来的算法了
- 遇到了一个难题,百思不得其解 ORA-01453错误
- SQL%NOTFOUND是什么?是ORACLE的全局变量吗?
- 可以 \ 如何 把 用户 a的包 f 转向执行 用户 b 的包 f
你可以试试,具体的我也不是很清楚
我在做MD5加密时用到的
MD5加密出来的就是BLOB型,不过我们需要加密后的数据是VARCHAR型
所以需要这样转换下
CREATE OR REPLACE FUNCTION CHINA.MD5(
passwd IN VARCHAR2)
RETURN VARCHAR2
IS
retval varchar2(32);
BEGIN
retval := utl_raw.cast_to_raw(DBMS_OBFUSCATION_TOOLKIT.MD5(INPUT_STRING => passwd)) ;
RETURN retval;
END;这上我C#里用的语句
OracleConnection con = new OracleConnection(Session["oracle_con"].ToString());
con.Open();
string select = "SELECT ID,NM from TBwhere USER_ID='" + UserName + "' and USER_PSWD=md5('" + Password + "')";
OracleDataAdapter da = new OracleDataAdapter(select, con);
DataSet ds = new DataSet();
da.Fill(ds);
CREATE OR REPLACE FUNCTION CHINA.MD5(
passwd IN VARCHAR2)
RETURN VARCHAR2
IS
retval varchar2(32);
BEGIN
retval := utl_raw.cast_to_raw(DBMS_OBFUSCATION_TOOLKIT.MD5(INPUT_STRING => passwd)) ;
RETURN retval;
END;这里面你把utl_raw.cast_to_raw去掉再比较看看(把你页面上的密码代入)