关于IBatisnet 从mssql转为oracle一个问题

liwenmin 2010-08-12 04:50:48
由于之前系统是通过IBatisNet使用mssql数据库,后来客户说想改成为oracle,但转换中出现一个问题:
就是通过传输GUID参数时出现:错误"将参数值从 Guid 转换到 Byte[] 失败",使用mssql时是正常的。
<delete id="bw_Users_Delete" parameterClass="guid">
DELETE FROM bw_Users WHERE [UserId] = #value#
</delete>

一个做法,只能把所有GUID型变量改为string,但这样做法导致系统改动很大,请问有没有更好的方法,谢谢!

小弟第一次使用oracle,请各位大虾看看!以下为详细错误信息:

在 System.Data.OracleClient.OracleParameter.CoerceValue(Object value, MetaType destinationType)
在 System.Data.OracleClient.OracleParameter.SetCoercedValueInternal(Object value, MetaType metaType)
在 System.Data.OracleClient.OracleParameterBinding.PrepareForBind(OracleConnection connection, Int32& offset)
在 System.Data.OracleClient.OracleCommand.Execute(OciStatementHandle statementHandle, CommandBehavior behavior, Boolean needRowid, OciRowidDescriptor& rowidDescriptor, ArrayList& resultParameterOrdinals)
在 System.Data.OracleClient.OracleCommand.ExecuteNonQueryInternal(Boolean needRowid, OciRowidDescriptor& rowidDescriptor)
在 System.Data.OracleClient.OracleCommand.ExecuteNonQuery()
在 IBatisNet.DataMapper.Commands.DbCommandDecorator.System.Data.IDbCommand.ExecuteNonQuery()
在 IBatisNet.DataMapper.MappedStatements.MappedStatement.ExecuteUpdate(ISqlMapSession session, Object parameterObject)
在 IBatisNet.DataMapper.SqlMapper.Update(String statementName, Object parameterObject)
在 Botwave.Extension.IBatisNet.IBatisMapper.Update(String statementId, Object paramValue) 位置 E:\project\DGCM-ITSF-2010\OracleTest\Botwave.Extension.IBatisNet\IBatisMapper.cs:行号 43
在 Botwave.Security.IBatisNet.UserService.UpdateUser(UserInfo item) 位置 E:\project\DGCM-ITSF-2010\OracleTest\Botwave.Security.IBatisNet\UserService.cs:行号 24
在 contrib_security_pages_EditUser.btnEdit_Click(Object sender, EventArgs e) 位置 e:\project\DGCM-ITSF-2010\OracleTest\Web\contrib\security\pages\EditUser.aspx.cs:行号 147
在 System.Web.UI.WebControls.Button.OnClick(EventArgs e)
在 System.Web.UI.WebControls.Button.RaisePostBackEvent(String eventArgument)
在 System.Web.UI.WebControls.Button.System.Web.UI.IPostBackEventHandler.RaisePostBackEvent(String eventArgument)
在 System.Web.UI.Page.RaisePostBackEvent(IPostBackEventHandler sourceControl, String eventArgument)
在 System.Web.UI.Page.RaisePostBackEvent(NameValueCollection postData)
在 System.Web.UI.Page.ProcessRequestMain(Boolean includeStagesBeforeAsyncPoint, Boolean includeStagesAfterAsyncPoint)
...全文
166 4 打赏 收藏 转发到动态 举报
写回复
用AI写文章
4 条回复
切换为时间正序
请发表友善的回复…
发表回复
liwenmin 2010-08-12
  • 打赏
  • 举报
回复
因为我使用是ibatisnet,那么之前的程序实体类字段类型都是以guid来定义,那把在oracle中读取出来的字段直接付值是“GUID 应包含带 4 个短划线的 32 位数(xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx)”的。这个问题又怎么解决呢。。我所问应该是:在.net-ibatisnet-oracle这ibatisnet怎么去满足到guid的转换呢。。谢谢!
刚才接触oracle,所以有太多太多的问题!
liwenmin 2010-08-12
  • 打赏
  • 举报
回复
谢谢!但sys_guid()不是只能得到E3E74EA9DD6E41A79EA7FDEBA9422BA1跟c#中得到的guid:
57CA1A90-7DE1-4047-A5F3-49D122B2880E 怎么去转换呢。
minitoy 2010-08-12
  • 打赏
  • 举报
回复
oracle里guid是用raw(16)存储的
minitoy 2010-08-12
  • 打赏
  • 举报
回复
SQL> 
SQL> CREATE TABLE aaa
2 AS
3 SELECT sys_guid() a FROM dual;

Table created

SQL> desc aaa
Name Type Nullable Default Comments
---- ------- -------- ------- --------
A RAW(16) Y

SQL>

17,082

社区成员

发帖
与我相关
我的任务
社区描述
Oracle开发相关技术讨论
社区管理员
  • 开发
  • Lucifer三思而后行
  • 卖水果的net
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧