iBATIS.NET Tips & Tricks(2) : 将image列设置为null值时遇到的Operand type clash异常。

简介:

有时我们需要将图片存储在数据库中,此时可将列的类型设置为image。在对该列进行更新(Insert, Update)时,如果要设置的值为null,可能会有问题,考虑这条语句:

< insert  id ="Category_Insert"  parameterClass ="Category" >
INSERT INTO Categories (CategoryName,Description,Picture)
VALUES (#CategoryName#,#Description#,#Picture#)
</ insert >

如果Category类的Picture属性为null,那么在插入数据会引发异常,其信息为:

Operand type clash: nvarchar is incompatible with image.

奇怪,我什么时候插入nvarchar值的?其原因是,如果没有设置参数的类型,iBATIS会自动解析参数的类型,将具有null值的参数类型设置为varchar,因此引发上述异常,解决办法是显式指定该列的类型。

一是使用内联参数:

< insert  id ="Category_Insert"  parameterClass ="Category" >
INSERT INTO Categories (CategoryName,Description,Picture)
VALUES (#CategoryName#,#Description#,#Picture:image#)
</ insert >

二是使用外部参数:

< insert  id ="Category_Insert"  parameterMap ="Para_Category_Insert" >
    INSERT INTO [Categories] ([CategoryName],[Description],[Picture])
    VALUES (?, ?, ?)
</ insert >

< parameterMap  id ="Para_Category_Insert"  class ="Category" >
    
< parameter  property ="CategoryName"  column ="CategoryName"   />
    
< parameter  property ="Description"  column ="Description"   />
    
< parameter  property ="Picture"  column ="Picture"  dbType="image"   />
</ parameterMap > 

将Picture对应的列指定为image类型,这样就不会有问题了。


本文转自一个程序员的自省博客园博客,原文链接:http://www.cnblogs.com/anderslly/archive/2007/11/02/ibatisnullimage.html,如需转载请自行联系原作者。

目录
相关文章
|
4月前
|
Java
【Azure 事件中心】向Event Hub发送数据异常 : partitionId[null]: Sending messages timed out
【Azure 事件中心】向Event Hub发送数据异常 : partitionId[null]: Sending messages timed out
|
5月前
|
网络协议 Java Apache
【Java】已解决java.net.HttpRetryException异常
【Java】已解决java.net.HttpRetryException异常
121 0
|
5月前
|
网络协议 Java
【Java】已解决java.net.UnknownHostException异常
【Java】已解决java.net.UnknownHostException异常
897 0
|
2月前
|
机器学习/深度学习 编解码 算法
【小样本图像分割-4】nnU-Net: Self-adapting Framework for U-Net-Based Medical Image Segmentation
《nnU-Net: 自适应框架用于基于U-Net的医学图像分割》是一篇2018年的论文,发表在Nature上。该研究提出了一种自适应的医学图像分割框架nnU-Net,能够自动调整模型的超参数以适应不同的数据集。通过2D和3D U-Net及级联U-Net的组合,nnU-Net在10个医学分割数据集上取得了卓越的性能,无需手动调整。该方法强调数据增强、预处理和训练策略等技巧,为医学图像分割提供了一个强大的解决方案。
72 0
【小样本图像分割-4】nnU-Net: Self-adapting Framework for U-Net-Based Medical Image Segmentation
|
4月前
|
缓存 NoSQL Java
【Azure Redis 缓存 Azure Cache For Redis】Redis出现 java.net.SocketTimeoutException: Read timed out 异常
【Azure Redis 缓存 Azure Cache For Redis】Redis出现 java.net.SocketTimeoutException: Read timed out 异常
|
4月前
|
缓存 NoSQL 网络协议
【Azure Redis 缓存】Redisson 连接 Azure Redis出现间歇性 java.net.UnknownHostException 异常
【Azure Redis 缓存】Redisson 连接 Azure Redis出现间歇性 java.net.UnknownHostException 异常
|
4月前
|
NoSQL Java Redis
【Azure Spring Cloud】Java Spring Cloud 应用部署到Azure上后,发现大量的 java.lang.NullPointerException: null at io.lettuce.core.protocol.CommandHandler.writeSingleCommand(CommandHandler.java:426) at ... 异常
【Azure Spring Cloud】Java Spring Cloud 应用部署到Azure上后,发现大量的 java.lang.NullPointerException: null at io.lettuce.core.protocol.CommandHandler.writeSingleCommand(CommandHandler.java:426) at ... 异常
|
4月前
|
开发框架 .NET API
在 ASP.NET Core Web API 中使用异常筛选器捕获和统一处理异常
在 ASP.NET Core Web API 中使用异常筛选器捕获和统一处理异常
|
4月前
|
开发框架 JavaScript .NET
Vue与ASP.NET Core Web Api设置localhost与本地ip地址皆可访问
Vue与ASP.NET Core Web Api设置localhost与本地ip地址皆可访问
42 0
|
5月前
|
网络协议 Java 测试技术
【Java】已解决java.net.BindException异常
【Java】已解决java.net.BindException异常
257 0