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

本文涉及的产品
云数据库 RDS SQL Server,独享型 2核4GB
简介: 使用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


相关实践学习
使用SQL语句管理索引
本次实验主要介绍如何在RDS-SQLServer数据库中,使用SQL语句管理索引。
SQL Server on Linux入门教程
SQL Server数据库一直只提供Windows下的版本。2016年微软宣布推出可运行在Linux系统下的SQL Server数据库,该版本目前还是早期预览版本。本课程主要介绍SQLServer On Linux的基本知识。 相关的阿里云产品:云数据库RDS SQL Server版 RDS SQL Server不仅拥有高可用架构和任意时间点的数据恢复功能,强力支撑各种企业应用,同时也包含了微软的License费用,减少额外支出。 了解产品详情: https://www.aliyun.com/product/rds/sqlserver
相关文章
|
5月前
|
SQL 数据库
SQL Server 连接查询和子查询
SQL Server 连接查询和子查询
95 0
|
26天前
|
SQL 安全 网络安全
IDEA DataGrip连接sqlserver 提示驱动程序无法通过使用安全套接字层(SSL)加密与 SQL Server 建立安全连接的解决方法
IDEA DataGrip连接sqlserver 提示驱动程序无法通过使用安全套接字层(SSL)加密与 SQL Server 建立安全连接的解决方法
63 0
|
3月前
|
SQL 网络协议 Java
【Java+SQL Server】前后端连接小白教程
【Java+SQL Server】前后端连接小白教程
26 0
|
10月前
|
SQL 数据库连接 数据库
数据库——SQL server2008安装与visual basic连接
首先需要检查配置,看看你的SQL server配置管理器中的服务项是否已经全部打开!
|
5月前
|
Kubernetes Cloud Native 数据库
云原生|kubernetes|k8s下部署SQLServer以及Navicat连接SQLServer报错:远程主机强迫关闭了一个现有的连接 错误的解决
云原生|kubernetes|k8s下部署SQLServer以及Navicat连接SQLServer报错:远程主机强迫关闭了一个现有的连接 错误的解决
111 0
|
5月前
|
SQL 安全 网络安全
解决:provider:Named Pipes Provider error:40无法打开SQL Server的连接 的3种方式
解决:provider:Named Pipes Provider error:40无法打开SQL Server的连接 的3种方式
265 0
|
5月前
|
SQL 数据库连接 数据库
VB.NET 中使用SqlConnection类连接到Microsoft SQL Server数据库的详细步骤
VB.NET 中使用SqlConnection类连接到Microsoft SQL Server数据库的详细步骤
107 0
|
6月前
|
关系型数据库 数据库 数据安全/隐私保护
使用脚手架Scaffold-DbContext连接(SqlServer和PostgreSQL)
【代码】使用脚手架Scaffold-DbContext连接(SqlServer和PostgreSQL)
91 0
|
8月前
|
SQL 数据库连接 Shell
python连接SqlServer数据库
要使用Python连接SQL Server数据库,你需要先安装pyodbc库,然后使用它来建立连接。
python连接SqlServer数据库