开发者社区> 非常老帅> 正文
阿里云
为了无法计算的价值
打开APP
阿里云APP内打开

使用DBUtils连接Sqlserver插入失败的问题

简介: 使用DBUtils连接Sqlserver插入失败的问题 帅宏军 一、问题描述: 使用DBUtils对数据库Sqlserver进行插入操作时,失败,提示参数“?”不可识别。
+关注继续查看

使用DBUtils连接Sqlserver插入失败的问题

帅宏军

一、问题描述:

使用DBUtils对数据库Sqlserver进行插入操作时,失败,提示参数“?”不可识别。代码如下

		public void insert(Customer customer) {
		String sql = "insert into customer values(?,?,?,?,?,?,?,?,?)";

		Object[] args = { CustomerUtils.getID(), customer.getName(),
				customer.getGender(), customer.getBirthday(),
				customer.getCellphone(), customer.getEmail(),
				customer.getPreference(), customer.getType(),
				customer.getDescription() };
                
		// 在执行这段代码时就出错了
		QueryRunner queryRunner = new QueryRunner(JDBCUtils.getDataSource());

		try {
			queryRunner.update(sql, args);
		} catch (SQLException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}
	}

问题原因发现是sqlserver的jdbc驱动在判断占位符类型的时候有问题;具体的就是获得ParameterMetaData的时候出了问题,这个时候可以用一个knowParaType的参数避免这个问题,就是在创建 QueryRunner的时候,提供一个true参数。


二、解决方法

附上代码

		public void insert(Customer customer) {
		String sql = "insert into customer values(?,?,?,?,?,?,?,?,?)";

		Object[] args = { CustomerUtils.getID(), customer.getName(),
				customer.getGender(), customer.getBirthday(),
				customer.getCellphone(), customer.getEmail(),
				customer.getPreference(), customer.getType(),
				customer.getDescription() };

		//关键是这句加一个参数true
		QueryRunner queryRunner = new QueryRunner(JDBCUtils.getDataSource(),
				true);

		try {
			queryRunner.update(sql, args);
		} catch (SQLException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}
	}


转载请注明出处:http://blog.csdn.net/shuaihj/article/details/15378109


版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。

相关文章
RDS for SQL Serve使用OSS备份文件增量上云示例
今天这篇文章主要给大家分享基于OSS的增量上云到RDS SQL Server的这样一个功能。这个功能主要适用于以下三个场景: 一、用户希望基于备份文件物理迁移上云RDS SQL Server,而不是逻辑迁移。
941 0
SQL SERVER2014的安装
sqlserver2014安装 启动安装程序 下载sqlserver2014,双击startup.exe进行安装   系统配置检查器   使用系统配置检查器,看系统是否符合安装sqlserver2014的所有要求   开始安装 然后点击安装,全新sqlserver独立安装或向现有安装添加功能 ...
1394 0
Config Server——使用Spring Cloud Bus自动刷新配置
前文我们讨论了使用/refresh 端点手动刷新配置,但是如果所有微服务节点的配置都需要手动去刷新的话,那必然是一个繁琐的工作,并且随着系统的不断扩张,会变得越来越难以维护。
1860 0
后台(21)——DBUtils
探索Android软键盘的疑难杂症 深入探讨Android异步精髓Handler 详解Android主流框架不可或缺的基石 站在源码的肩膀上全解Scroller工作机制 Android多分...
898 0
防火墙打开远程连接SQL Server端口
防火墙打开远程连接SQL Server端口   步骤:http://msdn.microsoft.com/en-us/library/ms175043.aspx
738 0
SQL Server BCP使用小结
原文:SQL Server BCP使用小结用法: bcp {dbtable | query} {in | out | queryout | format} 数据文件  [-m 最大错误数]             [-f 格式化文件]         [-e 错误文件]  [-F 首行]      ...
804 0
SQL Server管理员专用连接的使用
原文:SQL Server管理员专用连接的使用   作为一名DBA,经常会处理一些比较棘手的服务无响应问题,鉴于事态的严重性,多数DBA可能直接用“重启”大法,以便尽快的恢复生产环境的正常运转,但是多数情况下我们却无法究其原因,即使产生了dump文件,没有微软的支持,我们同样被蒙在鼓里,幸好微软给我们留了一条“后路”,供我们在SQL服务无法连接时,使用它连接并查看“病因”,那就是DAC, dedicated administrator connection,管理员专用连接。
848 0
使用JDBC连接SQL SERVER 2008
这可能是个很老套的话题,但不管怎么说还是有用的。姑且把配置方法贴出来吧。 装VS2010时,会自带一个SQL SERVER 2008 EXPRESS,这比正式的SQL SERVER 2008版本小多了,本文就以EXPRESS版为例进行说明。
1141 0
SqlServer插入慢的问题解决
这个是我加入的QQ群里面一个网友问的问题。他说一个表做一个INSERT都会超时。正困惑呢,向群里面的人求助。我刚好对这方面知道点,就回答了说要优化聚集索引。他不明白具体该怎么做,似乎也不知道什么是聚集索引。
856 0
+关注
非常老帅
IT行业从业10+年
481
文章
1
问答
文章排行榜
最热
最新
相关电子书
更多
低代码开发师(初级)实战教程
立即下载
阿里巴巴DevOps 最佳实践手册
立即下载
冬季实战营第三期:MySQL数据库进阶实战
立即下载